| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| AERZEN konsolidiert weltweite Autodesk Softwarelizenzen mit CIDEON (Autodesk, AutoCAD, Inventor), ein Anwenderbericht
|
Autor
|
Thema: Umgrenzung von Linien erzeugen (3063 mal gelesen)
|
RL13 Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Bauwesen
Beiträge: 2373 Registriert: 23.10.2008 Civil 3D 2018.1 Civil 3D 2016 64 Bit SP 3 mit DACH und Extensions W7 Professional 64Bit HP Z440 Intel Xeon CPU E5-1620 v4 32 GB RAM NVIDIA Quadro P4000
|
erstellt am: 06. Nov. 2015 11:40 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, gibt es ein Befehl / Lisp mit dem man aus beliebig angeordneten 2D-Linien (oder auch andere Objekte eine Umgrenzung erzeugen kann, wie in der Beispielzeichnung gewünscht? _LINEWORKSHRINKWRAP habe ich probiert, bringt jedoch nicht das gewünschte Ergebnis. Ich stelle mir die Funktion so vor. Sie muss von einen Ausgangspunkt immer ein endlosen Strahl erzeugen und diesen solange um den Ausgangspunkt nach rechst drehen bis ein neuer Punkt getroffen wird und das selbe Spiel bis zum Ausgangspunkt zurück. ------------------ mfg Roman Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 06. Nov. 2015 12:05 <-- editieren / zitieren --> Unities abgeben: Nur für RL13
Ohne Strahlgedöns wäre es doch eine einfache sortierung nach XY-Werten(wenn keine Bögen vorkommen), das wird in der Programmierung öfters benötigt, aber eine Routine die jetzt haargenau das macht (samt Polygon oder Schraffurerstellung) kenne ich nicht. Das Grundgerüßt oder Wissen um die Sortierung hat aber jeder in der Schublade der öfters CAD programmiert. ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RL13 Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Bauwesen
Beiträge: 2373 Registriert: 23.10.2008 Civil 3D 2018.1 Civil 3D 2016 64 Bit SP 3 mit DACH und Extensions W7 Professional 64Bit HP Z440 Intel Xeon CPU E5-1620 v4 32 GB RAM NVIDIA Quadro P4000
|
erstellt am: 06. Nov. 2015 12:16 <-- editieren / zitieren --> Unities abgeben:
Zitat: Ohne Strahlgedöns
Ich hätte vielleicht besser Vektor zwischen Punkten schreiben sollen :D Zitat: sortierung nach XY-Werten(wenn keine Bögen vorkommen),
Bögen wär der nächste Schritt, aber wie dass mit einer Sortierung funktionieren soll, versteh ich grad nicht Schraffur muss nicht sein -> mir würde die Linie schon reichen. wenn's jedoch nix vorgefertigtes gibt dann klapper ich die Punkte eben erstmal händisch ab
------------------ mfg Roman Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 06. Nov. 2015 13:12 <-- editieren / zitieren --> Unities abgeben: Nur für RL13
Vielleicht zeigt dein Beispiel ja nicht alle Möglichkeiten, aber dein Beispiel lässt sich einfach wie folgt definieren, falls ich keinen Denkfehler habe: Ermittle aus allen Punkten Den höchsten und den niedrigsten X sowie Y-Wert (max min mit mapcar auf die PunkteListe losgelassen) Ermittle zum höchsten und niedrigsten X wert die zwei Punkte mit dem niedrigsten und höchsten Y-Wert Ermittle zum höchsten und niedrigsten Y wert die zwei Punkte mit dem niedrigsten und höchsten X-Wert. Verbinde alle 8 Punkte entsprechend der XYsortierung das es ein umlaufendes Polygon ergibt. Diverse Prüfungen auf Punktanzahl, Gleichheit nebeneinander liegender Punkte usw. damit es ordentlich und wie gewüscht erstellt wird. Aber wenn Bögen hinzu kommen wird es aufwändiger, da ist dann neben der mathematischen vielleicht auch eine Kombination aus obigem und dem von dir genannten -nichtAcadBefehl ein schneller Weg möglich und Sinnvoll(nach der Polygonerstellung wie oben) ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 06. Nov. 2015 13:19 <-- editieren / zitieren --> Unities abgeben: Nur für RL13
Nachtrag, hatte das eben nur aus demm ff, ohne Blick auf die Datei, gepostet: Dein Beispiel zeigt das man ggf. noch weitere Punkte außerhalb meiner beschriebenen 8 Punkte hat, diese müßten freilich auch noch berücksichtigt werden. In deiner Datei gibt es aktuell den Fall jedoch nicht. ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 06. Nov. 2015 13:20 <-- editieren / zitieren --> Unities abgeben: Nur für RL13
Hallo Roman, wenn ich mir die Geometrie und das Ergebnis anschaue, dann resultiert die Polylinie in diesem Beispiel aus den Punkten, die auf dem umhüllenden Rechteck aller Linien liegen. Wenn dem tatsächlich und immer so ist, dann kann man das recht leicht mit einer Programmierung lösen. Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RL13 Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Bauwesen
Beiträge: 2373 Registriert: 23.10.2008 Civil 3D 2018.1 Civil 3D 2016 64 Bit SP 3 mit DACH und Extensions W7 Professional 64Bit HP Z440 Intel Xeon CPU E5-1620 v4 32 GB RAM NVIDIA Quadro P4000
|
erstellt am: 06. Nov. 2015 13:44 <-- editieren / zitieren --> Unities abgeben:
Zitat: wenn ich mir die Geometrie und das Ergebnis anschaue, dann resultiert die Polylinie in diesem Beispiel aus den Punkten, die auf dem umhüllenden Rechteck aller Linien liegen. Wenn dem tatsächlich und immer so ist, dann kann man das recht leicht mit einer Programmierung lösen.
Rechteck ? oder meinst Du eher Polygon -> dann ja. Ich suche das Hüll-Polygon Das bringt mich grad auf eine Idee gibt's da nicht was im GIS-Bereich -> muss mal drüber nachdenken ------------------ mfg Roman Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Urbat Mitglied Bauzeichner
Beiträge: 113 Registriert: 09.05.2011 IDSP 2018 Tiffany (Kanalkataster)
|
erstellt am: 06. Nov. 2015 13:48 <-- editieren / zitieren --> Unities abgeben: Nur für RL13
|
RL13 Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Bauwesen
Beiträge: 2373 Registriert: 23.10.2008 Civil 3D 2018.1 Civil 3D 2016 64 Bit SP 3 mit DACH und Extensions W7 Professional 64Bit HP Z440 Intel Xeon CPU E5-1620 v4 32 GB RAM NVIDIA Quadro P4000
|
erstellt am: 06. Nov. 2015 13:58 <-- editieren / zitieren --> Unities abgeben:
Zitat: erstell doch ein DGM aus Bruchkanten. Dann Umgrenzung extrahieren
Das war das "Ursprungsproblem" -> geht nämlich auch nicht richtig. Klar in meinem simplen Beispiel würde es gerade mal funktionieren aber wenns komplexer wird, dann ... Das Stichwort heißt "Convex Hull", aber wie man das auf die Schnelle in LISP umsetzt dafür ist mir meine aktuelle Aufgabe zu einmalig als dass ich da noch mehr Arbeit reinstecke.
------------------ mfg Roman 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 AutoCAD 2.5 - 2025, Civil 3D, MAP 3D, ACADM, ACA Inventor Prof. 2025, AIP 4-2025 Win 11
|
erstellt am: 06. Nov. 2015 14:06 <-- editieren / zitieren --> Unities abgeben: Nur für RL13
|
RL13 Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Bauwesen
Beiträge: 2373 Registriert: 23.10.2008 Civil 3D 2018.1 Civil 3D 2016 64 Bit SP 3 mit DACH und Extensions W7 Professional 64Bit HP Z440 Intel Xeon CPU E5-1620 v4 32 GB RAM NVIDIA Quadro P4000
|
erstellt am: 06. Nov. 2015 14:19 <-- editieren / zitieren --> Unities abgeben:
Convex Hull ist aber leider auch nur bedingt, dass was ich suche, da hab ich wohl im ersten Beitrag die ganze Tragweite noch nicht überblickt, sorry Im Anhang mal ein Bild von meinem ursprünglichen Problem Die gesuchte (gewünschte) DGM-Umgrenzung ist hier rot dargestellt, und in Grün sieht man einige Maschen, die eigentlich nicht sein sollen.
Entstanden ist das Ganze aus Höhenlinien. Ich bedanke mich trotzdem bei allen Beteiligten für die Tip's und Hinweise, die mir schon etwas beim Verständnis weitergeholfen haben! U's sind unterwegs ------------------ mfg Roman [Diese Nachricht wurde von RL13 am 06. Nov. 2015 editiert.] [Diese Nachricht wurde von RL13 am 06. Nov. 2015 editiert.] 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 AutoCAD 2.5 - 2025, Civil 3D, MAP 3D, ACADM, ACA Inventor Prof. 2025, AIP 4-2025 Win 11
|
erstellt am: 06. Nov. 2015 18:34 <-- editieren / zitieren --> Unities abgeben: Nur für RL13
Hallo Roman, da es doch um Civil 3D DGM Umringe geht und dir das manuelle Löschen von Linien über kreuzende Auswahl in den Einbuchtungen eines DGMs zu mühselig erscheint, kannst du ja noch etwas Feintuning über die DGM Erstellungsoptionen betreiben hinsichtlich max. Dreieckswinkel und max. Dreiecksseitenlänge - siehe Video. ------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de [Diese Nachricht wurde von CAD-Huebner am 19. Nov. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jupa Ehrenmitglied V.I.P. h.c. Ruheständler
Beiträge: 6052 Registriert: 16.09.2004 Windows 10 64bit, ACAD Rel. 14 - ACAD 2023
|
erstellt am: 07. Nov. 2015 13:42 <-- editieren / zitieren --> Unities abgeben: Nur für RL13
Hallo Roman, ich habe mich auch mal daran gewagt. Ein LISP-Versuch ohne Zuhilfenahme irgendwelcher Befehle aus Vertikalprodukten ist angehangen. [EDIT]: .lsp beinhaltet noch einen Denkfehler. Habe sie wieder gelöscht. Überarbeitete Fassung folgt demnächst (hoffentlich). Grundidee zur Problemlösung: - Gegeben sei eine beliebige Anzahl Punkte. Im angehängten Beispiel werden die Punkte mit der Funktion P_Liste händisch erzeugt. Diese Funktion kann/muß durch irgend etwas anderes ausgetauscht werden, das im Ergebnis eine Liste von zu berücksichtigenden Punkten (in Deinem Beispiel die Endpunkte von Linien und/oder Stützpunkte von Polylinien) liefert. - Man suche den untersten Punkt (mit dem kleinsten Y-Wert). Sollte es mehrere Punkte mit gleichem minimalem Y-Wert geben, kann irgend einer davon benutzt werden (Startpunkt P-Start). - Von diesem Punkt aus messe man die Winkel zu allen anderen Punkten. Der Punkt, zu dem der kleinste Winkel zeigt ist der nächste Punkt auf der Hüllkontur. (Sollten mehrere Punkte über diesen Winkel zu erreichen sein, wählt das Programm "irgendeinen". Siehe untenstehende Kritikpunkte). - Dieser gefundene Punkt wird nun wiederum als Ausgangspunkt benutzt, um die Winkel zu allen übrigen zu messen. Der Punkt mit dem kleinsten Winkel (bezogen auf den Winkel der vorangegangenen zwei Punkte) ist der nächste Punkt auf der Umgrenzung. - So oft wiederholen, bis man wieder beim Startpunkt angelangt ist. => Die Hauptfunktion "hp" liefert bei mir als Ergebnis eine Punktliste mit den Koordinaten des umhüllenden Polygons. Diese Punktliste kann nun beliebig weiterverwendet werden (Linienzug zeichnen -bei mir auskommentiert, Polylinie zeichnen, Schraffurumgrenzung definieren, ...). Ich habs an mehreren Varianten erfolgreich getestet. Ob es jedoch unter allen Bedingungen fehlerfrei funktioniert kann ich noch nicht garantieren. Die rein "handwerkliche Umsetzung" der Grundidee hat sicherlich auch noch eine Menge Optimierungspotential. Es befindet sich noch im Entwicklungsstadium "Machbarkeitsstudie" Kritikpunkte: - Wenn sehr viele Punkte gegeben sind, könnte eine beträchtliche Rechenzeit erforderlich sein. Als optimale Lösung wäre dann evtl. die oben genannte ConvexHull zu verwenden (evtl. mit ungewollten "Einbuchtungen") und das hier vorgestellte Programm wird dann nur noch auf die Stützpunkte der ConvexHull angewendet (umd die Einbuchtungen zu entfernen). - liegen mehrere Punkte der Hüllkurve auf eine Linie, kann man nicht explizit steuern, ob nur der erste und letzte Punkt dieses Linienabschnittes in die Ergebnisliste aufgenommen wird (das wäre das Optimum) oder auch mehrere (bis alle) Zwischenpunkte. Das dürfte aber das kleinste Problem sein.
Ich hoffe damit ein paar Anregungen zum Weiterdenken gegen zu haben. Da ich mich noch ein wenig mit dieser für mich interessanten Problemstellung beschäftigen werde, bin ich offen für jede Art (konstruktiver) Kritik . Jürgen
------------------ Bildung kommt nicht vom Lesen, sondern vom Nachdenken über das Gelesene. (Carl Hilty)
[Diese Nachricht wurde von jupa am 07. Nov. 2015 editiert.] [Diese Nachricht wurde von jupa am 08. Nov. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jupa Ehrenmitglied V.I.P. h.c. Ruheständler
Beiträge: 6052 Registriert: 16.09.2004 Windows 10 64bit, ACAD Rel. 14 - ACAD 2023
|
erstellt am: 08. Nov. 2015 13:52 <-- editieren / zitieren --> Unities abgeben: Nur für RL13
Zitat: Original erstellt von jupa: Überarbeitete Fassung folgt demnächst [/B]
So, nun sollte es aber passen (Anhang). Bitte die Bemerkungen des vorherigen Posts beachten. HTH Jürgen ------------------ Bildung kommt nicht vom Lesen, sondern vom Nachdenken über das Gelesene. (Carl Hilty) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RL13 Ehrenmitglied V.I.P. h.c. Dipl.-Ing. Bauwesen
Beiträge: 2373 Registriert: 23.10.2008 Civil 3D 2018.1 Civil 3D 2016 64 Bit SP 3 mit DACH und Extensions W7 Professional 64Bit HP Z440 Intel Xeon CPU E5-1620 v4 32 GB RAM NVIDIA Quadro P4000
|
erstellt am: 09. Nov. 2015 08:27 <-- editieren / zitieren --> Unities abgeben:
|