| | | 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: funktionsaufruf (1031 mal gelesen)
|
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 08. Mai. 2003 08:45 <-- editieren / zitieren --> Unities abgeben:
hi lispler! komme hier bei einem problem nicht weiter, kann mir aber nicht erklären warum. habe folgende funktion erstellt (DEFUN t_2ip (transfpar kleinpunkt / o a r0 h0 ) (SETQ o (nth 0 transfpar) a (nth 1 transfpar) r0 (nth 2 transfpar) h0 (nth 3 transfpar) rechtsw (nth 0 kleinpunkt) hochwert (nth 1 kleinpunkt) ) (list (+ r0 (* o hochwert) (* a rechtsw)) (- (+ h0 (* a hochwert)) (* o rechtswert))) ) beim aufruf von (t_2ip transpar (CDR(ASSOC 10 as))) bekomme ich folgende fehlermeldung ; Fehler: Fehlerhafter Argumenttyp: numberp: nil WARUM?????` ciao georg
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 08. Mai. 2003 08:49 <-- editieren / zitieren --> Unities abgeben:
|
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1217 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 08. Mai. 2003 09:38 <-- editieren / zitieren --> Unities abgeben: Nur für gmk
|
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 08. Mai. 2003 09:48 <-- editieren / zitieren --> Unities abgeben:
|
mapcar Mitglied CADmin
Beiträge: 1250 Registriert: 20.05.2002 Time flies like an arrow, fruit flies like a banana (Groucho Marx)
|
erstellt am: 08. Mai. 2003 10:40 <-- editieren / zitieren --> Unities abgeben: Nur für gmk
|
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 08. Mai. 2003 11:14 <-- editieren / zitieren --> Unities abgeben:
@axel input war schon o.k. (setq rechtsw (nth 0 kleinpunkt)) war der grund diese zuweisung ergab nil, aber warum ????? hab jetzt "rechtsw" und "hochwert" als lokale variablen definiert; damit läuft's. abgesehen davon war in der zeile (list (+ r0 (* o hochwert) (* a rechtsw)) (- (+ h0 (* a hochwert)) (* o rechtswert))) auch noch ein fehler drin: rechtsw <--> rechtswert (soll natürlich die gleiche variable sein). ciao georg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mapcar Mitglied CADmin
Beiträge: 1250 Registriert: 20.05.2002 Time flies like an arrow, fruit flies like a banana (Groucho Marx)
|
erstellt am: 08. Mai. 2003 11:53 <-- editieren / zitieren --> Unities abgeben: Nur für gmk
Georg, das widerspricht sich aber. Wenn (nth 0 kleinpunkt) nil ergab, dann kann das Argument kleinpunkt nicht OK gewesen sein. Da du jetzt noch von lokalen Variablen anfängst - r0 und h0 sind überflüssige Variablen, sie werden nur an einer einzigen Stelle gebraucht. rechtswert und hochwert sollten natürlich lokal gemacht werden, o und a ebenso. Da diese 4 Werte jeweils zweimal gebraucht werden, ist das ok. Dass die nicht in der FA-Liste waren, habe ich vorhin übersehen, aber es kann nicht die Ursache des Fehlers gewesen sein. Ich würde auch nicht mit nth zugreifen - das macht eigentlich nur Sinn, wenn die Position in einer Variablen steckt, also (nth i ...) in einer Schleife. Mein Vorschlag also: (defun t_2ip(transfpar kleinpunkt / o a rechtswert hochwert) (setq o(car transfpar) a(cadr transfpar) rechtswert(car kleinpunkt) hochwert(cadr kleinpunkt) ) (list (+(caddr transfpar)(* o hochwert)(* a rechtswert)) (-(+(cadddr transfpar)(* a hochwert))(* o rechtswert)) ) ) Gruss, Axel ------------------ Meine AutoLisp-Seiten Meine private Homepage Mein Angriff auf dein Zwerchfell Mein Lexikon der Fotografie Mein gereimtes Gesülze Meine Überzeugung... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gmk Mitglied Dipl.-Ing.(FH) Vermessung
Beiträge: 669 Registriert: 23.10.2002 Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM
|
erstellt am: 08. Mai. 2003 14:02 <-- editieren / zitieren --> Unities abgeben:
@axel habe an "kleinpunkt" nichts verändert !?!?!? r0 und h0 ist klar. waren noch relikte aus der formel. würde gerne mal den quellcode von car und cadr sehen. vielleicht werden da die "d" gezählt und dann an nth übergeben .......... trotzdem danke für die hilfe. ciao georg
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mapcar Mitglied CADmin
Beiträge: 1250 Registriert: 20.05.2002 Time flies like an arrow, fruit flies like a banana (Groucho Marx)
|
erstellt am: 09. Mai. 2003 01:12 <-- editieren / zitieren --> Unities abgeben: Nur für gmk
nth/c?r: Das ist keine Frage der Effizienz, sondern der Konventionen. Warum z.B. gibt es die Funktionen (not) und (null) - intern sind die völlig identisch. Aber man verwendet not, wenn's um die logische Negation geht, und null, wenn man auf leere Listen testet. Und genauso nimmt man für Punkte(XYZ) eben c?r, aber für lange Listen nth. Und Schleifenzähler heissen immer i,j,k oder so - sicher, man kann sie auch ich-moechte-in-urlaub-fahren nennen. Das macht's aber nicht einfacher lesbar;-) car, cdr und cons sind übrigens die Funktionen, auf die sich der ganze Lisp-Interpreter aufbaut. cadr ist ja nur (car(cdr ...)), das ist eine Randerscheinung. Frohes Schaffen noch! Axel ------------------ Meine AutoLisp-Seiten Meine private Homepage Mein Angriff auf dein Zwerchfell Mein Lexikon der Fotografie Mein gereimtes Gesülze Meine Überzeugung... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|