2016-03-22 4 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

Для каждой команды необходимо реализовать отдельный класс.

Вы можете получить все свои классы реализации внешних команд из одного базового класса, чтобы разделить часть реализации, или вызвать общий класс из каждого отдельного класса реализации внешней команды «Выполнить метод».

0

Jeremy's reply, вы можете иметь класс, который реализует IExternalApplication, а затем метод OnStartup, создать столько же IExternalCommands, сколько хотите, на лету, не меняя файл .addin.

Это все еще требует одного класса для каждой команды, как уже упоминалось.