| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
|
Autor
|
Thema: Gleicher Wert in einer Liste finden (1778 mal gelesen)
|
Manuel Sauter Mitglied
Beiträge: 28 Registriert: 29.10.2003
|
erstellt am: 10. Mai. 2004 17:09 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, ich habe eine Liste mit zugelassenen Wandstärken (setq zulWst (list 50.0 100.0 150.0 200.0 250.0 300.0 350.0)) Aus einer Berechnung erhalte ich die tatsächliche Wandstärke nWst1 Nun würde ich gern überprüfen ob die errechnete Wandstärke in der zulässigen Liste vorhanden ist. Aus den Beiträgen des Forums habe ich erkannt das ich mit member nicht weit komme. Ich denke ich muß mit dem Befehl equal arbeiten, da ich hier ja kleine Abweichungen von der errechneten zur zugelassenen Wandstärke habe. Kann mir hier jemand bitte einen Lösungsansatz bieten? Mit freundlichen Grüßen Manuel
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 10. Mai. 2004 17:32 <-- editieren / zitieren --> Unities abgeben: Nur für Manuel Sauter
So zum Beispiel. Ist die Wandstärkenliste sehr lang, sollte man den Code optimieren und bei der passenden Wandstärke aufhören zu suchen. mit foreach wird jede Wandstärke der Liste geprüft, auch wenn die Erste schon die Passende ist. Code:
(setq zulWst (list 50.0 100.0 150.0 200.0 250.0 300.0 350.0))(setq zulAbw 0.1 gesuchteWs Nil ) (Foreach ws zulWst (IF ( < (abs (- nwst1 ws)) zulAbw) (SETQ gesuchteWs ws) ) ) (IF (NOT gesuchteWs) (PROMPT "leider nichts gefunden!") )
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tmoehlenhoff Ehrenmitglied V.I.P. h.c. Gutzum, CAD-Therapeut und BIM-Priester ;-)
Beiträge: 2996 Registriert: 14.10.2002 ATD 2 bis 2007
|
erstellt am: 10. Mai. 2004 18:01 <-- editieren / zitieren --> Unities abgeben: Nur für Manuel Sauter
|
Dabrunz Mitglied
Beiträge: 127 Registriert: 28.05.2003
|
erstellt am: 10. Mai. 2004 18:52 <-- editieren / zitieren --> Unities abgeben: Nur für Manuel Sauter
Ja, könnte man. Allerdings scheint mir hier die Verwendung von vl-some angeraten, gesetzt den Fall, die Lösung darf VLISP verwenden: Code:
(vl-some '(lambda(x)(equal x errechneteWandStaerke maxAbweichung)) zulaessigeWandStaerken )
Achim Dabrunz [Diese Nachricht wurde von Dabrunz am 10. Mai. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 10. Mai. 2004 21:52 <-- editieren / zitieren -->
Zitat: Original erstellt von Manuel Sauter: Hallo Zusammen,ich habe eine Liste mit zugelassenen Wandstärken (setq zulWst (list 50.0 100.0 150.0 200.0 250.0 300.0 350.0)) Aus einer Berechnung erhalte ich die tatsächliche Wandstärke nWst1 Nun würde ich gern überprüfen ob die errechnete Wandstärke in der zulässigen Liste vorhanden ist. Aus den Beiträgen des Forums habe ich erkannt das ich mit member nicht weit komme. Ich denke ich muß mit dem Befehl equal arbeiten, da ich hier ja kleine Abweichungen von der errechneten zur zugelassenen Wandstärke habe. Kann mir hier jemand bitte einen Lösungsansatz bieten? Mit freundlichen Grüßen Manuel
Schon mal die Lisp Funktion MEMBER angesehen? (seqt checkliste '(10.0 20. 50.0 100.0)) (setq test 50.0) (member test checkliste) (member 55 checkliste) Falls in der Checkliste auch Integerzahlen sind, muß man eventuell so prüfen: (member (float test) (mapcar 'float checkliste)) Gruß Tom Berger ------------------ Architekturwerkzeuge für AutoCAD: http://www.archtools.de |
tmoehlenhoff Ehrenmitglied V.I.P. h.c. Gutzum, CAD-Therapeut und BIM-Priester ;-)
Beiträge: 2996 Registriert: 14.10.2002 ATD 2 bis 2007
|
erstellt am: 10. Mai. 2004 21:59 <-- editieren / zitieren --> Unities abgeben: Nur für Manuel Sauter
Wobei doch die Fragestellung eigentlich die Anforderung enthielt, dass mit einer gewissen Ungenauigkeit geprüft werden soll und eben dies bietet member nicht, oder? sayonara Torsten Möhlenhoff ACAD-Systemhaus Bremen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 11. Mai. 2004 00:09 <-- editieren / zitieren -->
Zitat: Original erstellt von tmoehlenhoff: Wobei doch die Fragestellung eigentlich die Anforderung enthielt, dass mit einer gewissen Ungenauigkeit geprüft werden soll und eben dies bietet member nicht, oder?
Stimmt, hatte ich überlesen. Eventuell kommt er damit hin, den zu prüfenden Wert vorher zu runden, aber sonst geht MEMBER dann natürlich nicht. Tom Berger ------------------ Architekturwerkzeuge für AutoCAD: http://www.archtools.de |
mapcar Mitglied CADmin
Beiträge: 1250 Registriert: 20.05.2002 Time flies like an arrow, fruit flies like a banana (Groucho Marx)
|
erstellt am: 11. Mai. 2004 02:42 <-- editieren / zitieren --> Unities abgeben: Nur für Manuel Sauter
|
Manuel Sauter Mitglied
Beiträge: 28 Registriert: 29.10.2003
|
erstellt am: 11. Mai. 2004 07:47 <-- editieren / zitieren --> Unities abgeben:
|
Dabrunz Mitglied
Beiträge: 127 Registriert: 28.05.2003
|
erstellt am: 11. Mai. 2004 10:46 <-- editieren / zitieren --> Unities abgeben: Nur für Manuel Sauter
Zitat:
[..] vl-some ist ein 'stinknormale' Lisp-Funktion, hat ja mit dem ganzen vla-...-Kram absolut nichts zu tun.
Hat es schon, die gehört nämlich erst ab A2K zum Standard-Funktionsumfang und damit seit der Einführung von VLisp. AutoLisp kannte sie jedenfalls noch nicht. Zitat:
[..]> gesetzt den Fall, die Lösung darf VLISP verwenden ... Könnte auch heissen: Soll unter R12 oder 2.6 laufen - oder was?
genau - oder unter R14 oder IntelliCAD oder ... Achim [Diese Nachricht wurde von Dabrunz am 11. Mai. 2004 editiert.] 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: 11. Mai. 2004 12:35 <-- editieren / zitieren --> Unities abgeben: Nur für Manuel Sauter
Achim schrub: Hat es schon, die gehört nämlich erst ab A2K zum Standard-FunktionsumfangAchim, das weiss ich;-) Ich meine aber: Hat mit dem ganzen VLA-Kram nix zu tun! Abwärtskompatibilität und ICAD in allen Ehren - aber das ist trotzdem stinknormales AutoLisp. TBLOBJNAME gabs auch nicht immer, aber trotzdem hat Autodesk diese Funktion nicht 12-tblobjname oder sonstwas genannt. Eine Funktion VL-SOME kann man sich, wenn sie in ICAD oder R14 fehlt, ganz schnell selber schreiben, und der Code läuft unbeeindruckt auch dort. Mir geht's doch um das 'Püschologische': Hier sagen offensichtlich viele User 'ich will mit ActiveX nix zu tun haben, also verwende ich keine Funktionen, die mit VL... anfangen. Wenn einer sagt 'das soll auch da und da laufen', dann ist das respektabel. Aber das hier ist einfach Quatsch! Die meisten Funktionen, die mit VL- anfangen, sind 'normale' Funktionen, das Präfix erinnert nur daran, dass sie nicht bei AutoDesk entwickelt wurden, sondern bei den Russen (ein paar sind aber speziell, z.B. auf den Compiler bezogen). Das Problem(?) ist nur, dass manche dieser eingekauften Funktionen mit Präfix daherkommen, andere nicht: Es heisst ja z.B. auch nicht VL-FUNCTION. Man kann Trennlinien sehen, wo man mag, aber die Frage 'VL oder nicht' bildet keine! Gruß, 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 |
Dabrunz Mitglied
Beiträge: 127 Registriert: 28.05.2003
|
erstellt am: 11. Mai. 2004 12:59 <-- editieren / zitieren --> Unities abgeben: Nur für Manuel Sauter
|