| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: Hilfe bei funktion (1038 mal gelesen)
|
chris888 Mitglied Technischer Zeichner
Beiträge: 141 Registriert: 11.11.2010 AutoCAD 2002, 2005, 2008, 09, 10, 11
|
erstellt am: 11. Mai. 2011 09:53 <-- editieren / zitieren --> Unities abgeben:
morgen leutz!! hab hier mal ne fuktion u steh mal wieder aufm schlauch. brauch hilfe beim berichtigen: (defun c:mmm()(command "_dimlinear" ((if (/= nil(setq dim (getstring "\nBitte <> Prä- oder Suffix eingeben: ")))(setvar "dimpost" dim)(dimm)))(setq dimm(getvar "dimpost")))) Denke das problem liegt an der IF funktion. mfg chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 11. Mai. 2011 09:55 <-- editieren / zitieren --> Unities abgeben: Nur für chris888
|
chris888 Mitglied Technischer Zeichner
Beiträge: 141 Registriert: 11.11.2010 AutoCAD 2002, 2005, 2008, 09, 10, 11
|
erstellt am: 11. Mai. 2011 10:08 <-- editieren / zitieren --> Unities abgeben:
|
neurosis Mitglied dipl.ing.
Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 11. Mai. 2011 10:09 <-- editieren / zitieren --> Unities abgeben: Nur für chris888
hallo chris, es liegt, wie cadmium schon geschrieben hat, am rueckgabewert von getstring, aber auch an deiner klammersetzung so wuerde es richtig ausschauen:
Code: (defun c:mmm( / dim dimm) (command "_dimlinear" (if (/= "" (setq dim (getstring "\nBitte <> Prä- oder Suffix eingeben: "))) (setvar "dimpost" dim) dimm ) (setq dimm(getvar "dimpost")) ) )
edit: da die variable dimm am anfang noch keinen wert besitzt, kommt es aber bei eingabe von "" zu einem fehler. das musst du also noch abfangen. ------------------ Marco Heuer www.arc-aachen.de Airport Office [Diese Nachricht wurde von neurosis am 11. Mai. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
chris888 Mitglied Technischer Zeichner
Beiträge: 141 Registriert: 11.11.2010 AutoCAD 2002, 2005, 2008, 09, 10, 11
|
erstellt am: 11. Mai. 2011 10:22 <-- editieren / zitieren --> Unities abgeben:
; Fehler: Fehlerhafte Funktion: (defun c:mmm( / dim dimm) (command "_dimlinear" ((if (/= "" (setq dim (getstring "\nBitte <> Prä- oder Suffix eingeben: "))) (setvar "dimpost" dim) dimm ) (setq dimm(getvar "dimpost"))) )
ohne die zusätzliche klammer funktioniert es aber nicht weil sonst der befehl mit nil beendet wird. Auch wenn dabei eine unschöne Fehler Funktion gemeldet wird.... Danke für die schnelle hilfe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neurosis Mitglied dipl.ing.
Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 11. Mai. 2011 10:30 <-- editieren / zitieren --> Unities abgeben: Nur für chris888
|
chris888 Mitglied Technischer Zeichner
Beiträge: 141 Registriert: 11.11.2010 AutoCAD 2002, 2005, 2008, 09, 10, 11
|
erstellt am: 11. Mai. 2011 10:34 <-- editieren / zitieren --> Unities abgeben:
|
neurosis Mitglied dipl.ing.
Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 11. Mai. 2011 10:46 <-- editieren / zitieren --> Unities abgeben: Nur für chris888
gib doch mal spasseshalber in der konsole das folgende ein: Code: ((if (/= "" (setq dim (getstring "\nBitte <> Prä- oder Suffix eingeben: "))) (setvar "dimpost" dim) dimm ) (setq dimm(getvar "dimpost")))
und gib irgendeine zahl, z.b. 45, an. was erhaelst du?
------------------ Marco Heuer www.arc-aachen.de Airport Office Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
chris888 Mitglied Technischer Zeichner
Beiträge: 141 Registriert: 11.11.2010 AutoCAD 2002, 2005, 2008, 09, 10, 11
|
erstellt am: 11. Mai. 2011 11:02 <-- editieren / zitieren --> Unities abgeben:
ich erhalte ; Fehler: Fehlerhafte Funktion: "10" Aber gib doch mal spaßeshalber (if (/= "" (setq dim (getstring "\nBitte <> Prä- oder Suffix eingeben: "))) (setvar "dimpost" dim) dimm ) (setq dimm(getvar "dimpost")) ein wie deine funkiton war.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 11. Mai. 2011 11:10 <-- editieren / zitieren --> Unities abgeben: Nur für chris888
|
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 11. Mai. 2011 11:13 <-- editieren / zitieren --> Unities abgeben: Nur für chris888
ich glaube sowas.... Code: (defun c:mmm (/ dpost dpostold str) (setq dpostold (getvar "dimpost")) (initget "P S") (or (setq dpost (getkword "\n[Prä- oder Suffix] <P>: ") ) (setq dpost "P") ) (if (and (setq str (getstring T "\nBitte String für Prä- oder Suffix eingeben: ") ) (= dpost "P") ) (setvar "dimpost" (strcat str "<>")) (setvar "dimpost" (strcat "<>" str)) ) (command "_dimlinear" ) (while (/= (getvar "CMDACTIVE") 0) (command pause)) (setvar "dimpost" dpostold) (princ) )
------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." 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: 11. Mai. 2011 11:17 <-- editieren / zitieren --> Unities abgeben: Nur für chris888
Zitat: ; Fehler: Fehlerhafte Funktion: "10"
Das liegt an Deiner doppelten Klammer. In Lisp werden die Klammern von innen nach außen evaluiert. z.B. ((+ 2 1)) -> innere Klammer (+ 2 1) ergibt 3 im nächsten Schritt steht dann da: (3) und wird evaluiert: -> und an dieser Stelle sagt der Interpreter: "3" ist keine Funktion. 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 |
chris888 Mitglied Technischer Zeichner
Beiträge: 141 Registriert: 11.11.2010 AutoCAD 2002, 2005, 2008, 09, 10, 11
|
erstellt am: 11. Mai. 2011 11:18 <-- editieren / zitieren --> Unities abgeben:
hey cadmi passt eigentlich schon. der befehl funktioniert ja. Problem war nur neurosis meint warscheinlich das problem liegt an seiner funktion stimmt aber nicht. Der Befehl "_dimlinear" (hallo)(hallo) ist halt einfach was anderes als Der Befehl "_dimlinear" ((hallo)(hallo)) das war das ganze diskusionsproblem -.- ich kriege halt eine fehlermeldung da dies keien funktion ist mfg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neurosis Mitglied dipl.ing.
Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 11. Mai. 2011 11:23 <-- editieren / zitieren --> Unities abgeben: Nur für chris888
mache ich mir mal den spass als erstes gebe ich ein:
Code:
(if (/= "" (setq dim (getstring "\nBitte <> Prä- oder Suffix eingeben: "))) (setvar "dimpost" dim) dimm )
was passiert: - ich werde nach einem string gefragt. - wenn ich eine zahl eingebe, steht in der variablen "dim" der wert als string und wird der sysvar "dimpost" zugewiesen. - wenn ich enter druecke, steht in der variablen "dim" der wert "". da dieser wert der variablem "dim" gleich "" ist, wird der wert der variablen "dimm" zurueckgegeben. dieser ist am anfang nil. als zweites gebe ich ein:
Code: (setq dimm(getvar "dimpost"))
jetzt wird der variablen "dimm" der wert der sysvar "dimpost" zugewiesen. wo liegt jetzt denn dein problem? edit: genau! du bekommst eine fehlermeldung, wenn du schreibst ((if ...))
genau darauf wollte ich dich hinweisen, dass es etwas anderes ist als (if ...) edit 2: da ich selber keine command-aufrufe im code verwende, war mir nicht bewusst, dass "_dimlinear" solche argumente ueberhaupt nicht benoetigt. mir ging es ausschliesslich um den if-ausdruck, und der war falsch.
------------------ Marco Heuer www.arc-aachen.de Airport Office [Diese Nachricht wurde von neurosis am 11. Mai. 2011 editiert.] [Diese Nachricht wurde von neurosis am 11. Mai. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |