| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: lisp aus lisp (1929 mal gelesen)
|
AutoCADuser Mitglied Technischer Zeichner /Elektrotech., Energietech.
Beiträge: 48 Registriert: 29.10.2004 -Windows NT 4.0 -AutoCAD 2002 +SP1 +pi-cup 5.2 -WSCAD 4.0 -Normica -HP 1050C -Xerox 8828 / Falter / Scanner XIB-1 / XWB-1 / YWC-1
|
erstellt am: 01. Apr. 2008 17:55 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute! mal wieder eine Frage von mir. Wie kann ich bzw. kann ich eine LISP-Routine "A" aus einer anderen LISP "B" Starten und nach ende von "A" soll dann in "B" weitergemacht werden...ist sowas möglich ?? Gruß
------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 01. Apr. 2008 17:58 <-- editieren / zitieren --> Unities abgeben: Nur für AutoCADuser
Das ist ja wohl sebstverständlich, dass eine funktion eine andere Funktion wieder aufrufen kann und nach Beendigung er aufgerufenen Funktion die Prrogrammbearbetiung in der aufrufenden Funktion fortgesetzt wird. Das geht eigentlich in jeder Programmiersprache. Code: (defun A () (Print "A läuft") (B) ; hier aufruf von B (print "wieder in A") ) (defun B () (Print "B läuft") )
------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AutoCADuser Mitglied Technischer Zeichner /Elektrotech., Energietech.
Beiträge: 48 Registriert: 29.10.2004 -Windows NT 4.0 -AutoCAD 2002 +SP1 +pi-cup 5.2 -WSCAD 4.0 -Normica -HP 1050C -Xerox 8828 / Falter / Scanner XIB-1 / XWB-1 / YWC-1
|
erstellt am: 01. Apr. 2008 18:41 <-- editieren / zitieren --> Unities abgeben:
hi Udo, ich kreigs grad nicht hin, sorry. mal kurz mit Beispiel: wenn ich jetzt B hab und zwischendurch A ausführen will ;-------------lisp B------------------ (defun c:B ( / test) (command "_.zoom" "_extents") (command "_.xref" "_detach" "*") ;----hier soll A ausgeführt werden---- ;-------und weiter mit B-------------- (command "_.layer" "_unlock" "*" "") (command "_.layer" "_color" "253" "*" "") (prin1) ) ------------Ende B------------------- . . . -------------lisp A------------------ (defun C:A (/ ) lisp zum Block einfügen ) -------------Ende A------------------ in A muß ich ja nichts mehr reinschreiben... ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 01. Apr. 2008 19:09 <-- editieren / zitieren --> Unities abgeben: Nur für AutoCADuser
|
AutoCADuser Mitglied Technischer Zeichner /Elektrotech., Energietech.
Beiträge: 48 Registriert: 29.10.2004 -Windows NT 4.0 -AutoCAD 2002 +SP1 +pi-cup 5.2 -WSCAD 4.0 -Normica -HP 1050C -Xerox 8828 / Falter / Scanner XIB-1 / XWB-1 / YWC-1
|
erstellt am: 02. Apr. 2008 10:22 <-- editieren / zitieren --> Unities abgeben:
Ok danke, das hab ich ja hinbekommen…“B“ läuft ja auch nach der Unterbrechung durch, aber „A“ ist so aufgebaut, dass ich aufgefordert werde einen Einfügepunkt für einen einzufügenden Block Eintippen muss…und diese Aufforderung kommt eben nicht und es wird auch kein Block eingefügt. UND wenn ich nach dem Programmablauf wieder „B“ starten will, sag er nur: "B läuft" WENN ich „A“ Starten will sagt er: "A läuft" "B läuft" "wieder in A" "wieder in A" ??? WAS mach ich falsch
------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 02. Apr. 2008 11:42 <-- editieren / zitieren --> Unities abgeben: Nur für AutoCADuser
Zitat: Original erstellt von AutoCADuser: ... einen Einfügepunkt für einen einzufügenden Block Eintippen muss…und diese Aufforderung kommt eben nicht
Tja, dann ist wohl ein Fehler beim Code B - Einfügepunkt abfragen. Wird das mit (Command -einfüge ...) gemacht, dann fehlt da vermutlich ein PAUSE Befehl, ansonsten würde ich mit (getpoint ...) arbeiten. Aber ohne den fehlerhaften Code zu sehen, kann man nicht mehr sagen.
------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AutoCADuser Mitglied Technischer Zeichner /Elektrotech., Energietech.
Beiträge: 48 Registriert: 29.10.2004 -Windows NT 4.0 -AutoCAD 2002 +SP1 +pi-cup 5.2 -WSCAD 4.0 -Normica -HP 1050C -Xerox 8828 / Falter / Scanner XIB-1 / XWB-1 / YWC-1
|
erstellt am: 02. Apr. 2008 12:09 <-- editieren / zitieren --> Unities abgeben:
das ist der code:...nicht wundern, ist meine erste Lisp... (defun c:A ( / Basispunkt OldOsmode)
(setq OldOsmode (getvar "OSMODE")) (setvar "OSMODE" 108) (setvar "insbase" (getpoint "\nGib den Basispunkt an:")) (setq Basispunkt (getvar "insbase")) (command "_insert" "DI_Einfügepunkt") (command Basispunkt) (command "1" "" "0") (setvar "OSMODE" OldOsmode) (prin1) ) ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 02. Apr. 2008 13:40 <-- editieren / zitieren --> Unities abgeben: Nur für AutoCADuser
hi, was willst du denn genau machen, deine Beschreibung ist recht dünne... Deine command - Zeilen sehen komisch aus... setvar insbase ... wofür Hier mal ne lange Zeile mit "insert" - vllt. hilft es: (command "_-insert" (strcat ".\\" curdir "\\" (nth (atoi cursel) items )) (getvar "viewctr") 1 1 0 "_move" (entlast)""(getpoint "\nEinfüge-Basispunkt") pause "_.rotate" (entlast)"" (getvar "LASTPOINT") pause))) mfg Dorfy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AutoCADuser Mitglied Technischer Zeichner /Elektrotech., Energietech.
Beiträge: 48 Registriert: 29.10.2004 -Windows NT 4.0 -AutoCAD 2002 +SP1 +pi-cup 5.2 -WSCAD 4.0 -Normica -HP 1050C -Xerox 8828 / Falter / Scanner XIB-1 / XWB-1 / YWC-1
|
erstellt am: 02. Apr. 2008 14:24 <-- editieren / zitieren --> Unities abgeben:
…wie gesagt, kann sein dass es komisch aussieht…es funktioniert aber genau so wie ich das Brauch. Ich will damit im Grundriss den Basispunkt setzen und auf dieselbe Stelle einen Vorgezeichneten Block „DI_Einfügepunkt“ einfügen. Diesen Routine und einige mehr (die auch selbstständig laufen und einzeln verwendet werden) will ich aus einer Haupt-Lisp (code siehe oben, lisp B) nach einander ausführen und zwischendurch paar commands ausführen. Das Problem ist halt das die beschriebene Lisp aus meiner Haupt-Lisp nicht ausgeführt wird. Und wenn das funktionier soll er nochmal prüfen, ob auch alle Xrefs gelöst werden konnten und dies durch eine AutoCAD-Meldung , oder irgendein graphisches Fenster berichten...ob „Fehler“ oder “alle Xrefs wurden gelöst“ gruß
------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 02. Apr. 2008 14:54 <-- editieren / zitieren --> Unities abgeben: Nur für AutoCADuser
Hi, .... (defun c:AAA ( / OldOsmode) (setq OldOsmode (getvar "OSMODE")) (setvar "OSMODE" 108) (setvar "insbase" (getpoint "\nGib den Basispunkt an:")) (command "_-insert" "ttt" (getvar "insbase") "1" "1" "0") (setvar "OSMODE" OldOsmode) (princ) ) so? musst den Block von ttt auf ... umbenennen. mfg heiko
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 02. Apr. 2008 15:48 <-- editieren / zitieren --> Unities abgeben: Nur für AutoCADuser
Zitat: Original erstellt von Dorfy: Hi, ....(defun c:AAA ( / OldOsmode) (setq OldOsmode (getvar "OSMODE")) (setvar "OSMODE" 108) (setvar "insbase" (getpoint "\nGib den Basispunkt an:")) (command "_-insert" "ttt" (getvar "insbase") "1" "1" "0") (setvar "OSMODE" OldOsmode) (princ) ) so? musst den Block von ttt auf ... umbenennen. mfg heiko
Warum verschiebt ihr alle den INSBASE ? Was hat der Basispunkt der Zeichnung mit dem Blockeinfügen zu tun? entweder (command "._insert" "IrgendeinBlockName" (getpoint) ... oder (command "._insert" "IrgendeinBlockName" PAUSE ... ------------------ Ing. Anton Fuchs WWW.FFZELL.AT.TC Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 02. Apr. 2008 16:03 <-- editieren / zitieren --> Unities abgeben: Nur für AutoCADuser
|
AutoCADuser Mitglied Technischer Zeichner /Elektrotech., Energietech.
Beiträge: 48 Registriert: 29.10.2004 -Windows NT 4.0 -AutoCAD 2002 +SP1 +pi-cup 5.2 -WSCAD 4.0 -Normica -HP 1050C -Xerox 8828 / Falter / Scanner XIB-1 / XWB-1 / YWC-1
|
erstellt am: 02. Apr. 2008 16:08 <-- editieren / zitieren --> Unities abgeben:
heiko, ist klar...is halt bissal kürzer. Aber der selbe Ablauf. Wenn ich jetzt deinen code aus meiner Haupt-Lisp starten will, funktionierts nicht. code der Haupt-Lisp: (defun c:B ( / ) (command "_.zoom" "_extents") (command "_.xref" "_detach" "*") (command "_.layer" "_unlock" "*" "") (command "_audit" "j") ;-----------------Starten von A--------------------- (defun c:A () (Print "A läuft") (c:B) ; hier aufruf von B (print "wieder in A") ) (defun c:B () (Print "B läuft") ) ;-----------------Ende von A------------------------- (command "_.layer" "_color" "253" "*" "") (prin1) ) @fuchsi: es ist ok so, ich will ja den Basispunkt der Zeichnung neu definieren und einen Block an dieselbe stelle platzieren.
------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 02. Apr. 2008 16:35 <-- editieren / zitieren --> Unities abgeben: Nur für AutoCADuser
Äh...so? siehe wronzky Code: -------------------------------------------------------------------------------- (defun c:A () (Print "A läuft") (c:B) ; hier aufruf von B (print "wieder in A") (c:C) ; hier aufruf von C (print "wieder in A") (c:FD) ; hier aufruf von FD (print "wieder in A") ) (defun c:B () (Print "B läuft") ) (defun c:C () (Print "C läuft") ) (defun c:FD () (Print "FD läuft") ) -------------------------------------------------------------------------------- mfg heiko [Diese Nachricht wurde von Dorfy am 02. Apr. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AutoCADuser Mitglied Technischer Zeichner /Elektrotech., Energietech.
Beiträge: 48 Registriert: 29.10.2004 -Windows NT 4.0 -AutoCAD 2002 +SP1 +pi-cup 5.2 -WSCAD 4.0 -Normica -HP 1050C -Xerox 8828 / Falter / Scanner XIB-1 / XWB-1 / YWC-1
|
erstellt am: 02. Apr. 2008 18:26 <-- editieren / zitieren --> Unities abgeben:
|
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 03. Apr. 2008 06:17 <-- editieren / zitieren --> Unities abgeben: Nur für AutoCADuser
|
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 03. Apr. 2008 07:58 <-- editieren / zitieren --> Unities abgeben: Nur für AutoCADuser
Zitat: Original erstellt von AutoCADuser: nee, sorry geht nicht..hat vielleicht einer nen Ausschnitt aus einem Cade...wo man sehen kann wie das aussieht wenns funktioniert... ansonsten DANKE euch für die Hilfe!!
Code: (defun c:B ( / ) (command "_.zoom" "_extents") (command "_.xref" "_detach" "*") (command "_.layer" "_unlock" "*" "") (command "_audit" "j") ;-----------------Starten von A--------------------- (defun c:A () (Print "A läuft") (c:B) ; hier aufruf von B (print "wieder in A") ) (defun c:B () (Print "B läuft") ) ;-----------------Ende von A------------------------- (command "_.layer" "_color" "253" "*" "") (prin1) )
jetzt habe ich mir da mal Dein Code beispiel angeschaut. Du machst hier die wildesten verschachtelten defuns, aber Dein C:a wird niemals aufgerufen, dafür aber dein C:B im Ablöauf vom C:B einfach neu definiert Habs jetz mal so geschrieben, wir ich mir denke, wies gehört. (Ausser das es nicht geht, haben wir noch nicht viele Fehlermeldungen usw. von Dir erfahren) Code: (defun c:B ( / ) (command "_.zoom" "_extents") (command "_.xref" "_detach" "*") (command "_.layer" "_unlock" "*" "") (c:A) (command "_audit" "j") (command "_.layer" "_color" "253" "*" "") (prin1) ) (defun c:A ( / Basispunkt OldOsmode) (setq OldOsmode (getvar "OSMODE")) (setvar "OSMODE" 108) (setvar "insbase" (getpoint "\nGib den Basispunkt an:")) (setq Basispunkt (getvar "insbase")) (command "_insert" "DI_Einfügepunkt" Basispunkt "1" "" "0") (setvar "OSMODE" OldOsmode) (prin1) )
Das verbiegen des Basispunktes ist mir zwar immer noch nicht klar (also das habe ich in mittlerweile 16 Jahren Programmierung rund um Acad noch niemals benötigt), aber wennst Du es so benötigtst, solls mir recht sein. Meine BASISpunkte waren immer penibelst auf 0,0,0 [Diese Nachricht wurde von fuchsi am 03. Apr. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 03. Apr. 2008 08:11 <-- editieren / zitieren --> Unities abgeben: Nur für AutoCADuser
Hallo, nur eine Anmerkung, ein INSBASE ungleich (0.0 0.0 0.0) hat schon so manchen Fehler verursacht, wenn ein georeferenzierter Block in eine ebenfalls georeferenziere Zeichnung eingefügt wird. Wenn das Gebäude dann abgesteckt ist, bevor der Fehler auffällt.... ------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AutoCADuser Mitglied Technischer Zeichner /Elektrotech., Energietech.
Beiträge: 48 Registriert: 29.10.2004 -Windows NT 4.0 -AutoCAD 2002 +SP1 +pi-cup 5.2 -WSCAD 4.0 -Normica -HP 1050C -Xerox 8828 / Falter / Scanner XIB-1 / XWB-1 / YWC-1
|
erstellt am: 03. Apr. 2008 11:23 <-- editieren / zitieren --> Unities abgeben:
@dorfy: bin bereits dabei, bin aber erst am bitteren Anfang. @fuchsi: den wilden Teil mit den defuns hab ich doch von ober. Und wie die Routine reagiert, gab ich doch auch schon ober erwähnt. Aber dann geht ja doch nicht was ich vor hatte. Den code von zwei Routinen in eine LSP-Datei zu kopieren schaffe ich ja auch, aber mehrere LSP-Dateien hintereinander ablaufen zu lassen, ohne dass ich die codes jeder einzelnen LSP-Datei in eine LSP-Datei zusammenkopiere geht wahrscheinlich doch nicht...aber trotz dem, DANKE!! @Jörn: Danke für den Tipp mit INSBASE, hab nicht gedacht das es Ärger machen kann. gruß
------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 03. Apr. 2008 11:36 <-- editieren / zitieren --> Unities abgeben: Nur für AutoCADuser
Zitat: Original erstellt von AutoCADuser: [i@fuchsi: den wilden Teil mit den defuns hab ich doch von ober. Und wie die Routine reagiert, gab ich doch auch schon ober erwähnt. Aber dann geht ja doch nicht was ich vor hatte. Den code von zwei Routinen in eine LSP-Datei zu kopieren schaffe ich ja auch, aber mehrere LSP-Dateien hintereinander ablaufen zu lassen, ohne dass ich die codes jeder einzelnen LSP-Datei in eine LSP-Datei zusammenkopiere geht wahrscheinlich doch nicht...aber trotz dem, DANKE!![/i]
Zum Verständniss Eine Lispdatei ist was anderes als ein Lispprogramm. Eine Lispdatei enthält eine odere mehrere lispprogramme. So wie in meinem letzten Posting. Ein Lispprogramm beginnt mit (defun und endet mit der entsprechenden Klammer zu. Mehrere dieser Programme können in einer Datei sein, und werden dann alle beim laden dieser Datei geladen. Nochmal zu meinem Posting
Code: (defun c:B ( / ) (command "_.zoom" "_extents") (command "_.xref" "_detach" "*") (command "_.layer" "_unlock" "*" "") (c:A) (command "_audit" "j") (command "_.layer" "_color" "253" "*" "") (prin1) ) (defun c:A ( / Basispunkt OldOsmode) (setq OldOsmode (getvar "OSMODE")) (setvar "OSMODE" 108) (setvar "insbase" (getpoint "\nGib den Basispunkt an:")) (setq Basispunkt (getvar "insbase")) (command "_insert" "DI_Einfügepunkt" Basispunkt "1" "" "0") (setvar "OSMODE" OldOsmode) (prin1) )
Das sind jetzt 2 Lispprogramme (c:b) und (c:a). diese stehen praktischerweise in einer Lispdatei (aber nicht notwendigerweise, Du musst nur gewährleisten, dass beide Dateien geladen sind). Beim Laden dieser Datei(en) werden diese beiden Programme definiert (aber noch nicht ausgeführt) Startest du jetzt das programm (c:b) dann werden nacheinander folgende Befehle ausgeführt. (Command zoom .. (Command xref .. (Command layer .. ;-> Aufruf von Programm (c:a) -> (setq Oldsosmode .. -> (setvar "osmode" .. -> (setvar "insbase" .. -> (setq basispunkt .. -> (command insert ... -> (setvar "OSMODE" .. -> (prin1) ; weiter im Programm (c:b) (Command audit .. (Command layer .. (prin1) das war Doch was Du wolltest. ich verstehe immer noch nicht Dein problem. ------------------ Ing. Anton Fuchs WWW.FFZELL.AT.TC [Diese Nachricht wurde von fuchsi am 03. Apr. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AutoCADuser Mitglied Technischer Zeichner /Elektrotech., Energietech.
Beiträge: 48 Registriert: 29.10.2004 -Windows NT 4.0 -AutoCAD 2002 +SP1 +pi-cup 5.2 -WSCAD 4.0 -Normica -HP 1050C -Xerox 8828 / Falter / Scanner XIB-1 / XWB-1 / YWC-1
|
erstellt am: 03. Apr. 2008 16:05 <-- editieren / zitieren --> Unities abgeben:
|
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 03. Apr. 2008 16:15 <-- editieren / zitieren --> Unities abgeben: Nur für AutoCADuser
Zitat: Original erstellt von AutoCADuser: Ok, vielleicht war das missverständlich gemein von mir, sorry. …also mehrere Lispdateien aus einer HAUPT-Lispdatei starten.
Sorry, aber das ist genauso nicht verständlich. Eine Lispdatei ist eine ganz gewähnliche physikalische Textdatei (die irgendwo auf deiner Festplatte herumliegt), wo halt zufällig die richtige Anzahl von Klammer auf und zu und ein paar Lisp-Befehlchen drinsteht. Die kann man nicht starten sondern nur laden,Starten kann man das(die) darin definierte LISP-Programm(e) Ansonsten macht doch mein Code genau das was Du machen willst. Aus einem Hauptprogramm (in dem Fall das programm c:b wird zwischendrin das Programm c:a aufgerufen. Nach dessen Beendigung gehts zurück zum Hauptprogramm c:b. ------------------ Ing. Anton Fuchs WWW.FFZELL.AT.TC 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. Apr. 2008 16:42 <-- editieren / zitieren --> Unities abgeben: Nur für AutoCADuser
Zitat: Original erstellt von AutoCADuser: ....mehrere LSP-Dateien hintereinander ablaufen zu lassen, ohne dass ich die codes jeder einzelnen LSP-Datei in eine LSP-Datei zusammenkopiere geht wahrscheinlich doch nicht...
doch geht, Du musst nur die Datei die dan auszuführenden Code enthält vorher laden, Code:
z. B. so: Datei "MeineLisp.lsp" enthält auszuführendes Prog TuDies (mit (defun c:TuDies (...)) definiert:(if C:TuDies ; Pruefung ob Funktion TuDies schon vorhanden (geladen) ist (C:TuDies) ; wenn ja, dann ausführen (progn (load "MeineLisp.lsp") (C:TuDies)) ; wenn nein, erst laden, dann ausführen ) ; Ende von if
Gruß Thomas
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AutoCADuser Mitglied Technischer Zeichner /Elektrotech., Energietech.
Beiträge: 48 Registriert: 29.10.2004 -Windows NT 4.0 -AutoCAD 2002 +SP1 +pi-cup 5.2 -WSCAD 4.0 -Normica -HP 1050C -Xerox 8828 / Falter / Scanner XIB-1 / XWB-1 / YWC-1
|
erstellt am: 04. Apr. 2008 09:23 <-- editieren / zitieren --> Unities abgeben:
|
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 04. Apr. 2008 10:29 <-- editieren / zitieren --> Unities abgeben: Nur für AutoCADuser
Ach Du dickes Ei. Da haben wir aber tatsächlich aneinender vorbeigeredet. Ist es Dir wirklich nur darum gegangen, wie man Lispprogramme, die in ANDEREN Dateien stehen, einbinden kann. Eigentlich gehts ja dann nur übers Laden verschiedenen Lispdatein. Schau dir mal in der Hilfe das Thema AcadDoc.lsp an. Ich würde hier einfach alle Deine Lispprogramme zum Laden eintragen, dann brauchst Du Dir im Programmablauf darum keine Gedanken machen AcadDoc.lsp (steht im Support-Ordner) (load "MyLispDatei1.lsp nil) (load "MyLispDatei2.lsp nil) (load "MyLispDatei3.lsp nil) (load "MyLispDatei4.lsp nil)
------------------ Ing. Anton Fuchs WWW.FFZELL.AT.TC Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |