【问题标题】:Postable Commands from Revit API using Dynamo for Revit(2015)使用 Dynamo for Revit(2015) 从 Revit API 发布可发布命令
【发布时间】:2016-01-30 03:46:16
【问题描述】:

Here's the documentation for the relevant API material

我想要做的是能够从 Dynamo 调用可发布的命令(在这种情况下,我什至无法调试,因为 Autodesk.Revit.UI 的导入子句失败)。我从日志文件中获得了编号 10:05:57.614,但如果我无法导入正确的命名空间,这对我来说意义不大。如果我不导入,那么评估器会告诉我我想要进行的函数调用是未定义的。请帮忙。

这与 Revit 会话在执行 Dynamo 脚本时的状态有关吗?

以及相关的错误信息:

复制+粘贴..

import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *

# Import Element wrapper extension methods
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)

# Import geometry conversion extension methods
clr.ImportExtensions(Revit.GeometryConversion)

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

doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication
app = uiapp.Application

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


import sys
pyt_path = r'C:\Program Files (x86)\IronPython 2.7\Lib'
sys.path.append(pyt_path)
import System
dataEnteringNode = IN



elemType = UnwrapElement(IN[0])

cmdID = System.Enum.Parse(RevitCommandId, "10:05:57.614")


TransactionManager.Instance.EnsureInTransaction(doc)

uiapp.PostCommand("10:05:57.614")

OUT = uSelect
doc.Regenerate()
TransactionManager.Instance.TransactionTaskDone()
#Assign your output to the OUT variable.

【问题讨论】:

    标签: ironpython revit-api


    【解决方案1】:

    这应该可以解决无法导入 RevitAPIUI.dll 的问题:

    import clr
    clr.AddReference('ProtoGeometry')
    from Autodesk.DesignScript.Geometry import *
    
    import sys
    pyt_path = r'C:\Program Files (x86)\IronPython 2.7\Lib'
    sys.path.append(pyt_path)
    import os
    
    # Import DocumentManager and TransactionManager
    clr.AddReference("RevitServices")
    import RevitServices
    from RevitServices.Persistence import DocumentManager
    from RevitServices.Transactions import TransactionManager
    
    doc = DocumentManager.Instance.CurrentDBDocument
    uiapp = DocumentManager.Instance.CurrentUIApplication
    app = uiapp.Application
    
    clr.ClearProfilerData()
    uiPath = r'C:\Program Files\Autodesk\Revit 2016\RevitAPIUI.dll'
    clr.AddReferenceToFileAndPath(uiPath)
    
    from Autodesk.Revit.UI import *
    
    def pickSomething():
        from Autodesk.Revit.UI.Selection import ObjectType
        picked = uiapp.ActiveUIDocument.Selection.PickObject(ObjectType.Element)
        return picked
    
    #Assign your output to the OUT variable.
    OUT = pickSomething()
    

    【讨论】:

      猜你喜欢
      • 2022-07-16
      • 1970-01-01
      • 1970-01-01
      • 2020-04-20
      • 2016-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-07
      相关资源
      最近更新 更多