Hallo Christian,
anbei ein Code, mit dem es funktionieren müßte:
Code:
(defun C:PolyWechsel ( / N POLYAWS)
(if (setq PolyAws (ssget "_X" '((0 . "POLYLINE,LWPOLYLINE")(8 . "Kabel*"))))
(progn
(setq n 0)
(repeat (sslength PolyAws)
(if (=(/(length (vlax-get (vlax-ename->vla-object (ssname PolyAws n))'Coordinates))
(if (=(cdr(assoc 0 (entget(ssname PolyAws n))))"LWPOLYLINE")2 3))
2)
(JB_PolyWechsel:Poly2Layer (ssname PolyAws n))
)
(setq n (+ n 1)))))
)
(defun JB_PolyWechsel:Poly2Layer (obj / )
(if (not (tblsearch "LAYER" "Kabel-Achse"))
(entmake (list '(0 . "LAYER")
'(100 . "AcDbSymbolTableRecord")
'(100 . "AcDbLayerTableRecord")
'(2 . "Kabel-Achse")
'(70 . 0)
(cons 62 41)
'(6 . "CONTINUOUS")
'(290 . 1)
)))
(vla-put-layer (vlax-ename->vla-object obj)"Kabel-Achse"))
Folgendermaßen ist der Ablauf:
1. PolyAws: Auswahlsatz mit Poylilinien und LW-Polylinien bilden
2. Auswahlsatz durchlaufen lassen
2a. Wenn die Länge der Koordinatenliste (durch 2 bei LW, sonst durch 3 geteilt) = 2 ist, dann gehe in die "Layer"-Funktion
4. Wenn der Layer noch nicht vorhanden ist, dann wird der Layer erstellt.
5. mit vla-put-layer wird der Layer auf die Polylinie übertragen.
Sieht komplizierter aus als es ist, einfach mal ausprobieren.
------------------
viele Grüße
Jörn
http://www.bosse-engineering.com
Orthogonalvermassung Youtube
[Diese Nachricht wurde von joern bosse am 04. Aug. 2014 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP