找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

使用新浪微博登录

一号多站,快速登录

比如说组类型名称,阶段化,等此类参数在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)

本帖的地址:http://www.chinarevit.com/revit-48579-1-1.html
本文若有侵犯你的版权,请联系我们,我们会在24小时内删除!

Revit中文网 Chinarevit.com

Revit中文网创建于2013年,原名中国Revit论坛,目前注册会员超过25万人,是国内知名的BIM软件交流平台,目前最早一批会员已经成为中国建筑行业的中坚力量。BIM网校为Revit中文网旗下在线教学平台,BIM网校目前报名人数已经突破10000人,学员遍布大陆、香港、台湾、美国、日本、德国等十几个国家和地区。