| |
| 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: Punkte vergleichen (1930 mal gelesen)
|
jörg.jwd Ehrenmitglied V.I.P. h.c. CAD-PDM Administrator
Beiträge: 3109 Registriert: 05.11.2003
|
erstellt am: 05. Aug. 2013 13:35 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, stehe gerade etwas auf dem Schlauch. Ich habe mir eine Liste aller Start - und Endpunkte in einer Zeichnung erstellt. Nun will ich ermitteln ob z.B. an einer Linie jeweils am Startpunkt und am Enpunkt noch ein Objekt hängt und bekomme das absolut nicht gebacken. Über diverse Denkanstöße würde ich mich freuen. ------------------ Grüße Jörg früher war die Zukunft besser (Karl Valentin) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Meldin Mitglied
Beiträge: 398 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 05. Aug. 2013 14:30 <-- editieren / zitieren --> Unities abgeben: Nur für jörg.jwd
|
Meldin Mitglied
Beiträge: 398 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 05. Aug. 2013 14:32 <-- editieren / zitieren --> Unities abgeben: Nur für jörg.jwd
Oh es könnte sein das ich dich falsch verstanden habe willst die eine Liste filtern oder Objekte suchen ? ------------------ Gruß Wolfgang Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jörg.jwd Ehrenmitglied V.I.P. h.c. CAD-PDM Administrator
Beiträge: 3109 Registriert: 05.11.2003
|
erstellt am: 05. Aug. 2013 15:21 <-- editieren / zitieren --> Unities abgeben:
Hallo Wolfgang, da hast du mich wohl etwas missverstanden. Ich muss alle Elemente durchsuchen und feststellen ob an beiden Endpunkten noch ein Element dranhängt. Die Liste aller Start- und Endpunkte habe ich schon. Nur der Vergleich der Einzelnen Objekte mit dieser Liste geht schief. ------------------ Grüße Jörg früher war die Zukunft besser (Karl Valentin) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 05. Aug. 2013 15:48 <-- editieren / zitieren --> Unities abgeben: Nur für jörg.jwd
(mapcar '(lambda(L1 L2)(equal L1 L2 0.0000001)) KOORD1 KOORD2) oder (and (equal (car K1) (car K2) 0.0000001) (equal (cadr K1) (cadr K2) 0.0000001) (equal (caddr K1) (caddr K2) 0.0000001) ) Wenn es noch keine Liste geben würde und es sich um viele Objekte handelt, dann würde ich auch nach Linien in der Umgebung suchen.. Aber die Aufgabe war ja klar beschrieben ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Meldin Mitglied
Beiträge: 398 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 05. Aug. 2013 15:58 <-- editieren / zitieren --> Unities abgeben: Nur für jörg.jwd
Hier mal was zum testen vielleicht bringt es dich auf eine Idee. Code: (setq AWSLinie(cdr(assoc 11(entget(car(entsel "\nLinie wählen")))))) (setq LinienAnz(sslength(ssget "_C" AWSLinie AWSLinie))) (cond ((= LinienAnz 1) (princ"Am Ende kein Objekt.")) ((= LinienAnz 2) (princ"Am Ende ein Objekt.")) ((> LinienAnz 2) (princ"Am Ende mehrere Objekte.")) )
------------------ Gruß Wolfgang Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jörg.jwd Ehrenmitglied V.I.P. h.c. CAD-PDM Administrator
Beiträge: 3109 Registriert: 05.11.2003
|
erstellt am: 06. Aug. 2013 12:45 <-- editieren / zitieren --> Unities abgeben:
Hallo, esrt mal danke für die schnellen Antworten. Der Ansatz von (ich meine noch Thomas zu wissen) cadffm hat mich auf die richtige Spur gebracht. Hätte doch beinahe übersehen dass ich zweimal prüfen muss da die Punkte des zu prüfenden Elements auch in meine Punkteliste stehen. @Wolfgan: dein Ansatz ist auch nicht ohne, aber da das alles automatisch laufen muss (relativ große Zeichnungen) kann ich das so nicht verwenden. Trotzem Ü's sind unterwegs. ------------------ Grüße Jörg früher war die Zukunft besser (Karl Valentin) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 06. Aug. 2013 12:50 <-- editieren / zitieren --> Unities abgeben: Nur für jörg.jwd
Wolfgang hat dir nur eine Methode gezeigt für den Fall den ich mit meinem letzten Kommentar ansprach. Das Beispiel ist für eine Benutzerabfrage konzipiert, aber du kannst das gerne voll autom. laufen lassen. Sebastian ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 06. Aug. 2013 12:55 <-- editieren / zitieren --> Unities abgeben: Nur für jörg.jwd
|
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 06. Aug. 2013 13:25 <-- editieren / zitieren --> Unities abgeben: Nur für jörg.jwd
Zitat: Original erstellt von CADmium: Wenn's um Punktevergleich geht bietet sich auch (=(distance PKT1 PKT2)0) an ...... nur mal so
Das ist nach einiger Überlegung, und wenn man equal mit 'nem Fuzzy-Wert statt = verwendet, gar keine schlechte Idee. Zwar muss da für (distance ..) was mit einigem Aufwand berechnet werden, aber dafür spart man sich die sonst notwendigen Prüfungen und Anpassungen von 2D- und 3D-Punkten, was ja auch etliche Zeit benötigt. Ich selbst verwende für sowas eine eigene Funktion (equal-pp ..), die natürlich die ganzen Prüfungen durchführt. Ich bin mir aber fast sicher, dass die Prüfung mittels distance effizienter ist.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jörg.jwd Ehrenmitglied V.I.P. h.c. CAD-PDM Administrator
Beiträge: 3109 Registriert: 05.11.2003
|
erstellt am: 08. Aug. 2013 09:16 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, erstmal Dank an alle. Ihr habt mir quasi das WE gerettet. Ü's sind verteilt. Mit meiner letzten Punkteliste komme ich allerdings nicht zu Rande. Da bekomme ich beim command ..."_WP" ptlist die Meldung Fehlerhafte Punkteliste. Könnte evtl. einer von euch draufschauen wo der Fehler im Code liegt? (setq ulet (list (-(car (getvar "extmax")) 509.5) (- (cadr (getvar "extmin")) 1))) (setq olet (list (-(car (getvar "extmax")) 509.5) (+ (cadr (getvar "extmin")) 56))) (setq omet (list (-(car (getvar "extmax")) 342.5) (+ (cadr (getvar "extmin")) 56))) (setq omoet (list (-(car (getvar "extmax")) 342.5) (+ (cadr (getvar "extmin")) 64.5))) (setq oret (list (-(car (getvar "extmax")) 177.5) (+ (cadr (getvar "extmin")) 64.5))) (setq uret (list (-(car (getvar "extmax")) 177.5) (- (cadr (getvar "extmin")) 1))) (setq ptlist (cons (list ulet olet omet omoet oret uret) ptlist)) (command "_change" (ssget "_WP" ptlist) "" "_p" "_la" "1" "_c" "_bylayer" "") ------------------ Grüße Jörg früher war die Zukunft besser (Karl Valentin) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 08. Aug. 2013 11:21 <-- editieren / zitieren --> Unities abgeben: Nur für jörg.jwd
Die Rückmeldung verrät es dir ja bereits: " Fehlerhafte Punkteliste." Ein Blick in die LispHilfe: (setq ss1 (ssget "WP" (list pt1 pt2 pt3))) Creates a selection set of the objects inside the polygon defined by the points (0,0), (5,5), and (4,1) Die Punkteliste sollte also so aussehen: ((20 25 0)(33 55 0)(5 -3 0)usw.) Dann schaust du dir deinen Wert von PTLIST mal an: (((-356.025 132.205) (-356.025 189.205) (-189.025 189.205) (-189.025 197.705) (-24.0247 197.705) (-24.0247 132.205))) Wenn du die Liste mit (car PTLIST) übergeben würdest, wäre Acad glücklich, dir sollte aber der eigentliche (Denk)Fehler bewußt sein: Dein Konstrukt mit cons Kann man Sinnvoll nutzen, aber dann eben bewußt und richtig. Wobei da die Frage ist ob es denn bereits Punkte in PTLIST geben kann, falls nicht wäre das cons nämlich vollkommen überflüssig. ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD [Diese Nachricht wurde von cadffm am 08. Aug. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jörg.jwd Ehrenmitglied V.I.P. h.c. CAD-PDM Administrator
Beiträge: 3109 Registriert: 05.11.2003
|
erstellt am: 08. Aug. 2013 11:56 <-- editieren / zitieren --> Unities abgeben:
Hallo cadffm kaum macht man's richtig... ich weiß meine Codes sehen besch... aus. Habe vor 10 Jahren noch anständig und sauber programmiert. Seither nicht mehr. Und das was ich jetzt schreiben muss kommt alle Jahr mal vor, und dann noch so nebenher (aber gestern fertig sein). Ich hoffe meine User tun in Zukunft was ich Ihnen sage, dann muss ich nicht hinterher das Kind aus dem Brunnen ziehen. Trotz allem vielen Dank. Ich weiß selbst was man denkt wenn man solche (eigentlich trivialen) Dinge liest. ------------------ Grüße Jörg früher war die Zukunft besser (Karl Valentin) [Diese Nachricht wurde von jörg.jwd am 08. Aug. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |