Ein typisches Beispiel dafür, dass mit einer präzisen Fragestellung die Aufgabe meist schon halb gelöst ist - so besehen ist nämlich noch keine Lösung in Sicht.
Da müssten die Bedingungen schon genauer spezifiziert werden - z.B. ob es nur gerade Polyliniensegmente sein sollen oder auch bogenförmige, und was mit Polylinien ist, die die Punkte zwar verbinden, aber keine Gerade dazwischen bilden. Und letztlich sogar, was mit 3D-Polylinien ist.
Für alles, was gerade ist, würde ich folgenden Ansatz empfehlen:
Code:
(=
(abs
(-
(vlax-curve-getDistAtPoint curveObject P1)
(vlax-curve-getDistAtPoint curveObject P2)
)
)
(distance P1 P2)
)
=> T es besteht eine gerade Verbindung
=> nil keine gerade Verbindung
Hinweis: das ist Pseudocode, um den Ansatz zu klären, kein
lauffähiges Lisp-Programm. Ein lauffähiges Lisp-Programm wäre aber auch nicht viel länger, aber in der Praxis kann man da nicht mit = arbeiten, sondern müsste (equal ... *epsilon*) nehmen usw.
Jedenfalls müsste das mit allen Curve-Objects laufen, wobei Kreis, Bogen, Ellipse gleich ausscheiden, da sie keine gerade Verbindung sein können. Bleiben Line, Polyline, LwPolyline, Spline, Ray, Xline, da funktionierts.
Hier noch der lauffähige Code:
Code:
(defun ss-foreach(ss expr / i)
(if ss
(repeat(setq i(sslength ss))
((eval expr)(ssname ss(setq i(1- i))))
)
)
)(setq *epsilon* 1e-8)
(defun straight-conn(p1 p2 / dist rl)
(setq dist(distance p1 p2))
(ss-foreach(ssget"_f"(list p1 p2))
(function
(lambda(ent / )
(if(member(cdr(assoc 0(entget ent)))'("LINE" "LWPOLYLINE" "SPLINE" "RAY")) ; usw. .....!
(if
(equal dist
(abs
(-(vlax-curve-getDistAtPoint(vlax-ename->vla-object ent)p1)
(vlax-curve-getDistAtPoint(vlax-ename->vla-object ent)p2)
)
)
*epsilon*
)
(setq rl(cons ent rl))
)
)
)
)
)
(reverse rl)
)
; Zum Austesten: löscht alle geraden Verbindungen!
(defun c:test-it( / )
(mapcar'entdel(straight-conn(getpoint"\nErster Punkt: ")(getpoint"\nZweiter Punkt: ")))
)
Gruss, Axel
------------------
Meine AutoLisp-Seiten
Meine private Homepage
Mein Angriff auf dein Zwerchfell
Mein Lexikon der Fotografie
Mein gereimtes Gesülze
Meine Überzeugung...
[Diese Nachricht wurde von mapcar am 06. Mai 2003 editiert.]
[Diese Nachricht wurde von mapcar am 06. Mai 2003 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP