Dynamo For Revit: 如何移动一个element

Dynamo提供的nodes里面,没有可以直接移动某个 element 的。 那么我们就通过Python Script 来手动写一个。

整体代码

import clr

# Import RevitAPI
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *

# Import DocumentManager and TransactionManager
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager


#The inputs to this node will be stored as a list in the IN variable.
doc =  DocumentManager.Instance.CurrentDBDocument
app =  DocumentManager.Instance.CurrentUIApplication.Application

dataEnteringNode = IN
elementId = IN[0].Id

TransactionManager.Instance.EnsureInTransaction(doc)
ElementTransformUtils.MoveElement(doc,ElementId(elementId),XYZ(IN[1],IN[2],0))
TransactionManager.Instance.TransactionTaskDone()

# Assign your output to the OUT variable.
OUT = 0

关键代码

引用 Revit API

# Import RevitAPI
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *

得到 Revit 的 doc 和 app

# Import DocumentManager and TransactionManager
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager


#The inputs to this node will be stored as a list in the IN variable.
doc =  DocumentManager.Instance.CurrentDBDocument
app =  DocumentManager.Instance.CurrentUIApplication.Application

执行移动操作

  1. 启动transaction
  2. 执行移动的命令
  3. 结束transaction
TransactionManager.Instance.EnsureInTransaction(doc)
ElementTransformUtils.MoveElement(doc,ElementId(elementId),XYZ(IN[1],IN[2],0))
TransactionManager.Instance.TransactionTaskDone()

节点图

Dynamo For Revit: 如何移动一个element_第1张图片

功能

可以自己选择想要移动的构件,设置移动的 X,Y 方向的距离,建议手动运行。

你可能感兴趣的:(Dynamo,For,Revit,Revit,API,Dynamo,For,Revit,Revit,API,Python)