| |
| 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, eine Pressemitteilung
|
Autor
|
Thema: nächstliegende Objekte finden (1230 mal gelesen)
|
flaschenpost Mitglied Architekt
Beiträge: 497 Registriert: 29.09.2004 ADT 2004 / Windows XP
|
erstellt am: 17. Nov. 2004 22:57 <-- editieren / zitieren --> Unities abgeben:
Hallo liebe LISP-ler, ich bin dabei, mir einige kleine Routinen zum Thema Geländehöhen zu machen. Im Moment fehlt mir eine Funktion, mit der ich beim Tippen eines Punktes irgendwo in die Zeichnungsfläche die 1-3 nächstliegenden Elemente (z.B. Text / Höhenzahl) automatisch bekomme. Es geht um die reine x,y-Entfernung (Ignorieren von Z). Vielleicht hat jemand dazu eine Idee. Gruß FP
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: 17. Nov. 2004 23:25 <-- editieren / zitieren --> Unities abgeben: Nur für flaschenpost
|
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: 18. Nov. 2004 07:07 <-- editieren / zitieren --> Unities abgeben: Nur für flaschenpost
Geht es darum, vorhandene 2D-Pläne mit Punkten und in der Nähe stehenden Texten für ein Geländemodell vorzubereiten? Abhängig davon, ob die Texte immer im gleichen Abstand (gleiche Lage) relative zum Höhenpunkt stehen, siehe dazu mal-> http://ww3.cad.de/foren/ubb/Forum54/HTML/008456.shtml geht das mehr oder weniger gut mit (SSGET "_C" (GETPOINT)(GETPOINT)'(( -4 . "<OR")( 0 . "TEXT")(0 . "MTEXT") (-4 . "OR>"))) Sollen Punkte neu erzeugt werden, würde ich Blöcke mit Attributen vorziehen (Attribtute sind dann Punktrnr, Höhe, evt. Punktcode) Mit freundlichem Gruß Udo Hübner
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: 18. Nov. 2004 07:28 <-- editieren / zitieren --> Unities abgeben: Nur für flaschenpost
Hallo FP, programmieren kann man das. Ich selbst habe das in diesem Programm(pdf-Beschreibung) umgesetzt. Grundlage ist die vom CAD-Huebner gepostete Lisp-Zeile, nur dass eben die Fensterkoordinaten automatisiert berechnet werden. D.h. ausgehend vom Einfügepunkt des Textobjektes, wird ein immer größer werdendes CrossingWindow 'aufgezogen' - solange bis ein Punkt gefunden oder eine Grenzgröße gefunden ist. Bei Fragen ... Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! AutoLISP-Programmierung für AutoCAD Da weiß man, wann man's hat! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
flaschenpost Mitglied Architekt
Beiträge: 497 Registriert: 29.09.2004 ADT 2004 / Windows XP
|
erstellt am: 18. Nov. 2004 11:39 <-- editieren / zitieren --> Unities abgeben:
Hallo Udo und Holger, ich habe schon an so ein wachsendes Auswahlfenster gedacht - aber wenn das Fenster quadratisch ist, sind die Ergebnisse nicht exakt. Das Fenster müßte kreisförmig sein. Eine andere Möglichkeit wäre, alle Punkte (oder Texte) auszulesen und dann die Entfernungen zu vergleichen. Das erschien mir etwas aufwendig und träge. Gruß Carsten 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: 18. Nov. 2004 11:55 <-- editieren / zitieren --> Unities abgeben: Nur für flaschenpost
Hallo Carsten, das ist auch nicht exakt. Es wird hierfür keine lösung geben, die 100%ig funktioniert. In dem Tool, von dem ich hier die Beschreibung gepostet habe, berücksichtigt ja diesen Fakt, mit der einzugebenden Schrittweite. Das kommt ja dem entgegen, dass der am naheliegendste Punkt gewählt wird. Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! AutoLISP-Programmierung für AutoCAD Da weiß man, wann man's hat! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
flaschenpost Mitglied Architekt
Beiträge: 497 Registriert: 29.09.2004 ADT 2004 / Windows XP
|
erstellt am: 18. Nov. 2004 12:15 <-- editieren / zitieren --> Unities abgeben:
Wenn man die Schrittweite zu eng wählt, dann dauert es sicher ewig. Aber das meinte ich nicht. Wenn Du ein Quadrat hast, dann hast Du in der Diagonalen einen Punkt erwischt, der weiter weg sein kann, als ein anderer, den Du nicht erfaßt. Das ist das eigentliche Problem, deshalb muß es ein Kreis sein. Gruß Carsten 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: 18. Nov. 2004 13:49 <-- editieren / zitieren --> Unities abgeben: Nur für flaschenpost
|
Dabrunz Mitglied
Beiträge: 127 Registriert: 28.05.2003
|
erstellt am: 18. Nov. 2004 15:13 <-- editieren / zitieren --> Unities abgeben: Nur für flaschenpost
Tag Zusammen. Zitat: [..] Wenn Du ein Quadrat hast, dann hast Du in der Diagonalen einen Punkt erwischt, der weiter weg sein kann, als ein anderer, den Du nicht erfaßt. Das ist das eigentliche Problem, deshalb muß es ein Kreis sein.
Da möchte ich mich dann doch einmal zu Wort melden, denn das stimmt so nicht! Hier geht's ja schließlich nicht um Entfernungswerte in cm, sondern um einen etwas flexiblernen Begriff von 'zeichnerischer Nähe'. Es ist durchaus gebräuchlich, solche 'Abstände' als das Maximum der einzelnen Koordinaten-Differenzen fest zu legen. (wird auch 'Maximumsmetrik' genannt) Allerdings gehört das Einsammeln aller (passenden) Geometrie innerhalb einer starren Umgebung nicht zwingend zu den optimalen Lösungs-Ansätzen, um die 'nächstliegenden Elemente' eines Punktes zu finden. Wenn es tatsächlich um die (durch ihre Anzahl festgelegten) *Texte geht, deren Abstand zu einem Punkt am geringsten ist, dann bietet sich ein Vergleich über die BoundingBoxes aller passenden Elemente an. Hierbei kann natürlich die 'starre' Umgebung als brauchbare Vorauswahl herhalten und du darfst auch mit dem Abstands-Begriff, der dir am besten gefällt, prüfen, welcher Text sich denn nun am engsten an den Punkt heran wagt. Achim Dabrunz
------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |