| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Autodesk Inventor: Blechkonstruktion - Online, ein Seminar am 30.06.2025
|
Autor
|
Thema: Lisp geht nicht (1058 / mal gelesen)
|
cadstudi Mitglied Student
Beiträge: 149 Registriert: 22.01.2013 Windows 7 aktuelles ServicePack, Office 2007 Ich arbeite auf verschiedenen Rechner, da fällt die Info verdammt schwer!
|
erstellt am: 02. Nov. 2021 14:50 <-- editieren / zitieren --> Unities abgeben:
Hallo lieber AutoCAD Gemeinde, ich versuche gerade alte LISP Programme zu nutzen, eines davon geht, das Andere leider nur wenn ich es per Drag and Drop reinziehe. Ich wollte gern beide in einer Vorlagen dwt speichern, wenn ich das tue geht eine LISP und die hier folgende verursacht eine Fehlermeldung. Hier können Sie Ihre eigenen Routinen speichern. Was soll die Meldung wo ist mein Fehler in der LISP? HILFE!!! Danke schon mal ;you can store here your lisproutine (defun c:use3 ( / ) (gendcl_info nil (strcat (geniuspd) "gen/use3.lsp\n" (genmsg "genuser" 1))) ) (setfunhelp "c:use3" "gen" "use3") ; lc.lsp ; Programm zum Umwandeln des Laetus-Codes ; nach Eingabe des Dezimal-Codes im Balken-Code. ; ; ; ; alte Systemvariable speichern (setq calt (getvar "cmdecho")) (setq ealt (getvar "menuecho")) (setq oalt (getvar "osmode")) (setq balt (getvar "blipmode")) (setvar "blipmode" 0) (setvar "osmode" 0) (setvar "cmdecho" 0) ; (graphscr) ; ; Variablenzuordnung ; ; (setq s 0.5) (setq b 1.5) (setq n 1) (setq e (List 100 20)) (setq f (list 100 28)) (initget (+ 1 2 4)) (setq dezcode (getint "\nGeben Sie den Laetus-Code ein: ")) (setq rest dezcode) (if (< dezcode 100000) (progn (setq code (+ 1 dezcode)) (while (> code 1) (while (<= n code) ; nächst größere Zahl (setq n (* n 2)) ; von code gesucht ) (setq n (/ n 2)) ; nächst kleinere Zahl ausgewählt (setq rest (- code n)) ; Rest mit nächst kl. Zahl vergl. (if (< rest (/ n 2)) (progn (setq breite s) (setq code (- code (/ n 2))) ) (progn (setq breite b) (setq code rest) ) ) (if (= n 1) (setq breite s)) ;(princ code) (princ " ") ;(princ n) (princ " ") ;(princ rest) (terpri) (setq n 1) (command "plinie" e "b" breite breite f "") (setq e (list (+ 2.5 (car e)) (cadr e))) (setq f (list (+ 2.5 (car f)) (cadr f))) ) ) (princ "\nCode darf nicht größer als 32767 sein") ;else - Funktion ) (princ) ; alte Systemvariablen setzen (setvar "menuecho" ealt) (setvar "cmdecho" calt) (setvar "osmode" oalt) (setvar "blipmode" balt)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22298 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 02. Nov. 2021 15:56 <-- editieren / zitieren --> Unities abgeben: Nur für cadstudi
Hi, >>"Ich wollte gern beide in einer Vorlagen dwt speichern," Man kann keine Lisp-Datei in einer DWT speichern, unabhängig davon ob es geht (geht nicht) vermute ich du wolltest beide nacheinander in einer Datei laden? >>"wenn ich das tue geht eine LISP und die hier folgende verursacht eine Fehlermeldung." Die andere setzt aber die Weichen. Wir kennen keine der beiden, was aber für eine zielgerichtete Fehlersuche sinnvoll wäre.
>>" Hier können Sie Ihre eigenen Routinen speichern. Was soll die Meldung wo ist mein Fehler in der LISP?" Meldung? Von Wem, Wo? Sorry, die Beschreibung und das Fehlen der Dateien mache es unnötig schwierig zu helfen.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadstudi Mitglied Student
Beiträge: 149 Registriert: 22.01.2013 Windows 7 aktuelles ServicePack, Office 2007 Ich arbeite auf verschiedenen Rechner, da fällt die Info verdammt schwer!
|
erstellt am: 02. Nov. 2021 16:10 <-- editieren / zitieren --> Unities abgeben:
Ja, ich wollte beide nacheinander lasen. Weil ich gerne Icons erstellen möchte, somit dachte ich die müssen in der Datei sein und dann kann ich über ein Icon diese zukünftig aufrufen. :-( Ich habe fast 15 Jahre keine LISP mehr angefasst. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1144 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 03. Nov. 2021 07:29 <-- editieren / zitieren --> Unities abgeben: Nur für cadstudi
Hallo cadstudi, pack dir folgendes auf einen Knopf z. B. in einer Werkzeugpalette: Code:
(if (not c:DeinBefehl) (load "DeineDatei.lsp")) DeinBefehl
Das prüft, ob Dein Befehl schon bekannt ist, wenn nicht, wird die Datei geladen. Anschließend wird der Befehl gestartet. HTH Gruß Thomas [Diese Nachricht wurde von spider_dd am 03. Nov. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1458 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 04. Nov. 2021 12:51 <-- editieren / zitieren --> Unities abgeben: Nur für cadstudi
Der Lisp-Code definiert, außer "use3", keine Funktion die du dann aufrufen kannst. Der Code wird direkt beim Laden ausgeführt und fertig. Dabei werden auch verschiedenste Variablen verwendet die aber natürlich in keiner Funktion lokal sind sondern "frei zugänglich" dann irgendwelche Werte enthalten. Das solltest du erst mal sauber aufräumen und eine aufrufbare Funktionen definieren. Kann ja sein dass dann die Fehlermeldung weg ist. ------------------ Geht nicht, gibts nicht Gruß Andreas http://kraus-cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 970 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 18. Nov. 2021 19:25 <-- editieren / zitieren --> Unities abgeben: Nur für cadstudi
Zitat: Original erstellt von cadffm: Hi,>>"Ich wollte gern beide in einer Vorlagen dwt speichern," Man kann keine Lisp-Datei in einer DWT speichern, unabhängig davon ob es geht (geht nicht) vermute ich du wolltest beide nacheinander in einer Datei laden?
Doch, man kann Lisp-Funktionen durchaus in DWG oder DWT Dateien speichern, und kann diese natürlich auch beim Öffnen der DWG wieder automatisch ausführen lassen. Das geht sogar ziemlich einfach, beispielsweise durch Speichern des Quellcodes in einem Dictionary. Es gibt sogar Fälle, in denen sowas sinnvoll ist. Beispielsweise in meinem objectiveCAD werden die Objektmethoden in Form von Lisp-Funktionen als XDictionary am Objekt in der DWG gespeichert. Die DWG enthält dann nicht nur die Geometrie der Objekte, sondern auch alle spezifischen Funktionen zum Modifizieren dieser Objekte, oder für die Kommunikation der Objekte miteinander. Wer die DWG hat und ein simples Programm zu Auslesen und Evaluieren der Objektfunktionen, der hat die vollständige "Intelligenz" der Objekte mit in der DWG.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22298 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 18. Nov. 2021 21:55 <-- editieren / zitieren --> Unities abgeben: Nur für cadstudi
Ziemlich einfach.. für jemanden der bereits mit lokal/global und Codezeilen außerhalb jeglicher Funktionsdefinition strauchelt, wohl kaum Ich antworte hier aber wegen etwas anderem, es fehlte hier noch das Ende - was per PM bearbeitet und abgeschlossen wurde: Es gab eine Lispdatei mit Codezeilen welche nicht Teil einer Funktion war, also nur beim Laden der Datei ausgeführt wurde und somit nur mit "neu laden" ausgeführt werden konnte. Dazu noch eine weitere Datei mit Funktionen und in beiden Symbole die nicht lokal defininiert waren, plus der Versuch beide Inhalte zusammenzufassen war nicht nicht geglückt. Ich konnte weiterhelfen, natürlich ohne DATEIEN in einer DWG/DWT zu speichern, User glücklich. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 970 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 18. Nov. 2021 22:02 <-- editieren / zitieren --> Unities abgeben: Nur für cadstudi
Zitat: Original erstellt von cadffm: Ziemlich einfach.. für jemanden der bereits mit lokal/global und Codezeilen außerhalb jeglicher Funktionsdefinition strauchelt, wohl kaum
Darum ging's hier doch gar nicht, denn der Fragesteller wollte ja gar keinen Lisp Code in einer DWG speichern. Mir als passioniertem Besserwisser war nur der korrigierende Hinweis wichtig, dass man das eben doch recht einfach machen kann.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
VMichl Mitglied
Beiträge: 224 Registriert: 04.01.2001 AutoCAD, LT, Inventor, Revit, Map, LISP... Firma: ARKANCE (CAD Studio)
|
erstellt am: 19. Nov. 2021 08:55 <-- editieren / zitieren --> Unities abgeben: Nur für cadstudi
|