本文转自
这可以说是在Dynamo中用RevitAPI的最最好的一篇文章,首先谢谢作者的翻译!!!
输入变量
在0.7版本之后的Dynamo中,Python脚本的节点可接受的变量数目是可变的。在0.6以前的旧版本中,每个输入值都要设定一个变量。而在新版本中,多个输入值被打包进一个名叫IN的列表变量中。你可以通过索引值来获取给列表中的每个输入值,例如使用IN[0]访问第一个输入值,使用IN[1]访问第二个输入值,以此类推。
可以利用以下代码查询输入值的个数,利用循环函数便可遍历每个输入值:
count = 0
for number in IN:
count += number
OUT = count
RevitAPI
为了方便Dynamo更好地调用RevitAPI,我们编写了一个完整的库来与Revit交互。
Document and Application
Revit文档可通过Dynamo库中的DocumentManager类访问:
import clr
引用DocumentManager
clr.AddReference(“RevitServices”)
import RevitServices
from RevitServices.Persistence import DocumentManager
doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application
元素
Dynamo中的元素都是由Revit封装的。在Python脚本中,你可以通过调用Revit.Elements命名空间中的类来对它们进行操作。
import clr
引用RevitNodes
clr.AddReference(“RevitNodes”)
import Revit
使用 ‘from Revit.Elements import *’来引用Revit.Elements中需要的类
from Revit.Elements import CurveByPoints, ReferencePoint
import System
startRefPt = IN[0]
endRefPt = IN[1]
refPtArray = System.Array[ReferencePoint]([startRefPt, endRefPt])
OUT = CurveByPoints.ByReferencePoints(refPtArray)
如果你希望直接使用RevitAPI,则需要在使用之前对元素进行解封。使用TransactionManager类来使你的操作是在Rev