我正在尝试使用 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 视图中,这是活动视图。我正在开始和结束交易。
这是 Dynamo 节点中 Python 节点中的代码有些相同。