I've done this :
- (defun c:3dpl2dpl-unwrap ( / 3DPL 3DPLA 3DPLCOORD 3DPLPTL DX DZ K L O OSM PT PTT PTTT PTTTW SSLINES )(vl-load-com)(setq osm (getvar 'osmode))(setvar 'osmode 0)(setq 3dpl (car (entsel "\nPick 3d poly")))(setq 3dplA (vlax-ename->vla-object 3dpl))(setq 3dplcoord (vlax-safearray->list (vlax-variant-value (vla-get-Coordinates 3dplA))))(repeat (/ (length 3dplcoord) 3)(setq pt (list (car 3dplcoord) (cadr 3dplcoord) (caddr 3dplcoord)))(setq 3dplcoord (cdddr 3dplcoord))(setq 3dplptl (cons pt 3dplptl)))(setq 3dplptl (reverse 3dplptl))(setq o '(0.0 0.0 0.0))(setq sslines (ssadd))(setq k 0)(repeat (- (length 3dplptl) 1)(setq k (1+ k))(vl-cmdf "ucs" "w")(vl-cmdf "ucs" "x" 90)(if (eq k 1) (setq pt (trans (car 3dplptl) 0 1)) (setq pt (trans ptttw 0 1)))(vl-cmdf "ucs" "m" pt)(setq ptt (trans (cadr 3dplptl) 0 1))(setq l (distance (car 3dplptl) (cadr 3dplptl)))(setq dz (cadr ptt))(setq dx (sqrt (- (expt l 2) (expt dz 2))))(setq pttt (list dx dz 0.0))(setq ptttw (trans pttt 1 0))(vl-cmdf "_.line" o pttt "")(ssadd (entlast) sslines)(setq 3dplptl (cdr 3dplptl)))(vl-cmdf "_.pedit" "m" sslines "" "y" "j" "" "")(vl-cmdf "_.chprop" (entlast) "" "c" "1" "")(vl-cmdf "ucs" "w")(setvar 'osmode osm)(princ))
M.R. |