【悬赏5明经币求程序】求"交点打断"的lisp
本帖最后由 chenjian2159 于 2011-4-7 17:59 编辑求:如果有一大片的线,纵横交错,不在乎是哪个图层,能不能实现这样一个程序,每个交点的两根线(线是直线、弧线、PLINE线等)的在交点处打断。步骤:先框选一大片线,然后空格后,就打断有交点的线。 本帖最后由 xiaxiang 于 2011-4-10 18:04 编辑
这个程序可实现线,圆弧,多义线,圆,样条曲线等等的打断。
演示中只有线,其它的可自己试。
;;选择集求交点子程序
(defun interss (ss / n1 ssl aobj1 aobj2 n2 ipts pts)
(setq n10
ssl (sslength ss)
)
(while (< n1 (1- ssl))
(setq aobj1 (ssname ss n1)
aobj1 (vlax-ename->vla-object aobj1)
n2 (1+ n1)
)
(while (< n2 ssl)
(setq aobj2 (ssname ss n2)
aobj2 (vlax-ename->vla-object aobj2)
ipts(vla-intersectwith
aobj1
aobj2
0
)
ipts(vlax-variant-value ipts)
)
(if (> (vlax-safearray-get-u-bound ipts 1) 0) ;是否有交点
(progn
(setq ipts
(vlax-safearray->list ipts)
)
(while (> (length ipts) 0)
(setq pts (cons (list (car ipts)
(cadr ipts)
(caddr ipts)
)
pts
) ;此处可以在添加时判断是否有重合点
)
(setq ipts (cdddr ipts))
)
)
)
(setq n2 (1+ n2))
)
(setq n1 (1+ n1))
)
pts
)
(defun Break_ss (ss filter / pts pick thisdrawing oldos)
(if ss
(progn
(setq pts (interss ss)
pick (getvar "pickbox")
thisdrawing (vla-get-activedocument
(vlax-get-acad-object)
)
)
(if pts
(progn
(vla-startundomark thisdrawing)
(foreach x pts
(if (ssget
"_C"
(polar x (* -0.75 pi) (* 2. (expt (/ pick 2) 2)))
(polar x (* 0.45 pi) (* 2. (expt (/ pick 2) 2)))
filter
)
(vlax-for i (vla-get-activeselectionset thisdrawing)
(if
(not (or (equal (vlax-curve-getstartpoint i)
x
0.001
)
(equal (vlax-curve-getendpoint i)
x
0.001
)
)
)
(vl-cmdf ".break"
(list (vlax-vla-object->ename i) x)
"f"
x
"@"
)
)
)
)
)
(vla-endundomark thisdrawing)
);progn
)
);progn
) ;if
(princ)
)
;;;测试
(defun c:tt()
(setq ss (ssget '((0 . "*line,arc,circle,ELLIPSE"))))
(if ss
(Break_ss ss '((0 . "*line,arc,circle,ELLIPSE")))
)
(princ)
)
请楼主给出一个足够复杂的样图。还有,对断开距离有没有要求? 两个都不错,请版主帮我平均分配下明经币!!! 感谢分享程序及chenjian2159老大, < 谢谢 ! > xiaxiang 发表于 2011-3-24 12:13 static/image/common/back.gif
这个程序可实现线,圆弧,多义线,圆,样条曲线等等的打断。
演示中只有线,其它的可自己试。
你好呀,我下载了,变成lisp程序后,加载不了,内里也不是什么程序,也没有显示命令名,这是怎么回事呀?我把部分文字贴出来:
<meta name="keywords" content="" />
<meta name="description" content=",明经通道" />
<meta name="generator" content="Discuz! X2" />
<meta name="author" content="Discuz! Team and Comsenz UI Team" />
<meta name="copyright" content="2001-2011 Comsenz Inc." />
<meta name="MSSmartTagsPreventParsing" content="True" />
<meta http-equiv="MSThemeCompatible" content="Yes" />
<base href="http://bbs.mjtd.com/" /><link rel="stylesheet" type="text/css" href="data/cache/style_1_common.css?B0m" /><link rel="stylesheet" type="text/css" href="data/cache/style_1_forum_attachment.css?B0m" /><script type="text/javascript">var STYLEID = '1', STATICURL = 'static/', IMGDIR = 'static/image/common', VERHASH = 'B0m', charset = 'gbk', discuz_uid = '0', cookiepre = 'ncjy_08db_', cookiedomain = '.mjtd.com', cookiepath = '/', showusercard = '1', attackevasive = '0', disallowfloat = 'newthread', creditnotice = '1|通道币|个,2|威望|,3|明经币|个,4|金钱|,5|贡献|,6|激情|', defaultstyle = '', REPORTURL = 'aHR0cDovL2Jicy5tanRkLmNvbS9mb3J1bS5waHA/bW9kPWF0dGFjaG1lbnQmYWlkPU5UZ3dPVEY4T0Rka05tVmxORGQ4TVRNeE9EVXdNVE13T1h3ek9UVTRNRGg4T0RVNU5EYyUzRA==', SITEURL = 'http://bbs.mjtd.com/', JSPATH = 'static/js/';</script>
<script src="static/js/common.js?B0m" type="text/javascript"></script><meta name="application-name" content="明经通道" />
<meta name="msapplication-tooltip" content="明经通道" />
<meta name="msapplication-task" content="name=首页;action-
害得我花了一个币,难道不是lisp程序? zzl9105 发表于 2011-10-13 18:31 static/image/common/back.gif
你好呀,我下载了,变成lisp程序后,加载不了,内里也不是什么程序,也没有显示命令名,这是怎么回事呀? ...
下载的文件是LSP文件没错,你可重新下载试试,不重复扣币。 以前好像看过一个英文版本的交点打断很好用 8错。值得拥有!