我目前正在使用Revit Python Shell 2017 ,我希望让他们说"沟通"不同的固定命令 例如,让我说我加载一个房屋模型,然后我通过我之前创建的固定命令在其上创建一些额外的墙。在创建这些墙时,我可以将所有这些新墙ID存储在变量中,作为列表。
现在,如果我想要事后删除这些墙,我想使用我存储在列表中的ID来识别它们,然后删除它们。
如果我在交互式Python Shell会话中,那么" ID列表"变量仍然可以访问(只要我不关闭shell),我可以从中检索ID,然后删除墙。
但是,如果我使用固定命令怎么办?第一个命令是"创建墙壁",第二个命令是"擦除这些墙壁"。但那个" ID列表"变量不存在于第二个固定命令环境中,因此我无法使用它来擦除墙壁。
那么,方法是什么?当然,在这个例子中,我可以使用不同的方法识别第二个命令中的墙,例如要求用户选择它们等等。但我想要的想法是从第一个列出的商店命令" Revit"中的某个地方,并在调用第二个命令时检索它。
我可以将列表写入外部文本文件,并在第二个命令中读取文件......但是有更清洁的方法吗?
对不起这里使用的初学者语言,并希望我的问题足够清楚!有人可以提供帮助;)
最佳,
阿诺。
答案 0 :(得分:1)
这是一个很好的问题Arnaud,过去我做过以下事情:
创建一个文本项目参数,并用XML填充它(是的,您可以在文本参数中使用换行符)。这类似于Ideate BIM Link所做的(检查使用BIM Link的任何项目的项目参数)。这是一种冗长的方法,用于在命令之间保持数据持久性。
我认为第二部分(保存墙ID)比较困难,因为据我所知,每次打开项目时都会重新分配ID。您可以测试一下,看看是否是这种情况?
另一种方法可能涉及在完成选择墙后使用外部命令。你能进一步了解一下你想要实现的目标吗?
答案 1 :(得分:1)
所以
仅留下痕迹,我使用pyRevit及其将数据存储在临时文件中的功能(here,查找“使用临时文件”)解决了此问题。