| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | | PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: Linienkontur versetzen (258 mal gelesen)
|
floppy Mitglied
Beiträge: 7 Registriert: 26.09.2005
|
erstellt am: 26. Sep. 2005 19:08 <-- editieren / zitieren --> Unities abgeben:
Hallo Ich habe folgendes Problem: Ich möchte in AutoLisp eine Kontur zusammenhängender Linien (keine Polylinien) versetzen, wobei jede Linie individuell um einen bestimmten Wert versetzt werden soll. Das lässt sich mit dem AutoCad Versetz-Befehl leider nicht machen, also muss ich das wohl oder übel in Lisp nachprogrammieren. Ist im Prinzip ja gar nicht so schwer: Endpunkte der Linie ermitteln, Winkel ermitteln, zum Winkel 90 Grad dazurechnen (Kontur verläuft immer im Uhrzeigrsinn) und mittels Polar-Funktion die versetzten Punkte berechnen und dann in einem weiteren Durchgang mittels inters-Befehl das Ganze wieder zu einer zusammenhängenden Kontur verbinden. Das Problem hierbei ist aber, dass bei der resultierenden Kontur ev. Linien wegfallen können, wenn sich das aus der Geometrie so ergibt - meine Frage deshalb, hat jemand einen Lösungsansatz wie man ermitteln kann welche Linien wegfallen oder ev. ein kleines Lisp-Beispiel auf Lager? Vielen Dank! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Ehrenmitglied Verm.-Ing.
Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2013, Rasterdesign MapGuide 6.5 - 2013 Oracle 9i,10g,11g Enterprise autodesk Topobase 2-2012 VS6, VS.net
|
erstellt am: 26. Sep. 2005 20:32 <-- editieren / zitieren --> Unities abgeben: Nur für floppy
Hallo, nachdem ich nochmal genau gelesen habe .... .. würde ich es halt unter VB machen. Linien der Kontur der Reihe nach in ein Array speichern. (Die Reihenfolge könnte man auch automatisch ermitteln) Mit Entity.Offset die jeweiligen Linien (individuel) versetzen. Bei ersten Element beginnend mit "intersecWith" die Schnitte mit dem nächsten und übernächsten Element rechnen. Ist die Entfernung Anfangspunkt zum Schnittpunkt übernächstes Element kleiner als die Entfernung Anfangspunkt zum Schnitt nächstes ELement fällt das nächste Element aus der Kontur. Stelli ------------------ Warum lisp'eln wenns's auch anders geht. [Diese Nachricht wurde von Stelli1 am 26. Sep. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
floppy Mitglied
Beiträge: 7 Registriert: 26.09.2005
|
erstellt am: 03. Okt. 2005 19:31 <-- editieren / zitieren --> Unities abgeben:
Erstmal Danke für die Antwort! Ich finde, das man das in Lisp auch relativ einfach umsetzten kann und Lisp liegt mir halt bei AutoCAD einfach besser als VB. Das eigentliche Problem ist aber zu bestimmen, welche Linien wegfallen. Dein Lösungsansatz funktioniert zwar im beigefügten Beispiel, bei komplexeren Linienverläufen stimmt das Ergebnis aber nicht. Ich denke, man muss von einer Linie ausgehen und diese mit allen anderen schneiden lassen. Von allen Linien die schneiden, "gewinnt" dann diejenige, die die Linie am kürzesten macht und mit dieser Linie gehts dann weiter, die dazwischenligenden Linien fallen weg. Das Problem ist nur, wenn die Linie, von der ich ausgehe, eine Linie ist, die eigentlich wegfallen würde, dann ensteht eine falsche Kontur :-( Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|