找回密碼
 立即注冊

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.qeuwhu.tw/revit-48579-1-1.html
本文若有侵犯你的版權,請聯系我們,我們會在24小時內刪除!

Revit中文網 Chinarevit.com

Revit中文網創建于2013年,原名中國Revit論壇,目前注冊會員超過25萬人,是國內知名的BIM軟件交流平臺,目前最早一批會員已經成為中國建筑行業的中堅力量。BIM網校為Revit中文網旗下在線教學平臺,BIM網校目前報名人數已經突破10000人,學員遍布大陸、香港、臺灣、美國、日本、德國等十幾個國家和地區。
31选7开奖中奖规则