如何为支持多个活动的 Design Automation API 定义 Revit 应用程序包

问题描述 投票:0回答:1

我想定义一个 Revit 应用程序包,其 DLL 定义多个

IExternalDBApplication
类,每个类都对应于其自己的 Activity。这样,给定活动的工作项将调用相应的
IExternalDBApplication
,但所有活动都将引用同一个应用程序包。

我使用 AutoCAD 引擎做了类似的事情 -> 我将定义一个用

[CommandMethod("CUSTOM_COMMAND_NAME")]
注释的方法,然后在
PackageContents.xml
文件中,我可以通过
<Commands>
标记将命令链接到类,最后在对于 Autodesk Forge 中的活动定义,我们可以使用调用该自定义命令的命令指定
settings.script
字段。

我没有找到使用 Revit 引擎执行此操作的方法,至少从阅读此处的教程来看是这样:https://aps.autodesk.com/en/docs/design-automation/v3/tutorials/revit/ .

有办法做到这一点吗?或者我是否需要为每个我想要创建的 IExternalDBApplication 定义一个单独的应用程序包?谢谢!

autodesk-forge autodesk-designautomation
1个回答
0
投票

就目前而言,Design Automation for Revit 仅承认/识别

<FolderName>.bundle
zip 包中的一个
appbundle
文件夹。反过来,相对于包含
<AddinName>.addin
的文件夹,它只能有一个指向
PackageContents.xml
文件的路径。插件文件又只能加载一个程序集并指定
IExternalDBApplication
的一种实现的完整类名。

考虑到上述限制,您很可能无法创建具有 2 个或更多

IExternalDBApplication
实现的应用程序包,并在不同的活动定义中使用“开关”。

也就是说,您仍然可以通过在工作项有效负载中传递 json 参数,在

IExternalDBApplication
+ 单个活动的单个实现中进行“分支”。然而,只有当两个不同的分支大多相似时,我才会做这样的事情。如果没有,首选是拥有单独的应用程序包和单独的活动定义,并将公共代码提取到两个应用程序包共享的公共 dll 中。

© www.soinside.com 2019 - 2024. All rights reserved.