| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Polygon - Überlagerungen herausfiltern (1652 mal gelesen)
|
steinemann09 Mitglied Dipl. Ing.
Beiträge: 47 Registriert: 27.08.2008 AutoCAD 2005, AutoCAD 2009, Windows XP
|
erstellt am: 16. Sep. 2008 07:43 <-- editieren / zitieren --> Unities abgeben:
Hallo User, da bei großen Zeichnungen mit über 1000 Flächen (incl. Inselerkennung) fehlerhafte Polygonüberschneidungen der Schraffurbefehl nicht mehr ausreicht, suche ich in AutoLisp eine Möglichkeit Überschneidungsflächen zu ermitteln. Die Möglichkeit, jweils 2 benachbarte Stützpunkte nach sich schneidenden Polygonen zu untersuchen scheint mir zu aufwendig und beansprucht viel Rechenzeit. Hat jemand von Euch eine Idee? Gruß Volker Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
Beiträge: 1968 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 16. Sep. 2008 07:56 <-- editieren / zitieren --> Unities abgeben: Nur für steinemann09
wie wäre denn die Möglichkeit, die Stützpunkte eines jeden Polygons zu ermitteln, dem ssget _CP zu übergeben mit der Auswahl beschränkt auf Polygone. Wenn ein Auswahlsatz gebildet wurde kannst du prüfen, ob siche eine Überschneidung ergibt. ------------------ Gruß CADwiesel Besucht uns im CHAT
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
steinemann09 Mitglied Dipl. Ing.
Beiträge: 47 Registriert: 27.08.2008 AutoCAD 2005, AutoCAD 2009, Windows XP
|
erstellt am: 16. Sep. 2008 08:27 <-- editieren / zitieren --> Unities abgeben:
danke für Deine schnelle Reaktion, Dein Vorschlag ist mir auch schon in den Sinn gekommen, aber da beachbarte Polygone mit identischen Grenzpolygonen vorhanden sind, muss man ja zusätlich für die Fensterdefinition ermitteln, in welcher Richtung sich der "Polygoninnenpunkt" befindet. Über Minimum- BTW . Maximumabfragen die Richtung zu errechnen, die ins Polygonnnere zeigt, ist nicht sehr oprimal. Gibt es eine andere Möglichkeit? Eigentlich ist mein Problem eine GIS- Funktionalität, Gibt es dafür in Lisp schon eine Standardlösung, die man ausbauen könnte ? Gruß Volker 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: 16. Sep. 2008 08:49 <-- editieren / zitieren --> Unities abgeben: Nur für steinemann09
Hallo Volker, ich würde es mit der Methode vla-intersectwith über alle Objekte (paarweise) probieren. Bei mehr als einem Schnittpunkt gibt es wohl eine Überschneidung. Zum Thema war auch HIER schon mal was. 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 |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 16. Sep. 2008 09:13 <-- editieren / zitieren --> Unities abgeben: Nur für steinemann09
Hallo Volker, augenscheinlich würde man mit der GetIntersectWith-Methode recht schnell zum Ergebnis kommen. Allerdings werden durch diese Herangehensweise auch Schnittpunkte für angrenzende Polygone ausgeworfen - so müsste jeder Schnittpunkt dahingehend geprüft werden. Deshalb ein anderer Ansatz, der sicher auch sinnvoll mit obigen Gedanken kombiniert werden kann. 1. Auswahlsatz aller Polygone 2. für jedes Polygon(->PRÜFpolygon) einen Auswahlsatz bilden(wie CADwiesel das beschrieben hat)-> AWSPolygon 3. Die Stützpunkte der AWSPolygone darauf prüfen, ob diese sich im innerern des PRÜFpolygons befinden. Ist dies der Fall, überschneidet sich was. Sind alle AWSPolygon-Stützpunkte innerhalb, wird es wohl eine Insel darstellen. Hinweise: 1) Ist ein Punkt innerhalb eines Polygons? Du zeichnest einen Strahl von diesem Punkt ausgehend und prüfst die Anzahl der Schnittpunkte mit dem PRÜFpolygon. Ist die Anzahl ungerade, dann ist der punkt innerhalb. 2) Punkt auf dem Polygon kannst du mit vlax-curve-GetParamAtPoint einen Parameter des PRÜFPolygons ermitteln, dann ist der Punkt auf dem PRÜFpolygon. 3) Auch ohne, dass ein AWSPolygon-Stützpunkt im inneren des PRÜFpolygons vorhanden ist, kann es sein, dass die Polygone sich schneiden. Dieser Fall würde dann jedoch auftauchen, wenn das AWSPolygon als Prüfpolygon dran ist und in diesem Zusammenhang dann das jetztige PRÜFpolygon zum AWSPolygon wird. Alles klar? Bei Fragen ... Grüße Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
steinemann09 Mitglied Dipl. Ing.
Beiträge: 47 Registriert: 27.08.2008 AutoCAD 2005, AutoCAD 2009, Windows XP
|
erstellt am: 17. Sep. 2008 17:20 <-- editieren / zitieren --> Unities abgeben:
Hallo Holger, danke für Deinen Ansatz, der Fehler lag nicht bei Polygonüberlagerungen sondern bei den Inselflächen. In Abhängigkeit von der Richtung des Außenpolygons muss die Inselfläche in entgegengesetzter Richtung gezeichnet sein, ansonsonsten wird aus der Abzugsfläche eine Zuzugsfläche. In beiligender DWG habe ich schematisch an Fallbeispielen die Inselflächen-problematik anschaulich(so hoffe ich)dargestellt und erläutert.(DWG - werde ich Dir mailen) Als nächstes will ich eine Lisp - Routine schreiben, die bei einer ausgewählten PL zwischen den einzelnen Stützpunkten die Richtung angibt( in Form von Pfeilen), um herauszufinden, wo Zuzugsflächen statt Abzugsflächen definiert sind. Gibt es eventulell schon so eine Funktion oder eine elegantere Möglickeit, die Richtung von Stützpunkt zu Stützpunkt auf einmal für die ganze PL sich anzeigen zu lassen? Danke im vorraus für Deine Mühe, Gruß Volker Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 17. Sep. 2008 22:36 <-- editieren / zitieren --> Unities abgeben: Nur für steinemann09
Hallo Volker, Ja, da gibt es etwas. Du musst es noch für Dich anpassen, da _Purge bei ACAD und ICAD unterschiedlich aufgerufen werden muss, kannst Du diesen Teil bereinigen. Wenn die Symbolgröße fest steht, brauchst Du auch die Ini-Datei nicht. Gruß Theodor Schönwald Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
steinemann09 Mitglied Dipl. Ing.
Beiträge: 47 Registriert: 27.08.2008 AutoCAD 2005, AutoCAD 2009, Windows XP
|
erstellt am: 18. Sep. 2008 12:43 <-- editieren / zitieren --> Unities abgeben:
Hallo Theodor, habe soeben Deine Routine getestet. Echt super, das hilft mir schon sehr viel weiter bei meinem Problem. Schade nur, dass man keine Möglickeit zum zoomen hat, anderseits hat es den Vorteil eines übersichtlichen Handlings. Vielleciht findes ich es heraus, obwohl mit der DCL - Problematik habe ich mich schon lange nicht mehr beschäftigt. Nochmals tausend Dank, Gruß Volker Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Systemkonstrukteur (m/w/d) | Sie sind auf der Suche nach einer neuen Herausforderung in einem kreativen und innovativen Umfeld? - Dann sind Sie bei uns genau richtig! Als Systemkonstrukteur (m/w/d) übernehmen Sie die fachliche Führung von Entwicklern im elektromechanischen Subsystemkontext. Sie entwickeln elektromechanische Subsysteme und präsentieren die zu verantwortenden Entwicklungsteile, Ihre Aufgaben: ... | Anzeige ansehen | Maschinenbau |
|
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 19. Sep. 2008 18:12 <-- editieren / zitieren --> Unities abgeben: Nur für steinemann09
Hallo Volker, es freut mich wenn mein Tool Dir weiter hilft. Die Möglichkeit zum Zoomen, hast Du immer, Du kannst den Zoom-Befehl aufrufen, während ein anderer Befehl aktiv ist, wenn Du Zoom so 'Zoom eingibst. Gruß Theodor Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |