2016-03-22 5 views
0
[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コマンドをロードできません。Revit Pluginを作成したいのですが、コマンドクラスは汎用です

私の.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> 

答えて

0

コマンドごとに個別のクラスを実装する必要があります。

すべての外部コマンド実装クラスを単一の基本クラスから派生させて、実装の一部を共有したり、個々の外部コマンド実装クラスのExecuteメソッドから汎用クラスを呼び出すことができます。

0

Jeremy's replyに追加すると、IExternalApplicationを実装するクラスを作成し、OnStartupメソッドで.addinファイルを変更せずに、必要なだけ多くのIExternalCommandsを作成できます。

これは、すでに説明したように、コマンドごとに1つのクラスを必要とします。

関連する問題