要实现的目的: 拾取两条直线,输入倒角的距离d,然后调用倒角命令,以输入的倒角距离d/(sin(两条直线夹角))为新的倒角距离对原直线做倒角操作,以下为我编的程序,但是最后一行调用倒角命令的时候出错,不能够自由保留倒角后的边,也就是说对与拾取的两条直线,倒角方式是固定的,求达人解答,万分感谢 (defun C:dj () (setvar "cmdecho" 0) (setvar "blipmode" 0) (get_dj_data) (draw_dj) (prin1) )
;拾取倒角直线及输入基本参数 (defun get_dj_data () (setq dis (getint "\n请输入倒角距离<300>:")) (if (null dis) (setq dis 300) ) (setq l1 (entsel "\n请选择第一条直线:")) (setq l2 (entsel "\n请选择第二条直线:"))
)
;此处需要调用一个求两直线夹角的函数 (defun draw_dj () (setq ang (l_sub_rang l1 l2)) (setq dist (/ dis (sin ang))) (setvar "chamfera" dist) (setvar "chamferb" dist) (command "chamfer" (car l1) (car l2));此处出现问题,倒角保留边的问题 ) (prin1) ;以下是调用的子程序 ;求直线与水平线夹角(弧度) (defun l_ar (l) ;l只是图元名 (setq l_data (entget (car l))) (setq pt1 (cdr (assoc 10 l_data))) (setq pt2 (cdr (assoc 11 l_data))) (setq l_k (/ (- (cadr pt2) (cadr pt1)) (- (car pt2) (car pt1)) )) (atan l_k) )
;求两直线的夹角(弧度) (defun l_sub_rang(l1 l2) (abs (- (l_ar l1) (l_ar l2)));只讲怎么运算(不需要再用setq函数) ) |