QQ咨询 电话咨询
咨询电话:

15359439502

APP下载
下载App
扫码关注
关注微信公众号
返回顶部
当前位置: 首页> BIM资讯> Dynamo论坛

Dynamo,EmlementId的数据类型的参数怎么修改。

发布:Timing 浏览:2260人 分享
发布于:2018-11-01
比如说组类型名称,阶段化,等此类参数在Dynamo中读取出来的数据类型是ElementId,想要修改的时候,总是输入的参数格式不匹配。想要写一个程序进行修改,调用REVIT API中的,Element.ChangeTypeId()函数,写的如下代码总是报错,请大神帮忙看看,是怎么回事。
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *

clr.AddReference("RevitAPIUI")
from Autodesk.Revit.UI import TaskDialog

clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB.Events import *
from Autodesk.Revit.DB import *
from math import *

clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)

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

#自定义函数
#def ...

#全局变量
DOC = DocumentManager.Instance.CurrentDBDocument
UIAPP = DocumentManager.Instance.CurrentUIApplication
UIDOC = UIAPP.ActiveUIDocument
BOPTIONS = Autodesk.Revit.DB.SpatialElementBoundaryOptions()
VER = DOC.Application.VersionName.replace("Autodesk Revit ", "")
LOC = DOC.Application.Language == Autodesk.Revit.ApplicationServices.LanguageType.Chinese_Simplified

#输入变量

#核心程序

#主体代码
object = UnwrapElement(IN[0])
type = UnwrapElement(IN[1])

def ChangeType(object):
TransactionManager.Instance.EnsureInTransaction(DOC)
if isinstance(object,Element):
obj.ChangeTypeId(type.Id)
r = object
else:
r = []
for e in object:
if isinstance(e,Element):
e.ChangeTypeId(type.Id)
r.append(e)
else:
r.append(ChangeType(e))
TransactionManager.Instance.TransactionTaskDone()
return r

OUT = ChangeType(object)

专注BIM行业发展、咨询、教育等问题

查询