| | |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| | |
 | 2D- und 3D-Bauvisionen in der Revit Weiterbildung mit IHK-Zertifizierung , ein Kurs (bis zu 100% förderbar mit Bildungsgutschein)
|
|
Autor
|
Thema: VBA Befehl per Lisp Öffnen (1401 / mal gelesen)
|
David F. 26 Mitglied

 Beiträge: 20 Registriert: 03.05.2018 AUTOCAD 2018
|
erstellt am: 03. Mai. 2018 09:23 <-- editieren / zitieren --> Unities abgeben:         
Guten Tag liebe Leute, ich habe mich hier im Forum schon durchgeklickt und keine für mich funktionelle Lösung gefunden also sorry falls ich das Thema nochmal in einem Extra Beitrag schreibe. Ich möchte in VBA geschriebene Befehle ganz einfach per Autocadbefehl aufrufen. Jetzt bin ich soweit, dass man das anscheinend über LISP machen "muss". Also habe ich folgendes in eine LISP-Datei geschrieben: (defun c:HL (/) (vla-runmacro "Befehle.dvb!Modul1.Hilfslinie")
- Wenn ich das richtig verstanden habe sollte "HL" der Befehl sein welchen ich dann in AutoCAD eingebe. - "Befehle.dvb!Modul1.Hilfslinie" Ist die Datei dann das Modul und zum Schluss das Makro. Diese dvb Datei habe ich über APPLOAD geladen. Genauso wie die LISP
Der Befehl in VBA lautet: Sub Hilfslinie() ThisDrawing.ActiveLayer = ThisDrawing.Layers("ADS_0_Hilfslinie") End Sub Passieren tut garnix Ich bin für jede Hilfe dankbar. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Ehrenmitglied V.I.P. h.c. 良い精神

 Beiträge: 22689 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 03. Mai. 2018 09:56 <-- editieren / zitieren --> Unities abgeben:          Nur für David F. 26
Da hast du für deinen Fall die falsche Funktion gegriffen, nutze vl-vbarun und es funktioniert, zumindest wenn du auch die erste öffnende Klammer wieder schließt. (defun c:HL (/) (vl-vbarun "Befehle.dvb!Modul1.Hilfslinie"))
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
David F. 26 Mitglied

 Beiträge: 20 Registriert: 03.05.2018 AUTOCAD 2018
|
erstellt am: 03. Mai. 2018 10:01 <-- editieren / zitieren --> Unities abgeben:         
Ouh man wenn das mit den Klammern schon anfängt sollte ich mir echt überlegen ob ich das weiter machen  . Aber vielen Dank so funktioniert es. Könntest du mir vielleicht noch erklären was der Unterschied zwischen den beiden Befehlen ist? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Ehrenmitglied V.I.P. h.c. 良い精神

 Beiträge: 22689 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 03. Mai. 2018 10:33 <-- editieren / zitieren --> Unities abgeben:          Nur für David F. 26
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 |
David F. 26 Mitglied

 Beiträge: 20 Registriert: 03.05.2018 AUTOCAD 2018
|
erstellt am: 03. Mai. 2018 11:26 <-- editieren / zitieren --> Unities abgeben:         
|
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin

 Beiträge: 2880 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2025 Plateia, Canalis Visual Basic
|
erstellt am: 03. Mai. 2018 13:04 <-- editieren / zitieren --> Unities abgeben:          Nur für David F. 26
|

| |
David F. 26 Mitglied

 Beiträge: 20 Registriert: 03.05.2018 AUTOCAD 2018
|
erstellt am: 03. Mai. 2018 13:50 <-- editieren / zitieren --> Unities abgeben:         
|