Hi,
>> Gibt es eine Möglichkeit den Namen eines Befehls erst zur Laufzeit festzulegen?
Zumindest sobald die DLL geladen ist, kannst Du dieses nicht mehr ändern, da hat sich der Speicher und AutoCAD schon Deine Befehlsnamen gekrallt.
>> Gibt es eine Möglichkeit (mit .NET) eine Liste der vorhandenen(und geladenen) Befehle zu erzeugen?
Meinst Du damit alle Befehle in AutoCAD (AutoCAD-eigene, in ARX definierte, in LSP/VLX definierte, in dotNET definierte, ...) oder nur Deine dotNET definierten?
Ersteres wird schwer (ausser es hilft schon die Befehlszeilenausgabe bei Befehl ARX Option BEFEHLE, thx to runkelruebe ), zweiteres (nur Deine) ist mit Reflection möglich, da kannst Du alle Deine Funktionen/Sub's ... durchscannen und auf die Attribute achten, welches als AutoCAD-Befehle deklariert sind.
>> Ich möchte den Namen für einen Befehl erst prüfen und dann entscheiden welchen Namen ich verwenden möchte.
Ich habe ähnliches mal etwas anders gelöst: ich habe nur einen Befehl 'myAppCommand' und dieser fragt nachträglich nach dem eigentlichen Befehlsnamen, das sieht dann so aus:
Befehl: myAppCommand
App-Befehl: myLINE
...und damit kann ich bereits vor dem eigentlichen Befehlsaufruf (in diesem Fall myLINE) bereits Aktionen setzen bzw. Situationsabhängig einen der eigenen Befehle mal zulassen, mal nicht.
Vielleicht hilfts, - alfred -
[EDIT] noch schnell dazu: geladene ARX's bekommst Du mit:
CType(ApplicationServices.Application.AcadApplication, Interop.AcadApplication).ListArx
[/EDIT]
------------------
www.hollaus.at