【发布时间】:2021-02-09 02:19:41
【问题描述】:
我正在尝试使用 Revit API 中的选定元素 ID 创建一个 python 列表。我尝试在示例结构文件中收集网格的 ID,然后在 Visual Studio Code 中使用此列表。我在 .NET 4.0.30319.42000(64 位)上使用 Revit 2020 和 IronPython 2.7.7 (2.7.7.0)。
当我在 IronPython 中运行代码时,我得到了我想要的 ID 列表,但是如何制作打印的 ID 列表以供在 Visual Studio Code 中进一步使用?
我的代码:
from Autodesk.Revit.DB import *
import clr
import math
clr.AddReference('RevitAPI')
clr.AddReference('RevitAPIUI')
app = __revit__.Application
doc = __revit__.ActiveUIDocument.Document
transaction = Transaction(doc, "Get grids")
transaction.Start()
new_list = DB.FilteredElementCollector(doc) \
.OfCategory(DB.BuiltInCategory.OST_Grids) \
.ToElementIds()
for x in range(len(new_list)):
new_list[x]
print(new_list[x])
transaction.Commit()
【问题讨论】:
-
你对“在 VSCode 中使用这个列表有什么用?”。如果您在 vscode 中有单独的 python 脚本,请查看 python
pickle模块。您可以将此列表写入泡菜文件并将其加载到您的其他脚本中 -
感谢您的快速回答@EhsanIran-Nejad :) 我已经在 VSCode 中编写了代码,并在 Revit 中的 IronPython 中打开了 .py 文件并运行它。我想使用这个元素 ID 列表对元素执行一些操作。我认为将这个列表带回 VSCode 以继续在那里工作会很酷。对我来说,在试验 pickle 模块时只使用 IronPython 中的列表就可以了。你能指导我如何在 Revit 中的 IronPython 中创建和使用这个列表吗?
-
Ehsan 的方向是正确的。一旦你的代码运行完毕,所有的值都会从内存中消失。要持久保存它们并在另一个 python 执行环境中使用它,您需要将值作为文件保存在硬盘中。您可以通过将列表“转储”为 pickle 文件,或使用 json 或 csv 等格式对其进行序列化来做到这一点。搜索如何将 python 列表转储为任何这些格式
-
与您的问题无关:不需要交易,因为您没有修改文档。
标签: ironpython revit-api revitpythonshell