Hot News aus dem CAD.de-Newsletter:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  VBA Befehl per Lisp Öffnen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:   VBA Befehl per Lisp Öffnen (186 mal gelesen)
David F. 26
Mitglied


Sehen Sie sich das Profil von David F. 26 an!   Senden Sie eine Private Message an David F. 26  Schreiben Sie einen Gästebucheintrag für David F. 26

Beiträge: 4
Registriert: 03.05.2018

AUTOCAD 2018

erstellt am: 03. Mai. 2018 09:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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.
良い精神



Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 18168
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 03. Mai. 2018 09:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für David F. 26 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von David F. 26 an!   Senden Sie eine Private Message an David F. 26  Schreiben Sie einen Gästebucheintrag für David F. 26

Beiträge: 4
Registriert: 03.05.2018

AUTOCAD 2018

erstellt am: 03. Mai. 2018 10:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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.
良い精神



Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 18168
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 03. Mai. 2018 10:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für David F. 26 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von David F. 26 an!   Senden Sie eine Private Message an David F. 26  Schreiben Sie einen Gästebucheintrag für David F. 26

Beiträge: 4
Registriert: 03.05.2018

AUTOCAD 2018

erstellt am: 03. Mai. 2018 11:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Sehr ausführlich 

Dankeschön das hat mir sehr geholfen. Die Ideen mit den Prüfungen werde ich sehr wahrscheinlich nutzen. Danke noch einmal dafür.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KlaK
Ehrenmitglied
Dipl. Ing. Vermessung, CAD- und Netz-Admin


Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 1974
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2017
Plateia, Canalis
Visual Basic

erstellt am: 03. Mai. 2018 13:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für David F. 26 10 Unities + Antwort hilfreich

Alternative:
(command "_vbarun" "VBA-Funktion")

oder
(^C^C_-vbarun;"macroName")

und Befehl einfach in eine Werkzeugpalette legen

Grüße
Klaus 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

David F. 26
Mitglied


Sehen Sie sich das Profil von David F. 26 an!   Senden Sie eine Private Message an David F. 26  Schreiben Sie einen Gästebucheintrag für David F. 26

Beiträge: 4
Registriert: 03.05.2018

AUTOCAD 2018

erstellt am: 03. Mai. 2018 13:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke dir Klaus für diese Möglichkeit. 

Aber es ging mir genau darum die Werkzeugpalette nicht zu benutzen.

Danke Trotzdem.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2018 CAD.de