我想创建Revit插件,并且命令类将是通用的

时间:2016-03-22 10:33:44

标签: c# revit-api revit

[Transaction(TransactionMode.Manual)]
    public class InteropCommand<T, V> : IExternalCommand
    {
        public Result Execute( ExternalCommandData commandData, ref string message,
                               ElementSet elements )
        {
             InterfaceDialog<T, V> interfaceDlgBox = new InterfaceDialog<T, V>( (IDocumentationModel<T>)Revit2014Model );

        }
}

command.cs文件如上所示。如果我写课 类InteropCommand然后我需要相应地更改.Addin文件,否则命令将无法正常工作。现在我有一个问题,我怎么能以这样的方式编写一个命令类,它将加载Revit addin命令。在当前情况下,我无法加载Revit命令。

我的.Addin文件如下所示。你知道如何解决这类问题吗?

<RevitAddIns>
  <AddIn Type="Command">
    <Text>Test</Text>
    <Description>Test Command</Description>
    <Assembly>test.dll</Assembly>
    <FullClassName>InteropCommand</FullClassName>
    <ClientId>0072bf73-c900-449b-bce2-e50a899a72ae</ClientId>
    <VendorId>XYZ</VendorId>
    <VendorDescription>XYZ</VendorDescription>
  </AddIn>
</RevitAddIns>

2 个答案:

答案 0 :(得分:0)

您需要为每个命令实现一个单独的类。

您可以从单个基类派生所有外部命令实现类以共享部分实现,或者从每个单独的外部命令实现类'Execute方法调用泛型类。

答案 1 :(得分:0)

添加到Jeremy's reply,您可以拥有一个实现IExternalApplication的类,然后在OnStartup方法上,可以动态创建任意数量的IExternalCommands,而无需更改.addin文件。

如上所述,每个命令仍然需要一个类。