Re: Макрос на кнопку "Равноудаленная линия"
Подумал еще. Полусумму длин для первого способа нельзя задавать, обрезать круг не получится. Да тут еще есть и третий случай - отрезки продолжаются за точку пересечения, пока оставлю на потом.
Вот программа для простейшего случая:
;*************** b_line.lsp Построение биссектрисы угла ******** ; Ограничение: отрезки должны пересекаться, ; но не должны продолжаться за точку пересечения. ; (defun C:B_LINE ( / ob1 ob2 ob3 ob4 0b5 line1 line2 p11 p12 p21 p22 dist1 dist2 dist3 p3) (setvar "CMDECHO" 0) (setq ob1 (entsel "\n Выберите первый отрезок: ")) (redraw (car ob1) 3) (setq ob2 (entsel "\n Выберите второй отрезок: ")) (redraw (car ob2) 3) (setq line1 (entget (car ob1))) (setq line2 (entget (car ob2))) (setq p11 (cdr (assoc 10 line1))) (setq p12 (cdr (assoc 11 line1))) (setq p21 (cdr (assoc 10 line2))) (setq p22 (cdr (assoc 11 line2))) (setq center (inters p11 p12 p21 p22)) (setq dist1 (distance p11 p12)) (setq dist2 (distance p21 p22)) (setq dist3 (min dist1 dist2)) (command "_CIRCLE" center dist3) (setq ob3 (entlast)) (command "_TRIM" ob1 ob2 "" ob3 "") (setq ob4 (entlast)) (command "_DIVIDE" ob4 2) (setq ob5 (entlast)) (setq p3 (cdr (assoc 10 (entget ob5)))) (command "_LINE" "_none" center "_none" p3 "") (command "_ERASE" ob4 ob5 "") (redraw (car ob1) 4) (redraw (car ob2) 4) (princ) )
Вроде намудрил, но работает.