Hallo,
eins vorweg, in der Vergangenheit hatte ich dieses Thema schon einmal, aber jetzt liegt der Fall ein bißchen anders:
In der Beispieldatei ist eine blaue, ausgerundete Polylinie dargestellt. Für einen Programmablauf brauche ich die Stationswerte, nicht nur an den Stützpunkten, sondern auch dazwischen.
Mit den vlax-curve-Funktionen sollte das eigentlich machbar sein, aber in meiner Beispielzeichnung gibt es bei dem rot angeschriebenen Endpunkt offensichtlich die falsche Station (49.728).
Wenn ich die ganze Situation ein wenig schiebe, dann erhalte ich wieder den korrekten Wert (dann war aber an einer anderen Position gar keine Rückgabe, scheinbar alles ziemlich zufällig).
Mit BricsCAD habe ich noch einen Vergleich angestellt, dort treten die Fehler nicht auf.
Frage: Wie komme ich an verläßliche Stationswerte unter Angabe einer Koordinate von einer ausgerundeten Polylinie?
Folgenden Code habe ich für die Testzeichnung verwendet, starten mit "test2"
Code:
(defun c:test2 ( / PKT VLA-OBJ DIST)
(if(setq vla-obj (vlax-ename->vla-object (Car (entsel))))
(progn
(setq pkt (getpoint "\nPunkt wählen:"))
(while pkt
(if
(setq Dist(vlax-curve-GetDistAtPoint vla-obj
(vlax-curve-getClosestPointTo vla-obj pkt)))
;;;GetDistAtParam ergibt dieselben Ergebnisse wie GetDistAtPoint
;;; (setq Dist(vlax-curve-GetDistAtParam vla-obj
;;; (vlax-curve-GetParamAtPoint vla-obj
;;; (vlax-curve-getClosestPointTo vla-obj pkt))))
(alert (strcat "Station: " (rtos Dist 2 3))))
(setq pkt (getpoint "\nPunkt wählen:")))))
)
[Edit]
Habe nochmal die DWG direkt angehängt ohne sie in TXT umzubenennen.
[/Edit]
------------------
viele Grüße
Jörn
http://www.bosse-engineering.com
Rahmen einfügen Youtube
Stammtisch Wolfsburg Februar 2014
[Diese Nachricht wurde von joern bosse am 07. Feb. 2014 editiert.]
[Diese Nachricht wurde von joern bosse am 07. Feb. 2014 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP