elitefish 发表于 2017-10-11 10:39:58

等宽倒角 圆角

2006CAD对等宽多线段和直线 倒角圆角 后 会将最终的多线段的宽度设为之前多线段宽度,新版CAD取消了这个功能,本来想是什么变量控制,但似乎没找到。于是写了个 等宽倒角和等宽圆角,倒角后,线宽会随最先选择的多线段宽度等宽倒角.LSP
序号代码
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
;等宽倒角
(defun C:EF_CHAMFER ( / e ename pt edata echo)
(setq echo (getvar 'cmdecho))
(if (and (setq e (entsel))
       (setq pt (cadr e))
       (setq ename (car e))
       (setq edata (entget ename))
       (setvar 'cmdecho 1)
       )
    (if (and (= (cdr (assoc 0 edata)) "LWPOLYLINE")
         (setq w (cdr (assoc 43 edata)))
         )
      (progn
    (command "CHAMFER" (vlax-curve-getClosestPointTo ename pt))
    (while (/= 0 (getvar 'CMDACTIVE)) (command pause))
    (command "PEDIT" ename "W" w "")
    (setvar 'cmdecho echo)
    )
      (progn
    (command "CHAMFER" e)
    (setvar 'cmdecho echo)
    )
      )
    )
(princ)
)

等宽圆角.LSP
序号代码
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
;等宽圆角
(defun C:EF_FILLET ( / e ename edata echo pt)
(setq echo (getvar 'cmdecho))
(if (and (setq e (entsel))
       (setq pt (cadr e))
       (setq ename (car e))
       (setq edata (entget ename))
       (setvar 'cmdecho 1)
       )
    (if (and (= (cdr (assoc 0 edata)) "LWPOLYLINE")
         (setq w (cdr (assoc 43 edata)))
         )
      (progn
    (command "FILLET" (vlax-curve-getClosestPointTo ename pt))
    (while (/= 0 (getvar 'CMDACTIVE)) (command pause))
    (command "PEDIT" ename "W" w "")
    (setvar 'cmdecho echo)
    )
      (progn
    (command "FILLET" e)
    (setvar 'cmdecho echo)
    )
      )
    )
(princ)
)



fan_zh 发表于 2017-10-11 17:27:49

学习收藏了

elitefish 发表于 2017-10-11 23:42:43

似乎 (command "CHAMFER") (command "fillet") 就可以了不用写这么多了

天宇飞翔12 发表于 2021-8-23 12:21:20

找好久了,谢谢

LYC688 发表于 2021-12-28 07:33:05

666666666666666666666666
页: [1]
查看完整版本: 等宽倒角 圆角