Спасибо большое.Работает класно. А можно коментариев добавить в код(я начинающий хотелось бы понимать что происходит).
(defun c:block2vertix_angle (/ osm ocmd ss ugl ptlv ptlugl ugl_v ptl e
)
(setq old_ugl (if old_ugl
old_ugl
180
)
ugl (getint
(strcat "\n Enter the maximum angle 0°-180° <"(itoa old_ugl)">:")
)
old_ugl (if ugl
ugl
old_ugl
)
ugl (* (/ old_ugl 180.0) pi)
)
(princ "\nSelect Polyline:")
(if (setq ss (ssget '((0 . "LWPOLYLINE"))))
(progn
(while (> (sslength ss) 0)
(setq e (ssname ss 0))
(ssdel e ss)
(setq ptlv (apply 'append
(mapcar '(lambda (x)
(if (= 10 (car x))
(list (cdr x))
) ;_ if
) ;_ lambda
(entget e)
) ;_ mapcar
) ;_ apply
) ;_ setq
(while (caddr ptlv)
(setq ptlugl (if (< (if (> (setq ugl_v
(abs
(- (angle (cadr ptlv) (car ptlv))
(angle (cadr ptlv) (caddr ptlv))
)
)
)
pi
)
(- (* 2 pi) ugl_v)
ugl_v
)
ugl
)
(append ptlugl
(list (cadr ptlv))
)
ptlugl
)
ptlv (cdr ptlv)
)
)
(setq ptl (append ptl ptlugl))
) ;_ while
(setq osm (getvar "osmode"))
(setq ocmd (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setvar "osmode" 0)
;; block name "blok12mm"
(mapcar '(lambda (x) (command "_.ins ert" "blok12mm" x "" "" "")) ptl)
(setvar "cmdecho" ocmd)
(setvar "osmode" osm)
(se tvar "cmdecho" ocmd)
(se tvar "osmode" osm)
) ;_ progn
) ;_ if
(princ)
) ;_ defun