Re: Как заменить линейный сегмент полилинии на дуговой и наоборот?
> Владимир Громов
Что то мне все так не понравилось - решил объединить обе программы в одну, если задать (визуально) кривизну близкую к нулевой, сегмент будет преобразован в линейный...
(defun C:LW_ARC (/ A1 GR LW PAR PT) (setq lw (entsel "\n Выберите нужный сегмент в полилинии. ")) (if (and lw (= (cdr (assoc 0 (entget (car lw)))) "LWPOLYLINE")) (progn (setq par (fix (vlax-curve-getParamAtPoint (car lw) (vlax-curve-getClosestPointTo (car lw) (cadr lw)) ) ) a1 (angle (vlax-curve-getPointAtParam (car lw) (fix par)) (vlax-curve-getPointAtParam (car lw) (1+ (fix par))) ) ) (vla-StartUndoMark (vla-get-activedocument (vlax-get-acad-object)) ) (princ "\n Задайте визуально кривизну сегмента. ") (while (and (setq gr (grread 5)) (= (car gr) 5)) (redraw) (grdraw (setq pt (vlax-curve-getPointAtParam (car lw) (fix par) ) ) (cadr gr) 6 1 ) (vla-SetBulge (vlax-ename->vla-object (car lw)) par (if (equal 0. (setq bul (/ (sin (/ (- a1 (angle pt (cadr gr))) 2.)) (cos (/ (- a1 (angle pt (cadr gr))) 2.)) ) ) 0.01 ) 0. bul ) ) ) (vla-EndUndoMark (vla-get-activedocument (vlax-get-acad-object)) ) ) (princ "\n Ничего не выбрано или объект не полилиния. ") ) (redraw) (princ) )
Извини, если надоел, только скажи перестану доставать с дурацкими программами.