Die Probleme enstehen lediglich daraus, dass du die Polylinien jetzt anders im Raum liegen hast. Bei deiner Probezeichnung lagen die Polylinien in der XY-Ebene, daher sortiert das Programm in Z-Richtung. In deiner Rohdaten-Zeichnung liegen sie aber in der YZ-Ebene, und daher muss in X-Richtung sortiert werden. Die Sortierrichtung lässt sich aber in der Sort-Funktion einstellen:
(defun sort(pls / )
(vl-sort pls
'(lambda(e f)
;(apply'< ;nach -X, -Y, -Z sortieren
(apply'> ;nach +X, +Y, +Z sortieren
(mapcar
'(lambda(g / )
; nach GC 10 des 1. Vertex sortieren
; car= X-Sortierung, cadr=Y, caddr=Z
(car(cdr(assoc 10(entget(entnext g)))))
;(cadr(cdr(assoc 10(entget(entnext g)))))
;(caddr(cdr(assoc 10(entget(entnext g)))))
)
(list e f)
)
)
)
)
)
Wenn du das einstellst, läuft das Programm soweit es kann. Es bleibt aber das Problem bestehen, dass die U-PLs eine unterschiedliche Anzahl von Stützpunkten haben. Du kannst dir zum Zählen
noch diese Funktion in die Datei kopieren:
(defun pl-length(pl / )
(length(extract pl))
)
Wenn du (pl-length(car(entsel))) eingibst, kannst du die Anzahl der vertices einer PL ermitteln.
In der Rohdaten-Datei schwankt diese Zahl zwischen 42 und 74. Da kann man natürlich nicht mehr 1:1 verbinden. Es gibt aber mehrere Modelle, wie man vorgehen könnte.
1) Die Datengewinnung so abändern, dass eine konstante Anzahl Punkte vorliegt
2) Interpolation - d.h. die Polylinien so abändern, dass die Anzahl der Vertices abgeändert wird. Das wäre allerdings mit einem Verlust an Genauig behaftet, der um so grösser wird, je stärker die Schwankungen innerhalb der Daten sind.
3) Ein weiteres Modell wäre, immer in der Mitte einer U-Polylinie anzufangen und sich in beiden Richtungen nach aussen vorzuarbeiten. Das hiesse aber, dass die zu erzeugenden V-Pls im Randbereich ggf. unterbrochen werden
4) Der letzte Vorschlag wäre, alle U-PLs (ausser der längsten) aussen so zu verlängern, dass Gleichheit da ist. Diese Verlängerung wäre in der XY-Ebene vorzunehmen. Der Effekt wäre eine 'Tiefziehfolie', die in der Draufsicht rechteckig ist.
Ich frage mich übrigens, was du überhaupt mit den 3D-Polylinien willst. Eigentlich schreit das Ganze geradezu nach einer Konvertierung von Rasterdaten aus ein Textdatei in ein PMESH - das
kann man wenigstens rendern usw. Mit den 3D-PLs bleibt's aber alles Wireframe.
Ich kann dich weiterhin gerne beraten und dir mal helfen, wenn du dich selbst daran versuchen willst. Ich kann das Programm aber auch für dich schreiben - allerdings nicht ohne Gegenleistung, da das nicht mal schnell in der Mittagspause zwischen zwei Zigaretten erledigt ist. Gegen eine Spendenquittung von 100 Euro (für die Kriegsopfer im Irak) schreibe ich es und setze es dann komplett hier rein - es wird dadurch aber nicht zum Eigentum deines Auftraggebers. Es ist dann Public Domain, und jeder andere kann es hier auch herunterladen.
Gruss, Axel
------------------
Meine AutoLisp-Seiten
Meine private Homepage
Mein Angriff auf dein Zwerchfell
Mein Lexikon der Fotografie
Mein gereimtes Gesülze
Meine Überzeugung...
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP