| |
| 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: Gleiche Punkte oder doch nicht!? (556 mal gelesen)
|
CADwiesel Moderator CAD4FM UG
Beiträge: 1989 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 13. Feb. 2003 11:32 <-- editieren / zitieren --> Unities abgeben:
Hai Ich hab 'ne Frage zu einer Gleicheitsprüfung. Diese Liste LI => ((-41.1235 -34.1954) (-41.1235 -34.1954) (-41.1235 -34.1954)) Alle Prüfungen mit =, eq, equal geben mir aber nil zurück: (= (car LI) (cadr LI)) (eq (car LI) (cadr LI)) (equal (car LI) (cadr LI)) wiso????? wie kann ich als Ergebniss T bekommen???? HÜLFE
------------------ Gruß CADwiesel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cad-lisp Mitglied Holztechniker
Beiträge: 12 Registriert: 13.02.2003
|
erstellt am: 13. Feb. 2003 13:00 <-- editieren / zitieren --> Unities abgeben: Nur für CADwiesel
Hallo CADwiesel, hab es gerade einmal ausprobiert, bei mir klapp es mit equal. Kann es sein, das mit der Punktliste etwas nicht stimmt? (setq li '((-41.1235 -34.1954) (-41.1235 -34.1954) (-41.1235 -34.1954))) (= (car LI) (cadr LI)) ;=> ergibt 'nil (eq (car LI) (cadr LI)) ;=> ergibt 'nil (equal (car LI) (cadr LI)) ;=> ergibt 'T Gruß cad-lisp 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: 13. Feb. 2003 13:34 <-- editieren / zitieren --> Unities abgeben:
Îch hab's jetzt schon so versucht: (equal (list (nth 0(car LI))(nth 1(car LI)))(list (nth 0(cadr LI))(nth 1(cadr LI))) ) aber das Ergebniss ist immernoch nil! Ich werde jetzt noch mal einen Versuch machen die Geschichte pro Zahlenwert zu überprüfen. Aber das kann's doch nicht sein!!! ------------------ Gruß CADwiesel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 13. Feb. 2003 16:16 <-- editieren / zitieren --> Unities abgeben: Nur für CADwiesel
Hi CADwiesel, das ist ein Problem der 16 internen Stellen. Irgendwo scheint da eine noch so kleine Abweichung zu sein. Entweder bei equal eine Abweichung zulassen oder (was zwar funktioniert aber mit Vorsicht zu handhaben ist) mit (rtos..) einen String und mit (atof...) wieder eine Zahl draus machen. Bin darüber auch schon oft gestolpert, gerade wenn man z.B. errechnete Schnittpunkte von Linien mit z.B Einfügepunkten von Blöcken vergleicht. Da nützt es nichts, dass man genau weiß dass man den Block auf dem Schnittpunkt eingefügt hat. Aber was Besseres mir ist auch nicht eingefallen. Grüße Holger ------------------ Holger Brischke CADlon - Lisp over night! Wieder 2 neue Tool's im FreeDownload Wissen wie es gemacht wird? Jetzt Quellcode für die Hälfte 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: 13. Feb. 2003 16:35 <-- 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: 14. Feb. 2003 10:33 <-- editieren / zitieren --> Unities abgeben: Nur für CADwiesel
Hi Mr. CADWiesel, muss auch mal wieder meinen Senf dazugeben: (= ...) testet nur numerische Werte oder Zeichenketten, scheidet also aus. (eq ...) testet auf Speicher-Identität, also ob die zwei Symbole auf den selben Node zeigen. Das ist hier sicherlich nicht gegeben, deswegen scheidet auch eq für solche Zwecke aus. Bleibt also (equal ...) als einzig anwendbare Möglichkeit. Bei mir kommt da übrigens auch T, wenn ich deine Liste kopiere und es damit ausprobiere. Es ist mit Sicherheit das, was Holger sagt. >>Die Punkte sind deffinitiv deckungsgleich auch in der 120 Stelle >>nach'm Komma. Genau da liegt dein Problem: Woher willst du das denn wissen, wenn du immer nur nil kriegst? Das hängt doch sogar vom Hauptprofessor ab (bei den ersten Pentiums waren Abweichungen noch ein Skandal, heute ist's eher normal). Taste dich mit (equal ... ... fuzz) an die Abweichung ran. Gruss, Axel
------------------ http://www.tutorial.autolisp.info
http://www.advanced.autolisp.info
http://www.activex.autolisp.info 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: 17. Feb. 2003 08:41 <-- editieren / zitieren --> Unities abgeben:
Ich kann deffinitiv sagen, dass die Punkte deckungsgleich sind. Was ich auch nicht verstehe ist, dass die Punkte, die als Werte in der Liste stehen ja doch eigentlich bezugslose Zahlenkolonnen sind und somit doch auch 'nur den dargestellten Wert haben. Ich habe mir jetzt tatsächlich so beholfen, wie Holger beschrieben hat (rtos/atof) und so klappt's. Eigentlich blöd.
------------------ Gruß CADwiesel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HBo Ehrenmitglied Maschinenbaukonstrukteur
Beiträge: 1563 Registriert: 31.12.2001
|
erstellt am: 02. Mrz. 2003 18:19 <-- editieren / zitieren --> Unities abgeben: Nur für CADwiesel
Zitat: Original erstellt von CADwiesel: Ich kann deffinitiv sagen, dass die Punkte deckungsgleich sind. Was ich auch nicht verstehe ist, dass die Punkte, die als Werte in der Liste stehen ja doch eigentlich bezugslose Zahlenkolonnen sind und somit doch auch 'nur den dargestellten Wert haben.Ich habe mir jetzt tatsächlich so beholfen, wie Holger beschrieben hat (rtos/atof) und so klappt's. Eigentlich blöd.
dann gebe doch EQUAL den "Genauigkeitswert" mit (equal wert1 wert2 0.0000001) Dann kannst Du den Umweg sparen Gruß Hans Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |