【发布时间】:2018-06-03 22:23:18
【问题描述】:
我正在尝试使用 RevitPythonshell 在 Revit 的 3D 视图中覆盖墙的图形。我设法使用 Python 节点在 Dynamo 中完成了这项工作。
到目前为止,我有以下代码;
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
clr.AddReference('RevitAPI')
import Autodesk
from Autodesk.Revit.DB import *
clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
from System.Collections.Generic import List
doc = DocumentManager.Instance.CurrentDBDocument
TransactionManager.Instance.EnsureInTransaction(doc)
walls = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Walls)
elements = walls.OfCategory(BuiltInCategory.OST_Walls).WhereElementIsNotElementType()
color = Autodesk.Revit.DB.Color(255,50,50)
ogs = OverrideGraphicSettings().SetProjectionFillColor(color)
for i in elements:
doc.ActiveView.SetElementOverrides((i.Id), ogs)
TransactionManager.Instance.TransactionTaskDone()
当我在 RevitPythonShell 中运行它时,它什么也不做。我没有得到任何错误或任何东西。当我打印doc.ActiveView.SetElementOverrides((i.Id), ogs) 时,它返回无。
我在这里缺少什么?我在 Revit 中的 3D 视图中,这是活动视图。我正在开始和结束交易。
Here 与 Dynamo 节点中 Python 节点中的代码有些相同。
【问题讨论】:
-
doc.ActiveView.SetElementOverrides((i.Id), ogs)返回None是意料之中的——否则应该是什么结果? -
作为调试的第一步,我会打印出
elements变量。也许你没有收集到你期望的元素?
标签: python revit revitpythonshell