| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| CAD-Engineering optimieren: Wie hole ich mehr aus meinen CAD-Systemen?, ein Webinar am 27.09.2024
|
Autor
|
Thema: Werkzeugkasten Schaltfläche von einem Lisp anlegen (2710 mal gelesen)
|
geddo Mitglied Techniker
Beiträge: 330 Registriert: 12.07.2004 Intel Core I7, 16 GB, AutoCAD 2018-19-20, Pytha V24, Win10 prof.
|
erstellt am: 22. Okt. 2008 17:32 <-- editieren / zitieren --> Unities abgeben:
Hallo Ich arbeite mit 2009. Ich habe von einem Bekannten ein Lisp-Programm bekommen, das mir sehr gut gefällt. Ich möchte es aber nicht immer über die Tastatur starten sondern über eine Schaltfläche im Werkzeugkasten. Meine Frage ist: Wie bekomme ich die einzutragenden Daten aus dem Visual Lisp / Editor herausgelesen? Wo steht niedergeschrieben, welches Makro ich schreiben bzw. einfügen muss? ------------------ ---------------- Gruß geddo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8086 Registriert: 09.03.2006 Kinder, kauft Kämme! Es kommen lausige Zeiten.
|
erstellt am: 22. Okt. 2008 17:49 <-- editieren / zitieren --> Unities abgeben: Nur für geddo
|
geddo Mitglied Techniker
Beiträge: 330 Registriert: 12.07.2004 Intel Core I7, 16 GB, AutoCAD 2018-19-20, Pytha V24, Win10 prof.
|
erstellt am: 22. Okt. 2008 19:12 <-- editieren / zitieren --> Unities abgeben:
Hallo Ich bin gerade an ausprobieren, aber ich brauche noch Hilfe. Habe folgendes eingegeben, aber es funktioniert nicht.
^C^C^P(if (null C:\Programme\AutoCAD 2008\Befehl.fas) (LOAD "BEFEHL.fas")) Befehl Befehl ist natürlich nur ein Platzhalter für des Lispprogramm. AutoCAD Verzeichnis ist richtig. ------------------ ---------------- Gruß geddo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8086 Registriert: 09.03.2006 Kinder, kauft Kämme! Es kommen lausige Zeiten.
|
erstellt am: 22. Okt. 2008 19:32 <-- editieren / zitieren --> Unities abgeben: Nur für geddo
Fast Code: ^C^C^P(if (null C:Befehlsaufruf) (LOAD "DeineDatei.fas")) Befehlsaufruf
Beispiel:
Code: ^C^C^P(if (null C:Alle_Ein) (LOAD "ZeigAlles.lsp")) Alle_Ein
was tust Du damit? - Wenn der Befehl "Alle_Ein" nicht definiert ist (-> unbekannter Befehl Alle_Ein), - lade die Datei "ZeigAlles.lsp" - und ruf erneut den Befehl "Alle_Ein" auf. Ich hoffe, ich hab das richtig "erklärt", mögen die Lispler mich korrigieren ;-) Namen und Aufrufe sind nur Beispiele ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... System-Info Excel -Suche RuA-Suche FAQ-ACAD Hilfe zu CAD.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
geddo Mitglied Techniker
Beiträge: 330 Registriert: 12.07.2004 Intel Core I7, 16 GB, AutoCAD 2018-19-20, Pytha V24, Win10 prof.
|
erstellt am: 22. Okt. 2008 20:35 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von runkelruebe: Fast :D - Wenn der [b]Befehl "Alle_Ein" nicht definiert ist (-> unbekannter Befehl Alle_Ein), - lade die Datei "ZeigAlles.lsp" - und ruf erneut den Befehl "Alle_Ein" auf. [/B]
Demnach habe ich doch alles richtig gemacht? ^C^C^P(if (null C:\Programme\AutoCAD 2008\Befehl.fas) (LOAD "BEFEHL.fas")) Befehl Was ist den nun falsch?
------------------ ---------------- Gruß geddo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 22. Okt. 2008 21:00 <-- editieren / zitieren -->
hi Zitat: Original erstellt von geddo: Demnach habe ich doch alles richtig gemacht? ^C^C^P(if (null C:\Programme\AutoCAD 2008\Befehl.fas) (LOAD "BEFEHL.fas")) Befehl Was ist den nun falsch?
ich vermute, der ausloeser fuer die auffassungsunterschiede, scheinen die zeichenfolge 'C:' zu sein @geddo: 'C:' steht in einer deklaration in lisp nicht fuer ein laufwerk, sondern (einfach ausgedrueckt) dafuer, dass du den befehl aus autocad direkt aufrufen kannst. daher darfst du auch NICHT: (if (null C:\Programme\AutoCAD 2008\Befehl.fas)............ schreiben, SONDERN: (if (null C:Befehl) .......... da steht nicht die datei, sondern der name der funktion - alfred - ps: wenn schon datei-/pfadangaben, dann in anfuehrungszeichen stehen (i.d.r.) und mit '\\' oder '/' fuer pfadtrennung
[Diese Nachricht wurde von a.n. am 22. Okt. 2008 editiert.] |
cad4fun Ehrenmitglied
Beiträge: 1846 Registriert: 06.12.2004 privat ACAD 2013 und 2017 deutsch, Windows 7 64Bit HP Elite 7500 Series MT,Intel Cote i5-3470 CPU 3,20Ghz,16GB RAM ATI FirePro V (FireGL V) Graphics Adapter Treiberversion: 15.201.1151.1008
|
erstellt am: 23. Okt. 2008 07:55 <-- editieren / zitieren --> Unities abgeben: Nur für geddo
^C^C^P(if (null C:Befehl) (LOAD "C:/Programme/AutoCAD 2008/BEFEHL.fas")) Befehl Korrektur: siehe Geos nächster Beitrag Sorry, habe ich übersehen beim Kopieren [Diese Nachricht wurde von cad4fun am 23. Okt. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Geos Mitglied Vermessungstechniker i.R.
Beiträge: 1017 Registriert: 21.09.2001 ACAD Map 2010, Win 7 Pro eigene Lisp's<P>HW: Core i7 860, 2.8 GHz 3.3 GB, NVIDIA GeForce GTS 250
|
erstellt am: 23. Okt. 2008 08:49 <-- editieren / zitieren --> Unities abgeben: Nur für geddo
Zitat: ^C^C^P(if (null C:Befehl.fas) (LOAD "C:/Programme/AutoCAD 2008/BEFEHL.fas")) Befehl
Ohne ".fas": ^C^C^P(if (null C:Befehl) (LOAD "C:/Programme/AutoCAD 2008/BEFEHL.fas")) Befehl (null c:befehl) -> Eselsbrücke: das "C" steht hier für "Command" - also wenn "Befehl" noch nicht definiert, lade Lisp-Datei. ------------------ Schöne Grüße Ernst www.geopaint.at Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 23. Okt. 2008 10:00 <-- editieren / zitieren --> Unities abgeben: Nur für geddo
Hallo geddo, vielleicht ist dies ja nicht das einzige Zusatztool, welches du irgendwann mal in deiner Oberfläche einbinden möchtest. Daher solltest du dir unbedingt mal das Thema CUI ansehen und dir dann eine eigene CUI-Datei erzeugen, in welcher du alle deine benutzerdefinierten Befehle ablegst. Das Laden der entsprechenden LSP- oder VLX-Dateien sollte nur dann erfolgen, wenn Befehle aus diesen Programmdateien aufgerufen werden. Die oben gemachten Vorschläge funktionieren und führen zum Ziel, sind meiner Meinung nach aber nicht ganz 'sauber'. Es gibt die Möglichkeit, zu einer CUI-Datei eine MNL-Datei zu erzeugen. Das ist eine ganz normale ASCII-Datei, die du mit Notepad schreiben kannst. Diese sollte den gleichen Namen haben wie die CUI-Datei. Alle in dieser Datei enthaltenen Anweisungen werden dann automatisch beim Laden des Menüs (die CUI-Datei) ausgeführt. Was darin dann stehen msuu kannst du dort nachlesen: http://ww3.cad.de/foren/ubb/Forum145/HTML/000564.shtml#000002 Als Befehlsmakro hast du dann wirklich nur noch den Befehlsnamen stehen und nichts weiter mit (if ...) -> ^C^CBefehl Zusätzlicher Effekt ist, wenn du so verfährst, dass du in dieser MNL-Datei auch noch zusätzliche Anweisungen verstecken kannst (z.B. Systemvariablen setzen, ...) Bei Fragen ... Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
geddo Mitglied Techniker
Beiträge: 330 Registriert: 12.07.2004 Intel Core I7, 16 GB, AutoCAD 2018-19-20, Pytha V24, Win10 prof.
|
erstellt am: 23. Okt. 2008 15:56 <-- editieren / zitieren --> Unities abgeben:
So, vielen Dank für die zahlreichen Ratschläge. Ich habe soeben zwei Programme in einem eigenen Werkzeugkasten eingebunden. Das funktioniert einwandfrei. @Brischke Vielen Dank für die ausführlichen Informationen. Im Moment bin so schon zufrieden. Im nächsten Schritt und ein wenig mehr Zeit werde ich versuchen nach deinem Vorschlag zu arbeiten, bzw. erst einmal die Befehle anzulegen.
------------------ ---------------- Gruß geddo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |