首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >通过Selection.SetElementIds将选定内容修改为第一个元素

通过Selection.SetElementIds将选定内容修改为第一个元素
EN

Stack Overflow用户
提问于 2019-01-23 10:43:12
回答 1查看 2.1K关注 0票数 2

我在编写脚本时遇到了问题,该脚本让med在我的选择中选择第一个元素。这对我很有用,因为我从明细表中选择了正确的风道末端(在该明细表中,我可以看到要使用的类似风量),并使用从选择中创建类似风量的命令。问题是,当选择了多个元素时,此命令不起作用。因此,我想要列表中的第一个对象。这是我正在尝试的代码:

代码语言:javascript
运行
AI代码解释
复制
from Autodesk.Revit.UI.Selection.Selection import SetElementIds
from System.Collections.Generic import List

uidoc = __revit__.ActiveUIDocument
doc = __revit__.ActiveUIDocument.Document
selection = [ doc.GetElement( elId ) for elId in __revit__.ActiveUIDocument.Selection.GetElementIds() ]
sel=[]
for i in selection:
    sel.append(i.Id)
uidoc.Selection.SetElementIds(List[ElementId](sel[0]))

这将返回以下错误消息:

Exception : Microsoft.Scripting.ArgumentTypeException: expected int, got ElementId好的,然后我会试着替换

代码语言:javascript
运行
AI代码解释
复制
uidoc.Selection.SetElementIds(List[ElementId](sel[0]))

使用

代码语言:javascript
运行
AI代码解释
复制
uidoc.Selection.SetElementIds(List[ElementId](sel[0].IntegerValue))

This seems to work, but selection is not modified

我刚刚开始编写RPS脚本,但我希望有人能告诉我,我在这里做错了什么,即使这是非常明显的。

谢谢。基尔雷

编辑:谢谢你,Jeremy,你为我解决了这个问题!诀窍是生成一个列表,而不是python列表。.Add方法是我没有理解的。

如果有人感兴趣,最后的代码:

代码语言:javascript
运行
AI代码解释
复制
from Autodesk.Revit.UI.Selection.Selection import SetElementIds
from System.Collections.Generic import List
from Autodesk.Revit.DB import ElementId
uidoc = __revit__.ActiveUIDocument
doc = __revit__.ActiveUIDocument.Document
selection = [ doc.GetElement( elId ) for elId in __revit__.ActiveUIDocument.Selection.GetElementIds() ]
sel=[]
for i in selection:
    sel.append(i.Id)
ids=List[ElementId](1)
ids.Add(sel[0]) 
uidoc.Selection.SetElementIds(ids)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-24 17:51:17

SetElementIds接受.NET ICollection<ElementId>参数,正如您在Revit API documentation中所看到的那样。

您的语句调用.NET List构造器,该构造器需要一个整数参数来指定要为其分配空间的元素的数量NList[ElementId](N)

sel[0]是一个ElementId,而不是一个整数,这会导致第一个错误。

sel[0].IntegerValue是一个(非常大且半任意的)整数,因此不会导致错误。但是,您仍然将List留空,不填充。

您应该初始化单个元素的List,并添加以下内容:

代码语言:javascript
运行
AI代码解释
复制
ids = List[ElementId](1)
ids.Add(sel[0])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54325392

复制
相关文章
CVPR 2019一篇非常特别的文章
https://www.zhihu.com/question/313967271
AI算法与图像处理
2019/10/15
1.1K0
这是一篇论文级别的VR科普文章
有幸拿到了Pico 3 企业版本和L同学的Oculus Quest 2,在体验之余不妨写一篇杂文来聊聊VR这个看着不新但是又很新的东西。
云深无际
2022/11/29
1.1K0
这是一篇论文级别的VR科普文章
wordpress文章显示同一分类下的上一篇下一篇
  我们在用wordpress开发网站的时候会在文章页中引入上一篇下一篇,但是发现新闻页的上下文章有可能是产品分类的post,这个就不太合理,如何显示同一分类下的上一篇下一篇文章呢?随ytkah一起来看看
ytkah
2019/11/10
9520
节前最后一篇文章,祝大家国庆快乐
本文是 mybatis-xmlreload 项目最新 3.0.5.m3 版本的更新介绍以及使用文档
wayn
2023/09/28
2030
节前最后一篇文章,祝大家国庆快乐
一篇文章搞懂人脸识别的十个概念
人脸技术基本概念介绍 1. 人脸检测   “人脸检测(Face Detection)”是检测出图像中人脸所在位置的一项技术。   人脸检测算法的输入是一张图片,输出是人脸框坐标序列(0个人脸框或1个人脸框或多个人脸框)。一般情况下,输出的人脸坐标框为一个正朝上的正方形,但也有一些人脸检测技术输出的是正朝上的矩形,或者是带旋转方向的矩形。   常见的人脸检测算法基本是一个“扫描”加“判别”的过程,即算法在图像范围内扫描,再逐个判定候选区域是否是人脸的过程。因此人脸检测算法的计算速度会跟图像尺寸、图像内容相
小莹莹
2018/04/24
1.5K1
一篇文章搞懂人脸识别的十个概念
Jekyll x Liquid 控制文章列表只显示特定类别的Post
这个也很简单, 只需要立一个 Flag循环判断是否含有这个 Tag 就行 o(
szhshp
2022/08/15
4810
一篇文章搞懂人脸识别的十个概念
作者:汪铖杰 首发于 腾讯云技术社区 量子位 已获授权编辑发布 优图实验室研究人脸技术多年,不仅在技术方面有很好的积累,而且在公司内外的业务中有众多应用。笔者作为优图实验室人脸研究组的一员,在与产品、商务、工程开发同事交流过程中发现:不管是“从图中找到人脸的位置”,或是“识别出这个人脸对应的身份”,亦或是其他,大家都会把这些不同的人脸技术统称为“人脸识别技术”。 因此,笔者整理了一些常见人脸技术的基本概念,主要用于帮助非基础研究同事对人脸相关技术有一个更深入的了解,方便后续的交流与合作。 人脸技术基本概念介
量子位
2018/03/29
9080
一篇文章搞懂人脸识别的十个概念
一篇文章搞懂人脸识别的十个概念
汪铖杰
2017/06/20
11.1K6
一篇文章搞懂人脸识别的十个概念
一篇文章带你了解Hashtable类
1.Hashtable类描述的是散列表,也称哈希表,它通过映射集合的方式,将一个元素通过其关键字与其存储位置相关联。散列表使用关键字查找元素,而不是使用线性搜索技术来查找元素,从而使查找性能大幅度提升。
Java进阶者
2022/01/18
2950
一篇文章带你了解Hashtable类
一篇文章带你搞懂Python中的类
今天我们要说的是面向对象的核心-----类,类能帮我们把复杂的事情变得有条理,有顺序,希望大家通过学习类能改善自己的编码风格,使代码变得更为好看,更加通俗易懂。
Python进阶者
2021/05/20
3980
一篇文章讲清面向对象的UML类图
从定义上看可能有点抽象,说白了就是一种由图表组成的标准化建模语言,一般我们理解的语言都是由文字组成,而这种统一建模语言是由图表组成的。我们知道开发一个软件系统,不光只有程序员参与,另外还有分析师、设计师、测试人员等等,为了让不同人能够理解交流这个软件系统,就诞生出了这么一套语言。我们说过这个语言是有图表组成的,这里的图表有好几种类型,最常用的有:用例图、类图、序列图、状态图、活动图、组件图和部署图等。由于本文主要讲解类图,其他就不深入了解了,感兴趣的同学可以上网搜索这方面的内容。
lyb-geek
2019/06/20
1.5K0
一篇文章讲清面向对象的UML类图
一篇文章告诉你什么是 Python 元类
. 龟叔发明了 Python,然后集成了一堆概念在这门语言里面,比如:迭代器,装饰器,函数,生成器,类,对象,协程等等。 这些概念对初学者似乎没一个好懂的,不过还有比这更难的概念,它是 Python 世界中的造物主,虽然我们很少去直接使用它,但天天都在用,它就是今天的主角------元类。 今天我的任务就是彻底明白什么是元类,看懂了别忘了给我点个赞,分享给更多人。 要搞懂元类,我们还是先从对象说起。 对象(Object) Python 一切皆对象,这句话你一定有听说过(现在你就听说了),一个数字是对象,
企鹅号小编
2018/02/02
5870
一篇文章告诉你什么是 Python 元类
一篇文章带你了解Hashtable类中的方法
Hashtable类描述的是散列表,也称哈希表,它通过映射集合的方式,将一个元素通过其关键字与其存储位置相关联。散列表使用关键字查找元素,而不是使用线性搜索技术来查找元素,从而使查找性能大幅度提升。
Java进阶者
2022/01/18
2200
一篇文章带你了解Hashtable类中的方法
一篇文章掌握lambda,function下41个类
Java8 发布以来,lambda 表达式简化了代码,增强了阅读性,代码更加简洁。lambda 主要是给Java增加了函数式编程的方式。lambda表达式的实现就是functionInterface。
香菜聊游戏
2021/05/26
4310
一篇文章掌握lambda,function下41个类
一篇文章带你搞定StringBuffer类和常用方法
1.我们知道字符串是常量,一旦被创建后,它的内容和长度值是不能够改变的,当需要对一个字符串进行修改,只可以再创建,这样就有点麻烦,可以使用StringBuffer类来解决这个问题,修改它的内容和长度。它是一个容器,可以添加和删除,此时不会产生新的StringBuffer对象。
Java进阶者
2021/03/25
6170
宋宝华:递归的出口在哪里? (除夕创作年度最后一篇文章)
迭代的是人,递归的是神。递归的出口,在于停止递归。当递归函数在某条件成立后不再调用自身,即意味着递归会终止。
Linux阅码场
2019/10/08
6580
宋宝华:递归的出口在哪里? (除夕创作年度最后一篇文章)
一篇文章带你了解CSS Pseudo-classes(伪类 )
CSS伪类选择器根据其他条件匹配组件,而不一定由文档树定义。CSS 伪类 是添加到选择器的关键字,指定要选择的元素的特殊状态。
前端进阶者
2021/01/22
2K0
Wordpress显示所有文章
使用下面loop只能展示当前分类下的文章 <?php if(have_posts()): ?> <?php while(have_posts()):the_
切图仔
2022/09/14
7450
typecho文章倒序显示
最近在处理一个主题的时候刚好需要实现一下让博客首页文章目录把最新增加的文章放到最下面,所以查看了一下代码。 很明显,在输出文章时,有一个DESC,将他改为ASC即可 操作 找到/var/Widget/Archive.php文件中的 /** 仅输出文章 */ $this->_countSql = clone $select; $select->order('table.contents.created', Typecho_Db::SORT_DESC) ->page($this->_currentPage,
乐心湖
2020/07/31
1.4K0
点击加载更多

相似问题

任务计划程序未在windows xp中运行。

11

对于未在计划任务中工作的文件

19

.BAT文件未在任务计划程序中运行

20

Python脚本未在任务计划程序中运行

12

未在windows中触发计划任务

16
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文