批量多段线灵活倒角(倒内角、倒外角)
本帖最后由 Lispboy 于 2016-10-8 09:10 编辑需要去通用LISP函数库下载函数:
http://bbs.xdcad.net/thread-671362-1-1.html
http://bbs.xdcad.net/thread-705702-1-1.html
(defun c:XDTB_PLineFillet (/ #dis #div _isclose bound dis div e gap ge
ge1 i intv keyword len pts sec sec1 sec2 ss
x
)
(defun _setdis (keyword)
(cond
((= keyword "SE")
(if (setq r (getreal (xdrx_prompt "\n请输入倒角半径<" #radius ">:" t)))
(setq #radius r)
)
)
((= keyword "BE")
(if (setq mode (getint (xdrx_prompt "\n请输入倒角方式[所有角(0)/只倒内角(1)/只倒外角(2)]<"
#mode ">:" t
)
)
)
(setq #mode mode)
)
)
)
(xdrx_prompt "\n当前设置:倒角方式(*" (cond
((= #mode 0)
"所有角"
)
((= #mode 1)
"只倒内角"
)
(t
"只倒外角"
)
) "*)/半径(" #radius ")"
)
)
(defun _fillet (e mode radius)
(cond
((= mode 0)
(setq gr (apply 'append gr))
(setq gr (vl-sort gr '(lambda(x y)(< x y))))
)
((= mode 1)
(setq gr (car gr))
)
((= mode 2)
(setq gr (last gr))
)
)
(setq i 0)
(mapcar
'(lambda (index)
(XD::Polyline:AddFillet e (+ i index) "F" radius 1.0)
(setq i (1+ i))
)
gr
)
)
(xdrx_begin)
(if (not #mode)
(setq #mode 0)
)
(if (not #radius)
(setq #radius 10.0)
)
(xdrx_prompt "\n当前设置:倒角方式(*" (cond
((= #mode 0)
"所有角"
)
((= #mode 1)
"只倒内角"
)
(t
"只倒外角"
)
) "*)/半径(" #radius ")"
)
(xdrx_initssget "\n选取要倒角的多段线[倒角方式(BE)/半径(SE)]<退出>:"
"BE SE" "移除不倒角的多段线[添加(A)]<退出>:" "_setdis" ""
)
(if (setq ss (xdrx_ssget '((0 . "*POLYLINE"))))
(progn
(mapcar
'(lambda (x)
(setq gr (xd::polyline:anglegroup x))
(_fillet x #mode #radius)
)
(xdrx_pickset->ents ss)
)
)
)
(xdrx_end)
(princ)
)
啥也不说了,感谢楼主分享哇! 看上去很智能啊 啥也不说了,感谢楼主分享哇! 我只是路过打酱油的 感谢楼主分享哇! 啥也不说了,感谢楼主分享哇! 很强大呢。。。 一定要安装XD工具箱才能运行吗? ysq101 发表于 2016-12-5 20:01
装 XDRX API 就行
支持晓东工具箱。 newer 发表于 2016-12-5 20:11
是否支持这类图形
谢谢楼主,支持下
啥也不说了,就是感谢! 看看再说吧。 实用的好插件
页:
[1]
2