yxp
发表于 2005-7-20 18:16:00
<P>有这么多求交点的程序,怎么没有人出来整理一下。</P>
<P>我不管了,全部复制下来,漫漫研究吧。</P>
and2008
发表于 2005-8-29 16:15:00
哈哈,我觉得那个mccad的很好
xyp1964
发表于 2005-8-29 22:14:00
凑个热闹:
(defun x_inters (ename1 ename2)
(setq ptlst (vlax-safearray->list
(vlax-variant-value
(vla-intersectwith (vlax-ename->vla-object ename1) (vlax-ename->vla-object ename2) acextendnone)
)
)
)
(if (> (length ptlst) 3)
(progn (setq #ptlst '())
(repeat (/ (length ptlst) 3)
(setq x (car ptlst)
ptlst(cdr ptlst)
y (car ptlst)
ptlst(cdr ptlst)
z (car ptlst)
ptlst(cdr ptlst)
pt0 (list x y z)
#ptlst (cons pt0 #ptlst)
)
)
(setq #ptlst (reverse #ptlst))
)
)
#ptlst
)实例:
(x_inters(car(entsel"\n线1 : "))(car(entsel"\n线2 : ")))
线1 :
线2 : ((54632.4 9711.19 0.0) (60869.0 7321.07 0.0) (68407.1 6801.17 0.0)
(67617.9 11573.2 0.0))
whj0000
发表于 2005-9-8 20:33:00
1,当LWPOLYLINE很复杂如由几百段线组成时vla-intersectwith 方法会很慢,请问有没有特别的方法提高速度?<BR>2,上面那个程序当两个LWPOLYLINE不相交时应该会出错吧
xyp1964
发表于 2005-9-9 21:59:00
任意条曲线交点集:
(load "xyp_lib")
;|加载通用函数(可在签名栏直接下载)
如果已经下载xyp_lib并放到搜索路径下可以不再下载!
利用以下任何一种方式即可加载和运行通用函数内的所有子程序:
1.在acad.lsp中增加(load"xyp_lib")
2.在每个程序内增加(load"xyp_lib")
3.在command下,输入(load"xyp_lib")
4.在菜单.mnl中增加(load"xyp_lib")
5.将xyp_lib.vlx文件直接拽到cad屏幕
★通用函数下载地址:
http://www.xdcad.net/forum/attachment.php?s=&postid=1606661
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=37554|;
(defun c:test ()
(setq p (CURVE_INTERS))
p
)
无痕
发表于 2005-11-10 21:02:00
xyp1964发表于2005-8-29 22:14:00static/image/common/back.gif凑个热闹:(defun x_inters (ename1 ename2)(setq ptlst (vlax-safearray->list(vl...这样岂不是更爽?
(defun intpts (e1 e2 k / lst lst2)
(setq lst (vlax-invoke(vlax-ename->vla-object e1)'intersectwith(vlax-ename->vla-object e2) k))
(IF lst
(repeat (/ (length lst) 3)
(setq lst2 (cons (list (car lst) (cadr lst) (caddr lst)) lst2)
lst(cdddr lst)
)
)
)
(reverse lst2)
)
地鼠
发表于 2005-11-18 08:35:00
受益非浅,我想,有了这个代码。估计自动作断面就存在可能了:)
xuming
发表于 2006-1-13 15:16:00
<P>朋友们,我是一矿山技术人员,经常要用CAD设计道路,但我不会编程。上面如此多求交点的程序,</P>
<P>我看了很久,却仍不会用。我现在佷需求一程序,让选择一1任意线(线型不限,线有x,y或有z值,或有标高),在平面内与2另许多线(线型不限,线有x,y或有z值,或有标高)相交,让程序按1线选择方向按次序列出2线中交点的坐标(需x,y,z),输出为txt或excel格式。程序请设计成LSP格式。多谢了!qq:308302994<BR></P>
userzhl
发表于 2006-1-14 23:59:00
大家可以这样吗?就是求出交点后在交点处断开?
tcsl9621
发表于 2006-1-15 15:50:00
<P>是的,楼上的说的对,LISP只加载就可以用。编译后只是快点而已。应当在程序前加上(vl-load-com)来将 Visual LISP 扩展功能加载到 AutoLISP。</P>