• Dieses Forum ist die maschinengenerierte Übersetzung von www.cad3d.it/forum1 - der italienischen Design-Community. Einige Begriffe sind nicht korrekt übersetzt.

2D Polylinear Summit hinzufügen

  • Ersteller Ersteller ssj4lucapc
  • Erstellt am Erstellt am

ssj4lucapc

Guest
Guten Morgen, alle! Ich möchte wissen, ob es einen Weg oder eine Lispe gibt, um einen Scheitel zu einer Auswahl von Polylinien hinzuzufügen.
Spezifisch Ich habe eine Datei mit 2d Polylinee mit nur 2 Vertices. Ich muss in der Lage sein, alle auszuwählen und ein Top in der Mitte jeder Polylinie hinzufügen. Ist das möglich?
Danke!
 
das Programm ist auf Polylinee mit zwei Vertiken beschränkt.
Code:
(defun c:aggver (/gru ent coo1 coo2 coom listacoo)
(setq gru (ssget '(0 . "polyline")))))
(Repeat (Setq-Index)
(setq ent (vlax-ename->vla-object (ssname gru)
coo1 (vlax-curve-getpointatdist ent 0)
coo2 (vlax-curve-getpointatdist ent (vla-get-length ent)
coom (vlax-curve-getpointatdist ent (/ (vla-get-length ent) 2)
Listacoo (Liste coo1 coom coo2)
listacoo (lista2variant listacoo)
)
(vla-put-Koordinaten ent listacoo)
)
(princ)
)

;; **************************************************************************************************************************************************************************************************************************************************************** ****************************************************************************************************************************************************************************************************************************************************************
;; transformiert eine Lista zu gruppi in einer Variante
(defun lista2variant (listanormal / array)
(setq listanormale)
(Setq-Array (vlax-make-safearray)
vlax-vbdouble
(cons 0 (- (Längeliste anormal) 1)
)
)
(vlax-make-variant (vlax-safearray-fill array listanormale))
)
 
Zuletzt bearbeitet:
Ich berichtige die vorherige Version des Programms, jetzt funktioniert es auch auf lwpolyline.
Code:
(defun c:aggver (/gru ent coo1 coo2 coomm listacoo)
(setq gru (ssget '(0 . "lwpolyline,polyline"))))))
(Repeat (Setq-Index)
(setq ent (vlax-ename->vla-object (ssname gru)
coo1 (vlax-curve-getpointatdist ent 0)
coo2 (vlax-curve-getpointatdist ent (vla-get-length ent)
coom (vlax-curve-getpointatdist ent (/ (vla-get-length ent) 2)
Listacoo (Liste coo1 coom coo2)
)
(cond)
(oder (= (vla-get-objectname ent) "acdb2dpolyline")(= (vla-get-objectname ent) "acdb3dpolyline"))
(setq listacoo (lista2variant listacoo))
)
((= (vla-get-objectname ent) "acdbpolyline")
(setq listacoo (mapcar '(lambda (elem) (list (car elem) (cadr elem)))))) listacoo
(setq listacoo (lista2variant listacoo))
)
)
(vla-put-Koordinaten ent listacoo)
)
(princ)
)

;; **************************************************************************************************************************************************************************************************************************************************************** ****************************************************************************************************************************************************************************************************************************************************************
;; transformiert eine Lista zu gruppi in einer Variante
(defun lista2variant (listanormal / array)
(setq listanormale)
(Setq-Array (vlax-make-safearray)
vlax-vbdouble
(cons 0 (- (Längeliste anormal) 1)
)
)
(vlax-make-variant (vlax-safearray-fill array listanormale))
)
 
Hallo, vielen Dank. Ich bemerkte nur, dass bei Polylinea die Lisp perfekt funktioniert. bei Polylinea 2d wird diese halbiert. Danke!
 
Also sollte es gehen. .
Code:
(defun c:aggver (/gru ent coo1 coo2 coom listacoo numero)
(setq gru (ssget '(0 . "lwpolyline,polyline"))))
Anzahl 0
)
(Repeat (Setq-Index)
(setq ent (vlax-ename->vla-object (ssname gru))
(cond)
(gold (equal (vla-get-objectname ent) "acdb3dpolyline")
(equal (vla-get-objectname ent) "acdb2dpolyline")
)
(Setq-Koordinator (variant2lista3d (vla-get-Koordinaten ent)))
)
(equal (vla-get-objectname ent) "acdbpolyline")
(Setq-Koordinator (variant2lista2d (vla-get-Koordinaten ent)))
)
)
(wenn (= Längenordnung) 2)
(Progn)
(setq coo1)
coo2 (letzter Koord)
coom (vlax-curve-getpointatdist ent (/ (vla-get-length ent) 2)
Listacoo (Liste coo1 coom coo2)
)
(cond)
(oder (= (vla-get-objectname ent) "acdb2dpolyline")(= (vla-get-objectname ent) "acdb3dpolyline"))
(setq listacoo (lista2variant listacoo))
)
((= (vla-get-objectname ent) "acdbpolyline")
(setq listacoo (mapcar '(lambda (elem) (list (car elem) (cadr elem)))))) listacoo
(setq listacoo (lista2variant listacoo))
)
)
(vla-put-Koordinaten ent listacoo)
(setq numero (1+ numero)
);
);
);
(princ (rtos numero 2 0)(princ " oggetti trattati.")(princ)
)

;; **************************************************************************************************************************************************************************************************************************************************************** ****************************************************************************************************************************************************************************************************************************************************************
;; transformiert eine Lista zu gruppi in einer Variante
(defun lista2variant (listanormal / array)
(setq listanormale)
(Setq-Array (vlax-make-safearray)
vlax-vbdouble
(cons 0 (- (Längeliste anormal) 1)
)
)
(vlax-make-variant (vlax-safearray-fill array listanormale))
)

(defun variant2lista2d (listavariant)
(lista2d (vlax-safearray->list (variant-value listavariant)))
)

(defun lista2d(lst)
(falls lst
(cons (list)
(lista2d (cddr lst))
)
)
)

(defun variant2lista3d (listavariant)
(lista3d (vlax-safearray->list)
)

(defun lista3d (lst)
(falls lst
(cons (list (car lst) (cadr lst)
(lista3d (cdddr lst))
)
)
)
 

Statistik des Forums

Themen
58.521
Beiträge
499.056
Mitglieder
104.110
Neuestes Mitglied
ChristianR

Zurzeit aktive Besucher

Keine Mitglieder online.
Zurück
Oben