| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: Compilieren von Lispdateien vereinfachen (2437 mal gelesen)
|
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 30. Jul. 2006 17:07 <-- editieren / zitieren --> Unities abgeben:
Hallo, Einige Fragen zum Compilieren. Beispiel: ich habe eine Datei: "TEST.LSP" und "TEST.DCL") Damit mache ich eine "TEST.PRV" Das habe ich mit einem Tool automatisiert, das funktioniert mit nur LSP und mit LSP + DCL) Wenn ich dann eine "TEST.VLX" erstellen möchte, gehe ich in V-Lisp über -->Datei -->Anwendung erstellen -->Anwendung neu erstellen und wähle dann meine "TEST.PRV" aus und bekomme danach die "TEST.VLX". Nun hätte ich gerne einen Weg, wie ich - ohne die ganze Menüklickerei - auch den Weg von "PRV" zu "VLX" automatisieren kann. Wenn ich wüsste wie die Befehlszeile auszusehen hat um von "PRV" zu "VLX" zu kommen, könnte ich z.B. mit "While" ein ganzes Verzeichnis mit LSP und DCL-Dateien auf einmal compilieren. Gruß Theodor Schönwald
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 18.1, LibreOffice 5+
|
erstellt am: 31. Jul. 2006 08:00 <-- editieren / zitieren --> Unities abgeben: Nur für Theodor Schoenwald
Guten morgen Theodor, hilft Dir "vlisp-compile" für Deine Zwecke? Gib mal in der lisp-Hilfe "compile" ein, "vlisp-compile function". Zitat: To compile a single AutoLISP file, call the vlisp-compile function. The function syntax is (vlisp-compile 'mode "filename" [out-filename]) For this function mode is a symbol identifying the compiler mode filename is a string naming the source file out-filename is a string naming the compiled output file
Gruß Frederik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 31. Jul. 2006 10:02 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen Frederik, Danke für Deine Antwort, das hatte ich in der Hilfe schon gefunden, aber ich komme damit nicht weiter. Als Beispiel liste ich eine PRV-Datei: --------------------------------------- SW_KONTR.PRV --------------------------------------- (PRV-DEF (:target . "SW_KONTR.VLX") (:active-x . T) (:separate-namespace) ( rotected . T) (:load-file-list (:lsp "SW_KONTR.LSP")) (:require-file-list ( CL "SW_KONTR.DCL")) ( b-directory) (:tmp-directory) ( ptimization . st) ) ------------------------------------- Wie könnte eine Befehlszeile aussehen? (vlisp-compile ... "SW_KONTR.PRV" ... )??? Gruß Theodor
[Diese Nachricht wurde von Theodor Schoenwald am 31. Jul. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 18.1, LibreOffice 5+
|
erstellt am: 31. Jul. 2006 10:13 <-- editieren / zitieren --> Unities abgeben: Nur für Theodor Schoenwald
Hallo Theodor, tut mir leid, da muß ich passen. Ich selbst habe bisher nur 3-5 lsp-Dateien kompiliert, bei anderen Erweiterungen habe ich nicht den Hauch einer Ahnung :-((( Andere Mitglieder wissen da sicherlich weiter! Frederik P.S.: Die "Grinser" haben Dir doch tatsächlich den Code zerlegt... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
andi2050 Mitglied
Beiträge: 107 Registriert: 11.03.2003
|
erstellt am: 31. Jul. 2006 19:48 <-- editieren / zitieren --> Unities abgeben: Nur für Theodor Schoenwald
Hallo Ich bin auch kein Compiler Experte, aber mit 'vlisp-comile' kannst Du m.E. nur fas-Files erzeugen. Es gibt aber noch weitere VLISP-... Funktionen. Ich hab Dir mal eine Datei mit ALLEN 'LISP-Befehlen' von ACAD2004 angehängt. Die Liste ist sehr lang, enthält aber auch alle VLISP-... Funktionen (Kompilerfunktionen). Vielleicht findest Du darin den richtigen Befehl zum Erstellen einer Anwendung. Aber Vorsicht: Ich hab mir vorhin beim Probieren ein Sourcefile überschrieben mit der Funktion VLISP-MAKE-PROJECT-LOAD-FILE (erstellt mittels der PRJ-Datei ein LISP-File mit LOAD-Anweisungen -> Die erstellet Datei hatte den gleichen Namen als eine Source-Datei) Is' zwar keine Lösung Deines Problems, aber vielleicht bringt's Dich weiter... Grüße Andi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 31. Jul. 2006 22:34 <-- editieren / zitieren --> Unities abgeben:
Danke Andi! Heute habe ich weiter im Netz gestöbert und nur ein Beitrag mit Fragen und Antworten gefunden. Das Ergebnis der Beiträge war: so eine Funktion gibt es bei V-Lisp nicht. In einer Antwort steht: "Sie wurde einfach vergessen". Da ich ein Lisp-Tool gemacht habe, das die PRV-Dateien automatisch erstellt, ist das Compilieren schon ein Stück weit vereinfacht. Komplett automatisieren kann ich dann halt nicht. Wenn Interesse besteht, kann ich das Tool listen. Gruß Theodor Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 01. Aug. 2006 07:48 <-- editieren / zitieren --> Unities abgeben: Nur für Theodor Schoenwald
Zitat: Original erstellt von Theodor Schoenwald: D Wenn Interesse besteht, kann ich das Tool listen.
Jo, warum nicht.. ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
WolfgangGutke Mitglied Konstrukteur
Beiträge: 109 Registriert: 28.09.2004 AutoCAD 2002 AutoCAD 2006 ObjectDCL 2.02
|
erstellt am: 01. Aug. 2006 11:15 <-- editieren / zitieren --> Unities abgeben: Nur für Theodor Schoenwald
Hallo, da ich keine DCL's habe, kompelier ich meine LISP mit folgender Funktion: (defun c:compiler (/) (setq Erg (mapcar '(lambda (y) (cons (vlisp-compile 'st y nil) y) ) (mapcar '(lambda (x)(strcat "C:\\Prog" "\\" x)) (VL-DIRECTORY-FILES "C:\\Prog" "*.lsp" 1)))) ) Hinterher bekomme ich noch ne Liste der kompelierten Funktionen + Fehler Ich hoffe, es hilft! VG Wolfgang ------------------ LISP = Lots of Insane Stupid Parantheses Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 01. Aug. 2006 14:22 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas, Dein Wunsch: Verbesserungsvorschläge werden gern gesehen. "(defun STR_LST ..." ist von Axel Gruß Theodor ;;------------------------------------------------ ;;; Erstellt automatisch PRV-Dateien aus allen Lisp- und DCL-Dateien, ;;; die sich im gleichen Ordner befinden. ;;; V 1.0, 1.8.06, Theodor Schönwald ;; (defun C:MAKE_PRV (/ LEER Z_ORDN LL_DAT F Z FILE DCL A A_1 B B_1 E L_D DAT_INI INI_DAT) (setvar "CMDECHO" 0) (setq LEER (strcat "\n" (chr 160) "\n" (chr 160) "\n" (chr 160))) ;; Zeile in Datei schreiben (defun W_L_F (B / ZEIL) (setq ZEIL (write-line B FILE)) ) ;; LSP-Dateiordner auslesen (defun GETPATH (F /)(apply 'strcat(reverse (cdr (member "\\" (STR_LST F)))))) (defun STR_LST (STR / LS I) (setq I 1) (repeat (strlen STR) (setq LS (cons (substr STR I 1) LS)) (setq I (1+ I)) ) (setq F LS) ) ;;________________________________________________________________ (princ LEER) ;; Aus der gewählten Lisp-Datei wird der Ordner ausgelesen, in dem weitere ;; Lispdateien sind. (prompt "\nOrdner der Lispdateien festlegen") (setq Z_ORDN (GETPATH (setq DAT (getfiled "\nAuswahl einer LSP-Datei" "" "LSP" 4))) LL_DAT (strcat (getenv "temp") "\\LL.TXT") ) (command "SHELL" (strcat "Dir " Z_ORDN "\\*.lsp /b >" LL_DAT)); Dateinamen in LL_DAT (princ) (setq Z 1) (while (and (not (findfile LL_DAT)) (<= Z 5)) (command "PAUSE" 1000) (setq Z (1+ Z)) ) (princ LEER) (setq DAT_INI (findfile LL_DAT)) (if DAT_INI (setq INI_DAT (open DAT_INI "r")) ) (prompt "\n") (setq A t) (while A (setq A (read-line INI_DAT)) ; NC-Dateiname festlegen (if A (progn (setq A_1 A) (setq A (strcase (strcat Z_ORDN "\\" A))) (if (/= A (strcase (strcat Z_ORDN "\\Make_PRV.LSP"))) (progn (setq B (substr A 1 (- (strlen A) 4)) B_1 (substr A_1 1 (- (strlen A_1) 4)) E (strcat B ".DCL") L_D (findfile E) ) (if L_D (setq DCL t) (setq DCL NIL) ) (setq FILE (open (strcat B ".PRV") "w")) (W_L_F (strcat "(PRV-DEF (:target . \"" B_1 ".VLX\")")) (W_L_F " (:active-x . T)") (W_L_F " (:separate-namespace)") (W_L_F " ( rotected . T)") (W_L_F (strcat " (:load-file-list (:lsp \"" B_1 ".LSP\"))")) (if DCL (W_L_F (strcat " (:require-file-list ( CL \"" B_1 ".DCL\"))")) (W_L_F " (:require-file-list)") ) (W_L_F " ( b-directory)") (W_L_F " (:tmp-directory)") (W_L_F " ( ptimization . st)") (W_L_F ")") (close FILE) (setq FILE NIL) (princ) ) ;_ end progn ) ;_ end if ) ;_ end progn ) ;_ end if ) ;_ end While (close INI_DAT) (setq INI_DAT NIL) (prompt "\nFertig") (princ) ) (princ) (prompt "\nCompilierungs-Tool Make_PRV geladen") (princ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 01. Aug. 2006 14:28 <-- editieren / zitieren --> Unities abgeben:
Hallo Wolfgang, Danke für Deinen Beitrag. Zumindest kann ich damit alle LSP ohne DCL compilieren und benötige nur noch PRV-Dateien für LSP+DCL. Wieder ein Stück mehr Automatition. Nicht ganz, denn ich erhalte "FAS" und möchte haben "VLX". Gruß Theodor
[Diese Nachricht wurde von Theodor Schoenwald am 02. Aug. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |