明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: lusj

[求助]请问如何求出两条多义线的交点?

  [复制链接]
发表于 2005-7-20 18:16:00 | 显示全部楼层

有这么多求交点的程序,怎么没有人出来整理一下。

我不管了,全部复制下来,漫漫研究吧。

发表于 2005-8-29 16:15:00 | 显示全部楼层
哈哈,我觉得那个mccad的很好
发表于 2005-8-29 22:14:00 | 显示全部楼层
凑个热闹:
  1. (defun x_inters (ename1 ename2)
  2.   (setq ptlst (vlax-safearray->list
  3.     (vlax-variant-value
  4.       (vla-intersectwith (vlax-ename->vla-object ename1) (vlax-ename->vla-object ename2) acextendnone)
  5.     )
  6.   )
  7.   )
  8.   (if (> (length ptlst) 3)
  9.     (progn (setq #ptlst '())
  10.     (repeat (/ (length ptlst) 3)
  11.       (setq x   (car ptlst)
  12.      ptlst  (cdr ptlst)
  13.      y   (car ptlst)
  14.      ptlst  (cdr ptlst)
  15.      z   (car ptlst)
  16.      ptlst  (cdr ptlst)
  17.      pt0   (list x y z)
  18.      #ptlst (cons pt0 #ptlst)
  19.       )
  20.     )
  21.     (setq #ptlst (reverse #ptlst))
  22.     )
  23.   )
  24.   #ptlst
  25. )
实例:
(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))
发表于 2005-9-8 20:33:00 | 显示全部楼层
1,当LWPOLYLINE很复杂如由几百段线组成时vla-intersectwith 方法会很慢,请问有没有特别的方法提高速度?
2,上面那个程序当两个LWPOLYLINE不相交时应该会出错吧
发表于 2005-9-9 21:59:00 | 显示全部楼层
任意条曲线交点集:
  1. (load "xyp_lib")
  2. ;|加载通用函数(可在签名栏直接下载)
  3. 如果已经下载xyp_lib并放到搜索路径下可以不再下载!
  4. 利用以下任何一种方式即可加载和运行通用函数内的所有子程序:
  5. 1.在acad.lsp中增加(load"xyp_lib")
  6. 2.在每个程序内增加(load"xyp_lib")
  7. 3.在command下,输入(load"xyp_lib")
  8. 4.在菜单.mnl中增加(load"xyp_lib")
  9. 5.将xyp_lib.vlx文件直接拽到cad屏幕
  10. [COLOR=red] ★通用函数下载地址:[/COLOR]
  11. [url]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661[/url]
  12. [url]http://bbs.mjtd.com/forum.php?mod=viewthread&tid=37554[/url]|;
  13. (defun c:test ()
  14.   (setq p (CURVE_INTERS))
  15.   p
  16. )
发表于 2005-11-10 21:02:00 | 显示全部楼层
xyp1964发表于2005-8-29 22:14:00凑个热闹:(defun x_inters (ename1 ename2)(setq ptlst (vlax-safearray->list(vl...
这样岂不是更爽?
  1. (defun intpts (e1 e2 k / lst lst2)
  2.   (setq lst (vlax-invoke(vlax-ename->vla-object e1)'intersectwith(vlax-ename->vla-object e2) k))
  3.   (IF lst
  4.     (repeat (/ (length lst) 3)
  5.       (setq lst2 (cons (list (car lst) (cadr lst) (caddr lst)) lst2)
  6.      lst  (cdddr lst)
  7.       )
  8.     )
  9.   )
  10.   (reverse lst2)
  11. )
发表于 2005-11-18 08:35:00 | 显示全部楼层
受益非浅,我想,有了这个代码。估计自动作断面就存在可能了:)
发表于 2006-1-13 15:16:00 | 显示全部楼层

朋友们,我是一矿山技术人员,经常要用CAD设计道路,但我不会编程。上面如此多求交点的程序,

我看了很久,却仍不会用。我现在佷需求一程序,让选择一1任意线(线型不限,线有x,y或有z值,或有标高),在平面内与2另许多线(线型不限,线有x,y或有z值,或有标高)相交,让程序按1线选择方向按次序列出2线中交点的坐标(需x,y,z),输出为txt或excel格式。程序请设计成LSP格式。多谢了!qq:308302994

发表于 2006-1-14 23:59:00 | 显示全部楼层
大家可以这样吗?就是求出交点后在交点处断开?
发表于 2006-1-15 15:50:00 | 显示全部楼层

是的,楼上的说的对,LISP只加载就可以用。编译后只是快点而已。应当在程序前加上(vl-load-com)来将 Visual LISP 扩展功能加载到 AutoLISP。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-2-23 17:55 , Processed in 0.188728 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表