| |
| 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, eine Pressemitteilung
|
Autor
|
Thema: Fehlermeldung (1146 mal gelesen)
|
Alfonso Mitglied Holztechniker
Beiträge: 44 Registriert: 24.08.2005 HP Workstation Z400 Intel(R) Xeon(R) CPU W3550 @ 3.06GHz 16.0 GB RAM Nvidea Quadro 4000 Windows 7 Proffessional 64bit AutoCAD 2012 Inventor 2012 Navisworks Manage 2012
|
erstellt am: 06. Nov. 2006 13:25 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, habe mir ein Lisp geschrieben, womit ich mir schnell und einfach in 3D Schubkästen erstellen kann. Leider funktioniert die Rutine nur zwei bis drei mal. Spätestens beim vierten aufruf kommt die Fehlermeldung und AutoCAD (ACAD 2007) stürzt ab. "Systemfehler: Befehle können nicht in mehr als 4 verschachtelt sein" Kann mir jemand helfen? Hier der Code:
(defun c:3d_norm_01 (/ SB ST SH MS NT BS) (setq SB (getdist "\nSchubkastenbreite angeben:") ;Schubkastenbreite ST (getdist "\nSchubkastentiefe angeben:") ;Schubkastentiefe SH (getdist "\nSchubkastenhöhe angeben:") ;Schubkastenhöhe MS 15 ;Materialstärke der Seiten BS 6 ;Bodenstärke NT (+ (/ MS 3) 1) ;Nuttiefe in den Seiten AWS (ssadd) ;Auswahlsatz ) (01_linke_Seite) (01_rechte_Seite) (01_Vorderstück) (01_Hinterstück) (01_Boden) (01_Einfügen) ) (defun 01_linke_Seite (/) (command "_box" (list 0 0 0) (list MS ST SH) ) (setq S1 (entlast)) (ssadd S1 AWS) (command "_box" (list (- MS NT) 0 15) (list MS ST (+ 15 BS)) ) (command "_subtract" S1 "" (entlast) "" ) (command "_pline" (list 0 0 0) (list MS 0 0) (list MS MS 0) "S" ) (command "_extrude" (entlast) "" SH ) (command "_subtract" S1 "" (entlast) "" ) (command "_pline" (list 0 ST 0) (list MS ST 0) (list MS (- ST MS) 0) "S" ) (command "_extrude" (entlast) "" SH ) (command "_subtract" S1 "" (entlast) "" ) ) (defun 01_rechte_Seite (/) (command "_mirror3d" (entlast) "" "YZ" (list (/ SB 2) 0 0) "N" ) (setq S2 (entlast)) (ssadd S2 AWS) ) (defun 01_Vorderstück (/) (command "_box" (list 0 0 (+ 15 BS)) (list SB MS SH) ) (setq S3 (entlast)) (ssadd S3 AWS) (command "_pline" (list 0 0 0) (list 0 MS 0) (list MS MS 0) "S" ) (command "_extrude" (entlast) "" SH ) (command "_subtract" S3 "" (entlast) "" ) (command "_pline" (list SB 0 0) (list SB MS 0) (list (- SB MS) MS 0) "S" ) (command "_extrude" (entlast) "" SH ) (command "_subtract" S3 "" (entlast) "" ) ) (defun 01_Hinterstück (/) (command "_mirror3d" S3 "" "ZX" (list 0 (/ ST 2) 0) "N" ) (setq S4 (entlast)) (ssadd S4 AWS) ) (defun 01_Boden (/) (command "_box" (list (- MS (- NT 1)) 0 15) (list (- SB (- MS (- NT 1))) ST (+ BS 15)) ) (setq S5 (entlast)) (ssadd S5 AWS) ) (defun 01_Einfügen (/) (command "_copybase" (list -5 0 -11) AWS "" ) (command "_erase" AWS "" ) (command "_pasteclip") ) 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: 06. Nov. 2006 15:35 <-- editieren / zitieren --> Unities abgeben: Nur für Alfonso
Hallo Alfonso, ich würde testen, ob alle command-Befehle auch korrekt beendet werden, ich habe es in 2006 mal durchlaufen lassen, aber beim ersten command-Aufruf von _extrude war bei mir schon Ende, weil das Maß der Verjüngung nicht vorhanden ist. (command "_extrude" (entlast) "" SH ) Einfach eine 0.0 einfügen: (command "_extrude" (entlast) "" SH 0.0 ) Zudem würde ich drauf achten, das die Variablen alle deklariert sind, lokal oder global. z.B. (setq AWS(01_linke_Seite AWS MS NT ST SH BS)) Die Funktion 01_linke_Seite dann (defun 01_linke_Seite (AWS MS NT ST SH BS / S1) .... AWS) ------------------ viele Grüße Jörn [Diese Nachricht wurde von joern bosse am 06. Nov. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Alfonso Mitglied Holztechniker
Beiträge: 44 Registriert: 24.08.2005 HP Workstation Z400 Intel(R) Xeon(R) CPU W3550 @ 3.06GHz 16.0 GB RAM Nvidea Quadro 4000 Windows 7 Proffessional 64bit AutoCAD 2012 Inventor 2012 Navisworks Manage 2012
|
erstellt am: 07. Nov. 2006 09:50 <-- editieren / zitieren --> Unities abgeben:
Hallo Jörn, vielen Dank für deine Hilfe. Leider bin ich aber immer noch nicht weitergekommen. Da man bei AutoCAD 2007 bei dem Befehl _extrude die Verjüngung nicht mehr angeben muss kann der Code unter 2006 auch nicht laufen. Deshalb habe ich den Code unten für AutoCAD 2000 angehängt. Wenn ich AutoCAD 2000 und das Lisp starte läuft es beim ersten mal ohne Probleme durch. Beim zweiten mal kommt die Fehlermeldung wieder und AutoCAD stürzt ab. Ich habe herrausgefunden, das die Fehlermeldung immer am zweiten _mirror3d Befehl kommt. Also immer beim vierten aufruf von _mirror3d. Woran kann das liegen? Desweiteren verstehe ich nicht was du mit folgendem Zeilen meinst? ______________________________________________________ z.B. (setq AWS(01_linke_Seite AWS MS NT ST SH BS)) Die Funktion 01_linke_Seite dann (defun 01_linke_Seite (AWS MS NT ST SH BS / S1) .... AWS) ________________________________________________________ Die Variabeln habe ich doch alle deklariert? Hier der Code:
(defun c:3d_norm_01 (/ SB ST SH MS BS NT AWS S1 S2 S3 S4 S5) (setq SB (getdist "\nSchubkastenbreite angeben:") ;Schubkastenbreite ST (getdist "\nSchubkastentiefe angeben:") ;Schubkastentiefe SH (getdist "\nSchubkastenhöhe angeben:") ;Schubkastenhöhe MS 15 ;Materialstärke der Seiten BS 6 ;Bodenstärke NT (+ (/ MS 3) 1) ;Nuttiefe in den Seiten AWS (ssadd) ;Auswahlsatz ) (command "_ucs" "w" "osmode" "0" ) (01_linke_Seite) (01_rechte_Seite) (01_Vorderstück) (01_Hinterstück) (01_Boden) (01_Einfügen) ) (defun 01_linke_Seite (/) (command "_box" (list 0 0 0) (list MS ST SH) ) (setq S1 (entlast)) (ssadd S1 AWS) (command "_box" (list (- MS NT) 0 15) (list MS ST (+ 15 BS)) ) (command "_subtract" S1 "" (entlast) "" ) (command "_pline" (list 0 0) (list MS 0) (list MS MS) "S" ) (command "_extrude" (entlast) "" SH 0 ) (command "_subtract" S1 "" (entlast) "" ) (command "_pline" (list 0 ST) (list MS ST) (list MS (- ST MS)) "S" ) (command "_extrude" (entlast) "" SH 0 ) (command "_subtract" S1 "" (entlast) "" ) ) (defun 01_rechte_Seite (/) (command "_mirror3d" S1 "" "YZ" (list (/ SB 2) 0 0) "N" ) (setq S2 (entlast)) (ssadd S2 AWS) ) (defun 01_Vorderstück (/) (command "_box" (list 0 0 (+ 15 BS)) (list SB MS SH) ) (setq S3 (entlast)) (ssadd S3 AWS) (command "_pline" (list 0 0) (list 0 MS) (list MS MS) "S" ) (command "_extrude" (entlast) "" SH 0 ) (command "_subtract" S3 "" (entlast) "" ) (command "_pline" (list SB 0) (list SB MS 0) (list (- SB MS) MS) "S" ) (command "_extrude" (entlast) "" SH 0 ) (command "_subtract" S3 "" (entlast) "" ) ) (defun 01_Hinterstück (/) (command "_mirror3d" S3 "" "ZX" (list 0 (/ ST 2) 0) "N" ) (setq S4 (entlast)) (ssadd S4 AWS) ) (defun 01_Boden (/) (command "_box" (list (- MS (- NT 1)) 0 15) (list (- SB (- MS (- NT 1))) ST (+ BS 15)) ) (setq S5 (entlast)) (ssadd S5 AWS) ) (defun 01_Einfügen (/) (command "_copybase" (list -5 0 -11) AWS "" ) (command "_erase" AWS "" ) (command "_pasteclip") ) mfg Alfonso
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
Beiträge: 1989 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 07. Nov. 2006 10:21 <-- editieren / zitieren --> Unities abgeben: Nur für Alfonso
|
Alfonso Mitglied Holztechniker
Beiträge: 44 Registriert: 24.08.2005 HP Workstation Z400 Intel(R) Xeon(R) CPU W3550 @ 3.06GHz 16.0 GB RAM Nvidea Quadro 4000 Windows 7 Proffessional 64bit AutoCAD 2012 Inventor 2012 Navisworks Manage 2012
|
erstellt am: 07. Nov. 2006 10:33 <-- editieren / zitieren --> Unities abgeben:
Hallo CADwiesel, die Eingabe von YZ in den Befehl _mirror3d funktioniert beim mir in ACAD 2000 und ACAD 2007. Der Fehler liegt aber irgendwo bei den Befehl _mirror3d, weil er in der Funktion "01_rechte_Seite" und "01_Hinterstück" vorkommt und das Lisp immer dort abbricht. Kannst du mir weiter helfen? mfg Alfonso 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: 09. Nov. 2006 09:12 <-- editieren / zitieren --> Unities abgeben: Nur für Alfonso
Hallo Alfonso, tja, ich kann Dir den Fehler nur bestätigen, ohne Tip (Außer auf den Befehl _mirror3D zu verzichten und die rechte Seite und das Hinterstück auch über Konstruktion zu erstellen.) Zu meiner letzten Antwort: Das war wohl ein Schnellschuss mit den Variablen. Wo ich eigentlich drauf hinaus wollte ist, das ich kleinere Funktionen in der Regel mehrfach verwende und daher die geforderten Variablen direkt übergebe. Vielleicht verdeutlicht dies ein folgendes Beispiel: Code:
(defun c:test ( / a b c d ergebnis1 ergebnis2) (setq a 1 b 2 c 3 d 4) (setq ergebnis1 (plus a b) ergebnis2 (plus c d)))(defun plus (a b / ) (+ a b)) (defun c:test1 ( / a b c d ergebnis1 ergebnis2) (setq a 1 b 2 c 3 d 4) (setq ergebnis1 (plus1) ergebnis2 (plus1)))
(defun plus1( / ) (+ a b))
In Test1 kann die Funktion plus mit verschiedenen Variablen verwendet werden. In Test2 dagegen kann die Funktion plus1 nur die Variablen a und b addieren, wenn Sie durch die Aufrufende Funktion mit entsprechenden Werten gefüllt sind. ------------------ viele Grüße Jörn [Diese Nachricht wurde von joern bosse am 09. Nov. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |