| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: 2 Plotfiles mit einem Lisp erstellen (2633 mal gelesen)
|
Obi-Wahn Mitglied Student
Beiträge: 31 Registriert: 30.07.2007
|
erstellt am: 07. Mai. 2008 18:46 <-- editieren / zitieren --> Unities abgeben:
Hi! ich hab folgendes Problem: Ich arbeite gerade an meiner Projektklausur. Da aber bei uns in der Schule 2 Plotter stehen, von denen man nie weis, welcher gerade funktioniert, will ich gerne per Lisp und einem Button das in Plotfiles Drucken. Leider kommt immer ein "Falsch formatierte Liste in Eingabe". Ich sags ganz ehrlich: Ich hab keinen Plan von lisp. Meine If-kaskaden kommen oft an "kunst" heran, aber helfen nicht. Würde mich also über jede hilfe freuen. PS.: Quer- und Hochformat auswahl will ich am schluss noch einplanen, aber das hat zeit. Ich drucke hauptsächlich in Querformat Danke Andreas ------------------ Garten ist eine Kunstnatur 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: 07. Mai. 2008 19:46 <-- editieren / zitieren --> Unities abgeben: Nur für Obi-Wahn
Code: (defun C:DBLPRNT (/ fmt lot hfmt ncan nhp) ; Die Lisp ist derzeit nur für Querformat, da ich meistens Querformat Plotte (if (= (getvar "limmax") "1189.0 841.0") (setq fmt "A0")) (if (= (getvar "limmax") "841.0 594.5") (setq fmt "A1")) (if (= (getvar "limmax") "594.5 420.0") (setq fmt "A2")) (if (= (getvar "limmax") "420.0 297.0") (setq fmt "A3")) (if (= (getvar "limmax") "297.0 210.0") (setq fmt "A4")) (setq lot (getvar "ctab")) (setq ncan (strcat lot "_for_CW8400PG")) ;<--- (setq hfmt (strcat "Übergröße ISO: " fmt)) ;<--- (setq nhp (strcat lot "_for_HP1050C")) ;<--- (command "-plot" "j" ncan "Canon W8400 PG" fmt "M" "Q" "N" "L" "1=1" "-6,-6" "J" "andreas.ctb" "J" "J" "N" "N" "J" "N" "J") (command "-plot" "j" nhp "HP DesignJet 1050C" hfmt "M" "Q" "N" "L" "1=1" "0,0" "J" "andreas.ctb" "J" "J" "N" "N" "J" "N" "J") (princ) )
Zitat: ..."Falsch formatierte Liste in Eingabe"...
wird durch fehlende Klammern ausgelöst - hab Dir's oben ergänzt (siehe Markierung). Anstelle der 5 x (if ... kannst Du auch (cond) nehmen. Ansonsten hab ichs nicht getestet.------------------ Schöne Grüße Ernst www.geopaint.at 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: 07. Mai. 2008 19:52 <-- editieren / zitieren --> Unities abgeben: Nur für Obi-Wahn
Hi Andreas, hier fehlen die schliessenden Klammern: Code: (setq lot (getvar "ctab")) (setq ncan (strcat lot "_for_CW8400PG")) ;<----- (setq hfmt (strcat "Übergröße ISO: " fmt)) ;<----- (setq nhp (strcat lot "_for_HP1050C")) ;<-----
Ob der Plot-Befehl die richtigen Parameter hat, hab' ich aber nicht getestet.Grüsse, Henning ------------------ Henning Jesse [EDIT] Warum bekommt man beim Schreiben eigentlich keine Nachricht, dass das Thema schon erledigt ist [/EDIT] VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure
http://www.voxelman.de [Diese Nachricht wurde von wronzky am 07. Mai. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Obi-Wahn Mitglied Student
Beiträge: 31 Registriert: 30.07.2007
|
erstellt am: 08. Mai. 2008 18:14 <-- editieren / zitieren --> Unities abgeben:
Thx Geos und wronzky. Ich könnt mir selbst in den Hintern beissen dass ich den "Anfängerfehler" nicht gefunden hab. Anyway. Ich hab das Lisp jetzt geladen bekommen, aber wenn ich den Befehl 'dblprnt' meiner Lisp aufrufe bekomm ich die Fehlermeldung: "Befehl: Fehlerhafter Argumenttyp: stringp nil" Ich vermute mal dass da die Befehlsargumente was haben, aber wenn ich das manuell nachvollziehen will, gehts einwandfrei. Danke Andreas ------------------ Garten ist eine Kunstnatur 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: 08. Mai. 2008 19:03 <-- editieren / zitieren --> Unities abgeben: Nur für Obi-Wahn
Hi Andreas, ich denke, es liegt daran, dass Du fmt nicht immer gesetzt bekommst. Check mal Deine Layouts mit (getvar "limmax") und schau, ob auch Deinen Werte dabei sind. Wenn nicht, dann steht in fmt nil, und strcat liefert "Fehlerhafter Argumenttyp: stringp nil". [EDIT]ich würd's so: machen: Code: (setq xmax (car (getvar "limmax"))) (cond ((<= xmax 297.0) (setq fmt "A4")) ((<= xmax 420.0) (setq fmt "A3")) ((<= xmax 594.5) (setq fmt "A2")) ((<= xmax 841.0) (setq fmt "A1")) ((<= xmax 1189.0) (setq fmt "A0")) (t (setq fmt "A0")) ) ...
[/EDIT] Grüsse Henning
------------------ Henning Jesse VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure http://www.voxelman.de [Diese Nachricht wurde von wronzky am 08. Mai. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Obi-Wahn Mitglied Student
Beiträge: 31 Registriert: 30.07.2007
|
erstellt am: 08. Mai. 2008 19:35 <-- editieren / zitieren --> Unities abgeben:
Hi! Ich hab mal versucht das zu überprüfen, indem ich die Zeile
Code: (if (= (getvar "limmax") "1189.0 841.0") (setq fmt "A0"))
einfach in die Befehlszeile kopiert hab und ausgeführt hab.Als antwort hab ich nur ein 'nil' bekommen. Schaut also so aus, als währs das. Aber wenn ich die Zeile
Code: (getvar "limmax")
eingebe, bekomm ich das Format (1189.0 841.0) retour. Wo liegt also der Fehler? Is für mich irgendwie unlogisch....Danke für die Geduld Andreas [EDIT] ich habs mal schnell umgesetzt, aber jetzt bekomm ich "Fehlerhafter Argumenttyp: stringp (1189.0 841.0)" retour... [/edit] ------------------ Garten ist eine Kunstnatur [Diese Nachricht wurde von Obi-Wahn am 08. Mai. 2008 editiert.] 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: 08. Mai. 2008 19:43 <-- editieren / zitieren --> Unities abgeben: Nur für Obi-Wahn
|
Obi-Wahn Mitglied Student
Beiträge: 31 Registriert: 30.07.2007
|
erstellt am: 08. Mai. 2008 19:49 <-- editieren / zitieren --> Unities abgeben:
Hi! Danke, ich hab die PM's gerade gesehen. Die Edits von dir hab ich aber schon vorher umgesetzt gehabt. Ich hab das jetzt nach deinem Code abgeändert und mit car kommts zumindest an die Zeile Command. Das Problem ist, dass irgendwas noch immer nicht stimmt. wenn ich jetzt dblprnt eingebe, dann rattert ein jeder Parameter durch und ich bekomm in der Befehlszeile Zeilen à la: "Unbekannter Befehl "CANON W8400 PG". Drücken Sie F1-Taste für Hilfe" Komischerweise ist das aber nicht der erste string der übergeben wird. Denn die Variablen die im Command stehen werden nicht ausgegeben... Danke Andreas ------------------ Garten ist eine Kunstnatur 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: 08. Mai. 2008 19:58 <-- editieren / zitieren --> Unities abgeben: Nur für Obi-Wahn
Hi Andreas, Da fällt mir nur auf die schnelle auf, dass Du einmal mit (getvar "ctab") den Namen des aktuellen Layouts ausliest, dann daran den Plotternamen anhängst, und das ganze als neuen Layoutnamen zum Plotten verwendest. Gibt es denn die Layouts auch (ctab + Plottername)? Grüsse, Henning ------------------ Henning Jesse VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure http://www.voxelman.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Obi-Wahn Mitglied Student
Beiträge: 31 Registriert: 30.07.2007
|
erstellt am: 08. Mai. 2008 20:13 <-- editieren / zitieren --> Unities abgeben:
Dammit, ich könnt mir echt in den Hintern beissen. Das Command für den Canon geht jetzt einwandfrei durch (abgesehen davon, dass ich keine Speichern unter Dialogbox angezeigt bekomme und das Plotfile also auch nicht gespeichert wird) aber nach der übergabe des Papierformats für den HP spinnt er wieder. Ich vermute das hat was mit dem Leerzeichen hinter dem Papierformat zu tun. Was kann ich dagegen tun? Tausend Dank Andreas [EDIT] HaHaaa, Schurke! Der Formatname von hfmt war falsch. Das Problem was ich dennoch hab ist, dass kein Speicherndialog angezeigt wird, aber ein Plotfile mit dem namen N.plt angelegt wird. [/EDIT]
------------------ Garten ist eine Kunstnatur [Diese Nachricht wurde von Obi-Wahn am 08. Mai. 2008 editiert.] 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: 08. Mai. 2008 20:21 <-- editieren / zitieren --> Unities abgeben: Nur für Obi-Wahn
|
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: 08. Mai. 2008 20:27 <-- editieren / zitieren --> Unities abgeben: Nur für Obi-Wahn
Zitat: Original erstellt von Obi-Wahn:
Das Problem was ich dennoch hab ist, dass kein Speicherndialog angezeigt wird, aber ein Plotfile mit dem namen N.plt angelegt wird.
Dann wird wohl einer Deiner "N" Parameter als Plotfilename genommen? Jetzt musst Du nur noch das richtige "N" gegen [Plotfilename] austauschen. Grüsse, Henning ------------------ Henning Jesse VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure http://www.voxelman.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Obi-Wahn Mitglied Student
Beiträge: 31 Registriert: 30.07.2007
|
erstellt am: 08. Mai. 2008 20:28 <-- editieren / zitieren --> Unities abgeben:
Ja, die anderen Formate haben auch (Querformat) und (Hochformat). Das zu implementieren sollte ich (hoffentlich) schaffen. Wenn nicht meld ich mich wieder, ok?!? Tausend Dank für alles Andreas ------------------ Garten ist eine Kunstnatur Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Obi-Wahn Mitglied Student
Beiträge: 31 Registriert: 30.07.2007 P4m Single Core - 1.6 GHz 100 GB HDD 1 GB RAM -------- AutoCAD Architectural Desktop 2007
|
erstellt am: 05. Sep. 2008 14:39 <-- editieren / zitieren --> Unities abgeben:
Hallo wiedermal! Es ist zwar schon etwas länger her, aber ich hab wiedermal das Lisp ausgegraben. Mittlerweile hab ich das Lisp soweit erweitert, dass auch hochformate von A4-A0 verwendet werden können, und einen Check (den ich aber noch nicht getestet hab), dass nicht einfach aus dem Modell geplottet wird. Soweit ich das Lisp getestet hab, funktioniert's auch einwandfrei, nur hat es noch 2 Mankos: 1.) Im Plot-Command geb ich die .ctb auch an. Doch das ist noch statisch. Schön währe ein .ctb-Auswahldialog, jedoch hab ich keinen Plan, wie ich das umsetzen soll. 2.) Für eine bessere Lesbarkeit währe es gut, wenn die zwei ellenlange command-befehle irgendwie unterteilt werden. Meine Frage ist nun, ob man das so einfach machen kann, oder nicht. Die Lisp is im Anhang. Danke im voraus O-W ------------------ Garten ist eine Kunstnatur 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: 05. Sep. 2008 15:11 <-- editieren / zitieren --> Unities abgeben: Nur für Obi-Wahn
Hallo, zumindest die 2. Frage geht schnell: ja, geht. statt (command "linie" '(0 0 0) '(1 1 1) "") kannst Du auch schreiben (command "linie") (command '(0 0 0)) (command '(1 1 1)) (command "") oder (command "linie" '(0 0 0) '(1 1 1) "" ) Das mit der Auswahl der ctb ist glaube ich doch ein bischen zu kompliziert... Grüsse, Henning ------------------ Henning Jesse VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure http://www.voxelman.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Obi-Wahn Mitglied Student
Beiträge: 31 Registriert: 30.07.2007
|
erstellt am: 05. Sep. 2008 15:55 <-- editieren / zitieren --> Unities abgeben:
Danke für die Antwort. Von meinen Sonstigen "programmierstücken" bin ich es gewohnt, dass ein komma, punkt, o.ä. in einer fortlaufenden codezeile steht. Anyway. Wieder was dazugelernt. Zu meiner ersten Frage: Wieso? Ich hab etwas gelesen, und es sollte doch mit getfiled funktionieren, oder gibts da was unüberwindliches, was ich nicht kenn? Danke O-W ------------------ Garten ist eine Kunstnatur 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: 05. Sep. 2008 16:18 <-- editieren / zitieren --> Unities abgeben: Nur für Obi-Wahn
Wenn Du weisst, WO die Plotstiltabellen liegen (Optionen - Dateien ...), und der Benutzer nicht trotzdem irgendeine andere zufällig auswählt, dann hast Du recht. Dann geht's natürlich mit (vl-filename-directory (getfiled "CTB auswählen" (getvar "acadprefix") "ctb" 0)) Ich denke halt immer zu kompliziert, damit das Prog auch auf anderen Rechnern läuft, war ich in Gedanken bei: 1) Voreinstellungen auslesen - Pfad zu ctb ermitteln 2) Namen der ctb auslesen 3) Dialogfeld zur Auswahl programieren Grüsse, Henning ------------------ Henning Jesse VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure http://www.voxelman.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Obi-Wahn Mitglied Student
Beiträge: 31 Registriert: 30.07.2007
|
erstellt am: 05. Sep. 2008 16:55 <-- editieren / zitieren --> Unities abgeben:
Hi und Danke für den code. Das problem was jetzt dabei auftaucht ist dieses, dass beim dialog standardmäßig der Desktop gewählt wird. ICH weis zwar, dass der ordner in %Allusersprofile%\Anwendungsdaten\Autodesk\ADT 2007\deu\Plot Styles ist (standardmäßig), aber wenn ich das Lisp weitergebe (was mit ziemlicher sicherheit passieren wird) wissen es die User nicht (die sind -ohne lästern zu wollen- schon froh, wenn der computer startet). ich hab auch schon mit ein paar sachen herumgespielt, und sogar an ein splitten von (getvar "ACADPREFIX") gedacht, aber das ist immer mit der gefahr verbunden, dass auf einem anderen Rechner das Lisp nicht funktioniert. Gibts nicht vllt. eine Systemvariable die man abfragen kann, die den "Plot Styles" ordner ausgibt, oder so? Danke O-W ------------------ Garten ist eine Kunstnatur 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: 05. Sep. 2008 21:24 <-- editieren / zitieren --> Unities abgeben: Nur für Obi-Wahn
Hallo Andreas, und da wären wir schon bei Punkt 1 meines letzten Gedankenganges... Aber ich will mal nicht so sein: Code: (setq ctbPath (vla-get-printerstylesheetpath (vla-get-files (vla-get-preferences (vlax-get-acad-object)))))
Grüsse, Henning[EDIT] Nicht vergessen ein (vl-load-com) am Anfang des Codes [/EDIT] ------------------ Henning Jesse VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure http://www.voxelman.de [Diese Nachricht wurde von wronzky am 05. Sep. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Obi-Wahn Mitglied Student
Beiträge: 31 Registriert: 30.07.2007
|
erstellt am: 06. Sep. 2008 11:27 <-- editieren / zitieren --> Unities abgeben:
Tausend Dank! Das war genau das, was mir gefehlt hat. Ich werd heute die lisp noch etwas testen, und die finale version hier mal einstellen, wenn gewünscht. Nochmals Danke O-W ------------------ Garten ist eine Kunstnatur Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Obi-Wahn Mitglied Student
Beiträge: 31 Registriert: 30.07.2007 P4m Single Core - 1.6 GHz 100 GB HDD 1 GB RAM -------- AutoCAD Architectural Desktop 2007
|
erstellt am: 09. Sep. 2008 13:17 <-- editieren / zitieren --> Unities abgeben:
Noch eine kurze Frage: Ich vergleiche die Variabe ctab, und wenn die auf Model steht, dann soll die funktion abgebrochen werden. Wenn ich aber das so schreibe: Code: (setq layout (getvar "ctab")) (if (= layout "Model") (print "FEHLER: Das Drucken mit 'DBLPRNT' ist nur im Layout möglich") (princ) )
dann arbeitet die Funktion aber weiter, was zur folge hat, dass es dann später fehlermeldungen regnet. Wie kann ich das quasi mittendrin beenden?Danke
------------------ Garten ist eine Kunstnatur Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 09. Sep. 2008 13:25 <-- editieren / zitieren --> Unities abgeben: Nur für Obi-Wahn
(exit) oder (quit) ? aber du kannst deine Funktion auch in den ELSE-Zweig des If packen ------------------ - 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 |
Obi-Wahn Mitglied Student
Beiträge: 31 Registriert: 30.07.2007
|
erstellt am: 09. Sep. 2008 13:32 <-- editieren / zitieren --> Unities abgeben:
Aber geben (exit) oder (quit) nicht fehlermeldungen aus? Ich denke ich bin glücklich mit else. Thx Cadmium. Manchmal seh ich den Wald vor lauter Bäumen nicht. EDIT: Ok, jetzt is es offiziell, ich bin verbatcht. Nach 3 Tagen Batch schreiben hab ich keinen plan wie die syntax von if-then-else bei AutoLISP is. Kann mir mal jemand bitte das Brett vorm Kopf wegnehmen. Bei Batch hab ich immer geschrieben: If %a%==1 ( :: tuwas ) ELSE ( :: tuwasanderes ) Wie geht das in lisp nochmal? Danke Andreas ------------------ Garten ist eine Kunstnatur [Diese Nachricht wurde von Obi-Wahn am 09. Sep. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hunchback Mitglied CAD-Tech
Beiträge: 63 Registriert: 10.10.2007 Win2K AutoCAD 2007
|
erstellt am: 09. Sep. 2008 15:38 <-- editieren / zitieren --> Unities abgeben: Nur für Obi-Wahn
(if (Bedienung) (Tu dieses) [wenn Bedienung erfüllt] (Tu jenes) [wenn Bedienung nicht erfüllt],optional ) oder (if (Bedienung) (progn [mit progn kannst (Tu dieses) Du mehrere Ausdrücke (Tu dieses auch) zusammenfassen. (und das tu auch noch) ] ) (tu jenes) [wenn Bedienung nicht erfüllt] ) Grüße Martin ------------------ You seem (in my (humble) opinion (which doesn't mean much)) to be (or possibly could be) more of a Lisp programmer (but I could be (and probably am) wrong). Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Obi-Wahn Mitglied Student
Beiträge: 31 Registriert: 30.07.2007
|
erstellt am: 09. Sep. 2008 16:15 <-- editieren / zitieren --> Unities abgeben:
*seufz* Irgendwie blick ich durch LISP anscheinend doch nicht durch... Ich hab mehrere Funktionen in einem Lispfile, das sich nicht laden lies. Dann hab ich die Funktionen separat abgespeichert, und dabei ist folgendes herausgekommen: Funktion...........Fehler ------------------------------- BLATTRAHMEN........Syntaxfehler DBLPRNT............Syntaxfehler FISCHGRAT..........Fehlerhafter Argumenttyp: stringp SCHIFFBODEN........Fehlerhafter Argumenttyp: stringp FLIESEN_GEREIHT....Fehlerhafter Argumenttyp: stringp FLIESEN_VERSETZT...Fehlerhafter Argumenttyp: stringp Ich hab alle Klammern gecheckt, und hab die Mathematischen Operationen nach Beispielen geschrieben. Kurz: Ich hab keine Ahnung woran es liegt. Ich würde mich sehr über eure Hilfe freuen. 1000 Dank im Voraus Andreas BTW: Fals erforderlich: Ich verwende ADT2007 ------------------ Garten ist eine Kunstnatur 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: 09. Sep. 2008 17:23 <-- editieren / zitieren --> Unities abgeben: Nur für Obi-Wahn
Habs jetzt nicht ausprobiert, aber: entweder (defun C:BLATTRAHMEN( / FMT INSP OFANG_BAK)...) oder (defun BLATTRAHMEN ( FMT / INSP OFANG_BAK)...) Mit (defun c:xyz ... erzeugst Du ein "Command", willst Du FMT übergeben, musst eine "Funktion" (kein "c:") verwenden. Die wird dann aber so (blattrahmen fmt) aufgerufen. Diesen Aufruf kannst allerdings wieder in ein "Command" einbauen.
------------------ Schöne Grüße Ernst www.geopaint.at Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Obi-Wahn Mitglied Student
Beiträge: 31 Registriert: 30.07.2007
|
erstellt am: 09. Sep. 2008 17:30 <-- editieren / zitieren --> Unities abgeben:
Aha. Wenn ich das als Button oder Menüeintrag deffiniere, kann ich dass dann als Code: ^C^C(BLATTRAHMEN "A0")
deffinieren? Oder muss ich da wieder eine separates command anlegen?------------------ Garten ist eine Kunstnatur 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: 10. Sep. 2008 07:01 <-- editieren / zitieren --> Unities abgeben: Nur für Obi-Wahn
|
Obi-Wahn Mitglied Student
Beiträge: 31 Registriert: 30.07.2007
|
erstellt am: 10. Sep. 2008 11:23 <-- editieren / zitieren --> Unities abgeben:
Also: Ich hab jetzt vorerst mal die Routinen "BLATTRAHMEN" und "DBLPRNT" zum laufen gebracht. Woran es bei "BLATTRAHMEN" lag, kann ich nicht sagen, aber es funktioniert vorerst mal. Selbiges bei "DBLPRNT". Aber ich vermute, da hat es an (progn gelegen, denn ich habs umstrukturiert, und es funktioniert. Was noch hackt sind die "schraffurgeneratoren". Das ist nur ein (glaub ich) kleines Problem, da brauch ich eh keinen eigenen Thread aufmachen, oder? Jedenfalls dürfte das mit dem strcat zusammenhängen. Ich bekomme über 'getreal' die Abmessungen, und will sie dann bei Strcat zusammenfügen zur Schraffurbezeichnung. Das funktioniert aber nicht. Ich hab versucht das mit 'itoa' zu einen string umzuwandeln, aber dann bekomme ich immer: "Fehlerhafter Argumenttyp: fixnump:" Code: (defun C:FISCHGRAT (/ LEN BRE CAL_A CAL_B CAL_C FIL FNAME) (setq LEN (getreal "\nLänge eines Bodenbretts: ")) (setq BRE (getreal "\nBreite eines Bodenbretts: ")) (setq CAL_A (+ LEN BRE)) (setq CAL_B (- LEN BRE)) (setq CAL_C (sqrt (/ (* LEN LEN) 2))) (setq FNAME (strcat "Fischgrat_" (itoa BRE) "-" (itoa LEN))) (setq FIL (open (strcat FNAME ".pat") "a")) (write-line ";; Hatch Pattern created using HatchGen Ver. 0.1 coded by Obi-Wahn" FIL) (write-line ";; Download avaliable at www.securityvision.ch" FIL) (write-line (strcat "*" FNAME ", Parkettboden-Fischgrat " (itoa BRE) " x " (itoa LEN) " mm") FIL) (write-line (strcat "45, 0, 0, " (itoa BRE) ", " (itoa BRE) ", " (itoa CAL_A) ", -" (itoa CAL_B)) FIL) (write-line (strcat "315, " (itoa CAL_C) ", " (itoa CAL_C) ", " (itoa BRE) ", -" (itoa BRE) ", " (itoa CAL_A) ", -" (itoa CAL_B)) FIL) (close FIL) (princ) )
Soweit mal ein beispiel mit Itoa. Tut mir leid, wenn ich euch sekieren sollte, aber is wichtig für mich. Ich versprech auch, ich kauf mir ein (einfach verständliches) AutoLISP-Buch. 1000 Dank Andreas ------------------ Garten ist eine Kunstnatur Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hunchback Mitglied CAD-Tech
Beiträge: 63 Registriert: 10.10.2007 Win2K AutoCAD 2007
|
erstellt am: 10. Sep. 2008 12:24 <-- editieren / zitieren --> Unities abgeben: Nur für Obi-Wahn
ITOA verlang als Argument eine Integer (=Ganzzahl). GETREAL liefert aber reelle Zahlen (=Dezimalzahlen). Probier mal RTOS. Grüße Martin ------------------ You seem (in my (humble) opinion (which doesn't mean much)) to be (or possibly could be) more of a Lisp programmer (but I could be (and probably am) wrong). Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Obi-Wahn Mitglied Student
Beiträge: 31 Registriert: 30.07.2007
|
erstellt am: 10. Sep. 2008 13:17 <-- editieren / zitieren --> Unities abgeben:
|
Obi-Wahn Mitglied Student
Beiträge: 31 Registriert: 30.07.2007 P4m Single Core - 1.6 GHz 100 GB HDD 1 GB RAM -------- AutoCAD Architectural Desktop 2007
|
erstellt am: 10. Sep. 2008 14:37 <-- editieren / zitieren --> Unities abgeben:
Ok, ein letztes noch. Die Schraffuren werden in den Eigenen Dateien gespeichert, nicht im richtigen Ordner (C:\Dokumente und Einstellungen\<user>\Anwendungsdaten\Autodesk\ADT 2007\deu\Support\pats). Ich hab es zwar geschafft, dass ich den Pfad aus der Registry extrahieren konnte, aber in meiner "vorfreude" hab ich nicht gleich gemerkt dass das der "All Users"-Pfad ist, und nicht der eigene. In der Registry konnte ich auch keinen Pfad finden, der in meinen Ordner verweist. Es gibt zwar einen, aber der ist in einem Subkey aec, und der is ja nur bei Architectural Desktop sachen dabei, oder? Na jedenfalls würde ich mich freuen, wenn mich einer nochmal bei der Hand nimmt, und mir sagt, wo ich so nen pfad herbekomme. Danke Andreas ------------------ Garten ist eine Kunstnatur Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hunchback Mitglied CAD-Tech
Beiträge: 63 Registriert: 10.10.2007 Win2K AutoCAD 2007
|
erstellt am: 10. Sep. 2008 15:09 <-- editieren / zitieren --> Unities abgeben: Nur für Obi-Wahn
(getvar LOCALROOTPREFIX) sollte dir den Pfad zum Support-ordner liefern (mit strcat noch "/Support" anhängen). nicht getestet... Grüße Martin ------------------ You seem (in my (humble) opinion (which doesn't mean much)) to be (or possibly could be) more of a Lisp programmer (but I could be (and probably am) wrong). Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Obi-Wahn Mitglied Student
Beiträge: 31 Registriert: 30.07.2007
|
erstellt am: 10. Sep. 2008 15:20 <-- editieren / zitieren --> Unities abgeben:
|
Hunchback Mitglied CAD-Tech
Beiträge: 63 Registriert: 10.10.2007 Win2K AutoCAD 2007
|
erstellt am: 10. Sep. 2008 15:22 <-- editieren / zitieren --> Unities abgeben: Nur für Obi-Wahn
|