In Lisp gibt es zwei Welten
(toll ist das beide praktisch problemlos vermischt werden dürfen)vl-vbarun startet ein Makro eines geladenen VBAProjektes in der aktuellen Applikation (deinem Acad was du aktuell vor Augen hast)
http://help.autodesk.com/view/ACD/2018/ENU/?guid=GUID-75387617-9144-49CB-97E4-03B4CD29973B
vla-RunMacro ist für das ActiveX gedacht, man übergibt der Funktion das Objekt der Applikation in der es ausgeführt werden soll
und die Information aus welchem (geladenen) Projektes es ein Makro starten soll.
https://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/2016/ENU/AutoCAD-ActiveX/files/GUID-638E14CA-798C-42BC-8F2B-5E9D6952C707-htm.html
-
Deine Anfrage drehte sich ja sicher nur um das "Wie definiere ich einen AutoCAD-Befehlsaufruf"
wenn man die Funktion also nicht über einen Button starten möchte oder sich das getippe von
-vbarun Hilfslinie
sparen möchte.
Dann muß man wirklich nur wissen
(defun c:MEINBEFEHL (/) (vl-vbarun "Befehle.dvb!Modul1.Hilfslinie")(princ))
Das princ unterdrückt eine Rückgabe in der Befehlszeile, teste einmal mit und einmal ohne..
Schau vorher ob der Befehlsname nicht bereits belegt ist.
Jetzt ergänze deine Funktion um die Prüfung ob der Layer existiert,
falls nicht lasse den Layer erstellen.
Prüfe ob der Layer gefroren ist, falls ja - taue diesen.
Auch eine Prüfung ob der Layer EINgeschaltet ist wäre hier sinnvoll um den User zu "warnen",
oder den Layer automatisch ein zu schalten.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP