| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Lisp - Befehlseingabe ohne Folge (2378 mal gelesen)
|
Terags Mitglied
Beiträge: 66 Registriert: 30.10.2018 AutoCAD 2018
|
erstellt am: 30. Okt. 2018 15:01 <-- editieren / zitieren --> Unities abgeben:
Hallo liebes Forum, ich habe ein ,hoffentlich, kleines Problem. Ich habe ein paar Lisp-Befehle welche einfach nicht mehr funktionieren wollen. Dabei handelt es sich um z.B. ein Befehl welcher einfach nur eine Hilfslinie auf dem entsprechenden Layer zeichnet. Die Befehlseingabe erfolgt und der Befehl wird mir auch vorgeschlagen nur passieren tut nichts. Hier der VBA-Code End Sub
Code: Sub Hilfslinie() Dim layer As AcadLayer For Each layer In ThisDrawing.Layers If UCase(layer.Name) = UCase(ADS_0_Hilfslinie) Then Set GetOrCreateLayer = layer Exit Sub End If Next Set GetOrCreateLayer = ThisDrawing.Layers.Add("ADS_0_Hilfslinie") ThisDrawing.SendCommand "-Layer" & vbCr & "Fa" & vbCr & "241" & vbCr & "ADS_0_Hilfslinie" & vbCr & vbCr ThisDrawing.ActiveLayer = ThisDrawing.Layers("ADS_0_Hilfslinie") ThisDrawing.SendCommand "PL" & vbCr End Sub
Hier der dazugehörige Lisp-Code Code: (defun c:HL (/) (vl-vbarun "Befehle.dvb!Modul1.Hilfslinie")(Princ))
Ps: Ich weiß man sollte es nicht verbinden xD. Wenn ich die Makros unter "Vbaman" ausführe gehen sie. Stehe gerade auf dem Schlauch.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 30. Okt. 2018 15:48 <-- editieren / zitieren --> Unities abgeben: Nur für Terags
Wenn es wirklich aus einer "Befehle.dvb" / Modul1 kommt, dann wüßte ich nicht was dagegen sprechen sollte. KEINE Reaktion ist auch sehr merkwürdig. Bedeutet KEINE = Acad hängt oder wird wieder BEFEHL: eingenommen ohne dass was passiert(e)? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Terags Mitglied
Beiträge: 66 Registriert: 30.10.2018 AutoCAD 2018
|
erstellt am: 30. Okt. 2018 15:53 <-- editieren / zitieren --> Unities abgeben:
|
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 30. Okt. 2018 16:07 <-- editieren / zitieren --> Unities abgeben: Nur für Terags
Mal abgesehen davon dass es ebenso gut auch mit einer einzigen (send)command Zeile zu realisieren geht. 1. Zeige doch mal dein VBAAUSF-Fenster (mit komplettem Pfad) und
2. einen Screenshot nachdem du die Lispzeile in deine Befehlszeile kopiert hast und anschließend HL<enter> eingegeben hast. Möglichst so dass man die Eingaben noch sieht [F2] und der Cursor sollte ebenfalls mit im Bild sein. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mcap Mitglied CAD-Supporter
Beiträge: 124 Registriert: 13.11.2014 Dell M6700 ACAD 2022/23 IV 2022/23 WIN 10/64
|
erstellt am: 30. Okt. 2018 18:01 <-- editieren / zitieren --> Unities abgeben: Nur für Terags
Zitat: Code: … If UCase(layer.Name) = UCase(ADS_0_Hilfslinie) Then …
Da fehlen doch Anführungszeichen um ADS_0_Hilfslinie, oder? ------------------ Gruss Marco
[Diese Nachricht wurde von mcap am 30. Okt. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Terags Mitglied
Beiträge: 66 Registriert: 30.10.2018 AutoCAD 2018
|
erstellt am: 31. Okt. 2018 09:04 <-- editieren / zitieren --> Unities abgeben:
|
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 31. Okt. 2018 09:27 <-- editieren / zitieren --> Unities abgeben: Nur für Terags
Also bei mir klappt der original gepostete Code. Keine Ahnung warum es bei dir nicht funktioniert. PS: Du hast die Lispzeile nicht in die Befehlszeile kopiert vor dem Aufrug von HP (& anschließendem Screenshot), so kann man sich anhand des Bildes nicht sicher sein ob HP richtig definiert ist oder eine ältere/falsche codezeile geladen wurde. WIR SEHEN ES JA NICHT was vorher und im Hintergrund passiert. Ich "muß" darauf tippen das HP bei dir zu einem anderen Code führt, was anderes fällt mir nicht ein, also bei dir nicht die gepostete Definition von c:HP aktuell ist. Daher: In Befehlszeile kopieren und HP erneut aufrufen - Screenshot. [brauchen wir nicht wirklich, solange DU dir sicher bist..] Verzichte mal auf deinen Versuch zu programmieren und verwende ausschließlich AutoCAD-Befehle, mal sehen ob sich etwas ändert.
Code: Sub Hilfslinie() ThisDrawing.SendCommand "_.-Layer" & vbCr & "_make" & vbCr & "ADS_0_Hilfslinie" & vbCr & "_co" & vbCr & "241" & vbCr & vbCr & vbCr & vbCr & "_.PLINE" & vbCr End Sub (defun c:HL (/) (vl-vbarun "Befehle.dvb!Modul1.Hilfslinie")(Princ))
Oder einfach ohne VBA Code:
(defun c:HL (/) (command "_.-LAYER" "_make" "ADS_0_Hilfslayer" "_co" "241" "" "" "_.PLINE")(Princ))
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Terags Mitglied
Beiträge: 66 Registriert: 30.10.2018 AutoCAD 2018
|
erstellt am: 31. Okt. 2018 09:32 <-- editieren / zitieren --> Unities abgeben:
|
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 31. Okt. 2018 09:43 <-- editieren / zitieren --> Unities abgeben: Nur für Terags
|
Terags Mitglied
Beiträge: 66 Registriert: 30.10.2018 AutoCAD 2018
|
erstellt am: 31. Okt. 2018 09:44 <-- editieren / zitieren --> Unities abgeben:
|
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 31. Okt. 2018 09:53 <-- editieren / zitieren --> Unities abgeben: Nur für Terags
Was macht denn folgendes in der Befehlzeile: (command "_.-LAYER" "_make" "ADS_0_Hilfslayer" "_co" "241" "" "" "_.PLINE") Falls das funktioniert,wie sieht es damit aus: (defun c:HLTEST (/) (command "_.-LAYER" "_make" "ADS_0_Hilfslayer" "_co" "241" "" "" "_.PLINE")(Princ)) dann natürlich mit HLTEST starten.. oder: (alert "TEST") Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Terags Mitglied
Beiträge: 66 Registriert: 30.10.2018 AutoCAD 2018
|
erstellt am: 31. Okt. 2018 10:08 <-- editieren / zitieren --> Unities abgeben:
|
CADuceus Mitglied LWL-Netzplaner GIS
Beiträge: 358 Registriert: 20.01.2005 LWL Netzplanung AutoCAD Map 3D 2020 Win10 64bit / Chrome Intel® Core™ i7-4770K 3.50GHz / 32GB NVidia Quadro P400 HP DesignJet T795
|
erstellt am: 31. Okt. 2018 10:11 <-- editieren / zitieren --> Unities abgeben: Nur für Terags
Hallo Terags Bist Du sicher, dass Du cadffm's erste Lisp-Zeile wirklich ausprobiert hast? In Deinem Bild Datei_2.PNG sehe ich nämlich immer noch Deinen VBA-Aufruf. Ebenfalls testen, ob das Modul vorher nicht geladen werden muss:
Code: (defun c:HL (/) (vl-vbaload "C:/Users/#DEIN_LOGINNAME#/AppData/Roaming/Autodesk/AutoCAD 2019/R23.0/deu/Support/Befehle.dvb") (vl-vbarun "Hilfslinie")(Princ))
Bei mir ging's also nur, wenn ich es so mache. Allerdings würde ich persönlich die Lisp-Zeile von cadffm bevorzugen. Edit: Der VAB-Load muss natürlich nicht unbedingt im defun stehen. Und: Ohne vollständigen Pfad ging es bei mir nicht. Die Befehle.dvb wird bei mir auch im Support-Ordner ignoriert. ------------------ Du kannst in anderen nur entzünden, was in Dir selber brennt!
Wollte noch ein File anhängen, aber habe die Kiste schon heruntergefahren. [Diese Nachricht wurde von CADuceus am 31. Okt. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 31. Okt. 2018 11:37 <-- editieren / zitieren --> Unities abgeben: Nur für Terags
Zitat: Original erstellt von Terags: Hey ja das geht!!! Aber woran liegt das jetzt??
Am einfachsten wäre ein Fehler deinerseits, aber ich mag nicht recht daran glauben. Bitte noch einmal testen, einfach in die Befehlszeile einfügen und als Rückmeldung kommt dann C:HL bzw. C:HLNEU (defun c:HL (/) (command "_.-LAYER" "_make" "ADS_0_Hilfslayer" "_co" "241" "" "" "_.PLINE")(Princ)) (defun c:HLNEU (/) (command "_.-LAYER" "_make" "ADS_0_Hilfslayer" "_co" "241" "" "" "_.PLINE")(Princ)) Funktioniert nun der Befehl HLNEU Funktioniert nun der Befehl HL Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 31. Okt. 2018 11:51 <-- editieren / zitieren --> Unities abgeben: Nur für Terags
@CADuceus Wenn die Befehle.dvb noch nicht geladen ist dann muß man sie natürlich noch laden, logo. Die Definition C:HL geht davon von einem geladenen Modul aus. Da aber AutoCAD eine ordnetliche Meldung bringt wenn das Modul nicht gefunden wurde(weil nicht geladen) können wir annehmen: Daran lag es nicht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kuschelfee Mitglied Bauzeichnerin
Beiträge: 186 Registriert: 07.05.2007 Windows 10 Pro AutoCAD 2022.1.3 Soficad 2022-4 Advance Steel 2022.1.3
|
erstellt am: 01. Nov. 2018 08:49 <-- editieren / zitieren --> Unities abgeben: Nur für Terags
Könnte es damit zusammenhängen das AutoCAD die Layerschaltung im deutschen verändert hat. Machen = Erzeugen Acad 2016 Befehl: _.-LA Aktueller Layer: "0" Option eingeben ?/Machen/SEtzen/Neu/Umbenennen/EIn/AUs/FArbe/Ltyp/LStärke/TRansparenz/MATerial/Plot/FRieren/TAuen/SPerren/ENtsperren/STatus/Beschreibung/ABstimmen]: Acad 2019 Befehl: _.-LA Aktueller Layer: "0" Option eingeben ?/Erzeugen/SEtzen/Neu/Umbenennen/EIN/AUs/FArbe/Ltyp/LStärke/TRansparenz/MATerial/Plot/Frieren/Tauen/SPerren/ENtsperren/STatus/Beschreibung/ABstimmen/Xref]:
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 01. Nov. 2018 09:07 <-- editieren / zitieren --> Unities abgeben: Nur für Terags
|
Terags Mitglied
Beiträge: 66 Registriert: 30.10.2018 AutoCAD 2018
|
erstellt am: 05. Nov. 2018 10:30 <-- editieren / zitieren --> Unities abgeben:
Guten Tag und sorry für das verspätete Melden. cadffm, ich habe jetzt beide befehle mal eingegeben. (Siehe Anhang). Das Auswahlkreuz änderte sich jedoch bei beiden Befehlen nicht. Also ich konnte nichts zeichnen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 05. Nov. 2018 10:35 <-- editieren / zitieren --> Unities abgeben: Nur für Terags
Also in deinem ersten Screenshot (mit deinem Code) war die Sache klar, aber die darauffolgenden.. entschuldige dass ich frage: Aber hast du auch versucht die nun neuen lisp-definierten AutoCAD-Befehle HL und HLNEU zu starten??? Sorry, in einem Forum muß man einfach an alles denken als Helfer. Also wenn HLNEU definiert wurde(wie in deinem Bild), Passiert dann noch immer nichts wenn du die Funktion mit Befehl: HLNEU starten möchtest nachdem du dort (defun c:HLNEU ...usw) eingegeben hattest? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Terags Mitglied
Beiträge: 66 Registriert: 30.10.2018 AutoCAD 2018
|
erstellt am: 05. Nov. 2018 10:52 <-- editieren / zitieren --> Unities abgeben:
Okay also nachdem ich jetzt den kompletten PC neugestartet habe. Geht der Befehl nun per Eingabe. Auch als ich ihn wider in "HL" umbenannt habe. Funktionierte er mit einem Autcad-Neustart. Heißt das jetzt ich muss meine ganzen Befehle (Sind ja noch nicht viele) umbenennen oder wie könnte ich da vorgehen. Im Anhang sind diese paar Befehle. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 05. Nov. 2018 10:58 <-- editieren / zitieren --> Unities abgeben: Nur für Terags
Wir wissen ja noch immer nicht "was los ist". Nach dem Motto 'Neuer Tag, neues Glück' würde ich zunächst noch mal deinen urspünglichen Code testen. 1. Laden die Befehle.dvb in der die Hilfslinie Sub definierte ist, 2. definiere den AutoCAD-Befehl mit (defun c:HLX (/) (vl-vbarun "Befehle.dvb!Modul1.Hilfslinie")(Princ)) (habe es extra "HLX" genannt um Probleme und Verwechslungen zu vermeiden) 3. und starte in der Datei den Befehl: HLX Genau dies solltest du am 30.10. auch gemacht haben (nur als 'HL' benannt) und hattest das besagte Problem beschrieben, wie siehst es heute aus?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Terags Mitglied
Beiträge: 66 Registriert: 30.10.2018 AutoCAD 2018
|
erstellt am: 05. Nov. 2018 11:06 <-- editieren / zitieren --> Unities abgeben:
|
Terags Mitglied
Beiträge: 66 Registriert: 30.10.2018 AutoCAD 2018
|
erstellt am: 05. Nov. 2018 11:13 <-- editieren / zitieren --> Unities abgeben:
|
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 05. Nov. 2018 11:30 <-- editieren / zitieren --> Unities abgeben: Nur für Terags
Vielleicht wird bei dir ja das VBA-Makro nicht gefunden (liegt die DVB in einem Supportpaf oder nicht) und warum zur Hölle auch immer erscheint der Hinweis darauf nicht (die normale Rückmeldung war früher zumindest immer "Konnte Makro nicht finden" o.s.ä. Also ergänze mal den restlichen Pfad in deinem Lispschnipsel oder ergänze den Pfad als Supportpfad falls noch nicht geschehen. defun c:HL ()(vl-vbarun "D:/Fold1/Fold2/Befehle.dvb...weiter wie gehabt. Bitte verwende SLASHs im Pfad. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Terags Mitglied
Beiträge: 66 Registriert: 30.10.2018 AutoCAD 2018
|
erstellt am: 05. Nov. 2018 11:39 <-- editieren / zitieren --> Unities abgeben:
|
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 05. Nov. 2018 11:46 <-- editieren / zitieren --> Unities abgeben: Nur für Terags
|
Terags Mitglied
Beiträge: 66 Registriert: 30.10.2018 AutoCAD 2018
|
erstellt am: 05. Nov. 2018 11:51 <-- editieren / zitieren --> Unities abgeben:
|
David F. 26 Mitglied
Beiträge: 20 Registriert: 03.05.2018 AUTOCAD 2018
|
erstellt am: 23. Nov. 2018 10:45 <-- editieren / zitieren --> Unities abgeben: Nur für Terags
Ein neuer Ansatz. Kann es daran liegen das mehrere gleichzeitig auf diese Datei zugreifen? Es gibt 1 Person bei welcher es geht. Bei jedem anderen Rechner bei welchem ich es einstellen wollte, geht es nämlich nicht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |