| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: allg. für Entities: Punkt auf Entity ermitteln (518 mal gelesen)
|
autocart Mitglied Technischer Redakteur
Beiträge: 695 Registriert: 08.09.2003
|
erstellt am: 05. Aug. 2009 10:45 <-- editieren / zitieren --> Unities abgeben:
Hallo AutoLISP-Gemeinschaft! Kennt jemand von euch eine Möglichkeit, wie man mit EINER allgemein gehaltenen Methode einen Punkt auf einem Entity ermitteln kann? Die Methode soll also als Argument eine ENAME erhalten und als Rückgabewert einen Punkt zurückgeben, der graphisch gesehen auf dem Entity liegt. Es ist dabei weniger wichtig, wo der Punkt genau liegt, solange er auf dem Entity liegt. Das Problem dabei ist, dass es egal sein soll, welches (graphische) Entity man übergibt. Meine Idee wäre, get-boundingbox zu machen und dann die bbox mit dem Entity zu schneiden, aber aufgrund dieses Beitrags traue ich der get-boundingbox-Methode nicht für so ganz allgemeine Methoden. Natürlich könnte man eine Fallunterscheidung für alle theoretisch möglichen Entities machen, aber die Methode sollte ja möglichst kurz und dann vor allem möglichst wartungsfrei sein. Lösungen für fast alle Entities mit ein bis drei bekannten Ausnahmen würden mir auch weiterhelfen. Allerdings sollten Inserts NICHT bei den Ausnahmen sein. Danke für jede Idee. ------------------ Gruß, Stephan www.stbartl.at "Every thing should be made as simple as possible but not simpler." - Albert Einstein Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tunnelbauer Ehrenmitglied V.I.P. h.c. Bauingenieur
Beiträge: 7085 Registriert: 13.01.2004 ich hab eh keine Probleme damit...
|
erstellt am: 05. Aug. 2009 10:55 <-- editieren / zitieren --> Unities abgeben: Nur für autocart
|
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 05. Aug. 2009 11:02 <-- editieren / zitieren --> Unities abgeben: Nur für autocart
Zitat: Allerdings sollten Inserts NICHT bei den Ausnahmen sein.
Das wird wohl nicht gehen, wo sollte der Punkt denn dann liegen?? Ansonsten: nimm doch einfach GC 10, den gibt's meistens. Grüsse, Henning ------------------ Henning Jesse VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure http://www.voxelman.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
autocart Mitglied Technischer Redakteur
Beiträge: 695 Registriert: 08.09.2003
|
erstellt am: 05. Aug. 2009 11:15 <-- editieren / zitieren --> Unities abgeben:
Du meinst KAL oder _CAL, ja? Grundsätzlich vergesse ich auf den meistens, aber auch nachdem ich mir nochmal angeschaut habe, was dieser Rechner drauf hat, ist mir nicht ganz klar, wie mir dieser bei der Lösung meines Problems helfen würde. Vielleicht noch ein Zusatz: Ich will natürlich keine Benutzereingaben in meiner Methode abfragen. Sollte eigentlich klar sein, aber man kann ja nie genau genug sein. ------------------ Gruß, Stephan www.stbartl.at "Every thing should be made as simple as possible but not simpler." - Albert Einstein Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
autocart Mitglied Technischer Redakteur
Beiträge: 695 Registriert: 08.09.2003
|
erstellt am: 05. Aug. 2009 11:24 <-- editieren / zitieren --> Unities abgeben:
@Henning: Ja, an den GC 10 dachte ich auch gleich. Ist aber eben bei Inserts ein Problem (Einfügepunkt/Basispunkt kann in Relation zur Geometrie ja irgentwo liegen) sowie bei Kreisen, Bögen und Ellipsen (dort ist der GC 10 nämlich der Mittelpunkt) sowie bei Texten und was weiß ich noch wo. Bei manchen Entities gibt es den GC 10 nicht einmal. Grundsätzlich muss ich sowieso damit rechnen, dass ich einige Ausnahmen habe, aber mit dem GC 10 wären es eindeutig zu viele Ausnahmen. Trotzdem danke für den Input an euch beide. ------------------ Gruß, Stephan www.stbartl.at "Every thing should be made as simple as possible but not simpler." - Albert Einstein Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 05. Aug. 2009 11:42 <-- editieren / zitieren --> Unities abgeben: Nur für autocart
Für GEOMETRIEN könntest Du noch die Funktion vlax-curve-getClosestPointTo verwenden: Code: (vlax-curve-getClosestPointTo (vlax-ename->vla-object (setq ele (car (entsel)))) (cdr (assoc 10 (entget ele))))
Aber bei anderen Elementen... Wo sollte denn Deiner Meinung nach so ein Punkt bei Text, Blöcken etc. liegen?Grüsse, Henning ------------------ Henning Jesse VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure http://www.voxelman.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
autocart Mitglied Technischer Redakteur
Beiträge: 695 Registriert: 08.09.2003
|
erstellt am: 05. Aug. 2009 11:54 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von wronzky: Wo sollte denn Deiner Meinung nach so ein Punkt bei Text, Blöcken etc. liegen?
Ist mir egal, solange gesichert ist dass der Punkt irgentwo AUF dem Entity liegt. Aber grundsätzlich: Deshalb habe ich ja diesen Thread begonnen, weil ich auch auf keine Lösung kam. Trotzdem ist die Funktion vlax-curve-getClosestPointTo sehr interessant. Überhaupt die ganzen vlax-curve-Funktionen. Danke für diesen Anstoss. Us sind unterwegs. ------------------ Gruß, Stephan www.stbartl.at "Every thing should be made as simple as possible but not simpler." - Albert Einstein Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |