找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2907|回复: 8

[求助] [求助]:如何求得圆弧与圆弧(直线)延长段交点

[复制链接]
发表于 2005-9-27 00:51:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
应用以下程序可以求得圆弧与圆弧、圆弧与直线的交点,但是,当不相交时,会导致程序出错,提示:“ActiveX 服务器返回错误: 无效索引。”
(defun c:ss ()
(vl-load-com)
(if (and (setq obj1 (car (entsel "\n选择直线或圆弧 : ")))
          (setq obj2 (car (entsel "\n选择直线或圆弧 : ")))
     )
  (setq        jd (vlax-safearray->list
            (vlax-variant-value
             (vla-intersectwith
              (vlax-ename->vla-object obj1)
              (vlax-ename->vla-object obj2)
              acextendnone
             )
            )
           )
  )
)
)
请问各位高手:
1、如何使得以上程序,当物体不相交时,返回nil,而不是出错。
2、如何求得圆弧与圆弧延长段交点、圆弧与直线延长段交点。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-9-27 05:00:45 | 显示全部楼层
先判断是否有交点,然后在求值,不要连在一起写。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-27 08:08:49 | 显示全部楼层
修改:
  1. [FONT=courier new](defun c:ss (/ jd jd1)
  2.   (if (and (setq obj1 (car (entsel "\n选择曲线1 : ")))
  3.            (setq obj2 (car (entsel "\n选择曲线2 : ")))
  4.       )
  5.     (progn
  6.       (setq jd (vlax-variant-value
  7.                  (vla-intersectwith
  8.                    (vlax-ename->vla-object obj1)
  9.                    (vlax-ename->vla-object obj2)
  10.                    acextendnone
  11.                  )
  12.                )
  13.       )
  14.       (if (/= (vlax-safearray-get-u-bound jd 1) -1)
  15.         (setq jd1 (vlax-safearray->list
  16.                    jd
  17.                  )
  18.         )
  19.       )
  20.     )
  21.   )
  22.   jd1
  23. )[/FONT]


交点列表:
  1. [FONT=courier new](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://www.mjtd.com/bbs/dispbbs.asp?boardID=3&ID=37554&page=1[/url]|;

  13. ;;;交点列表
  14. (defun c:ss ()
  15.   (if (and (setq obj1 (car (entsel "\n曲线1 : ")))
  16.            (setq obj2 (car (entsel "\n曲线2 : ")))
  17.       )
  18.     (setq jd (x_inters obj1 obj2))
  19.   )
  20.   jd
  21. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-27 14:31:55 | 显示全部楼层
那么简单,就不必用通用函数了

  1. ;; 求实交,成功返回点表(散的),不相交返回nil。
  2. (defun c:its (/)
  3.   (if (and (setq e1 (car(entsel)))
  4.            (setq e2 (car(entsel))))
  5.       (vlax-invoke (vlax-ename->vla-object e1) 'intersectwith (vlax-ename->vla-object e2) 0)
  6.   )
  7. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-27 22:42:24 | 显示全部楼层
谢谢大家!还想请教一下,能求延长段的交点吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-28 12:48:30 | 显示全部楼层
(vlax-invoke (vlax-ename->vla-object e1) 'intersectwith (vlax-ename->vla-object e2) 0)
末尾
0 不延伸求交
1延伸第一个实体求交
2 延伸第二个实体求交
3 延伸两个实体求交
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-28 14:47:17 | 显示全部楼层
请问线与线延伸求交,应该怎么写程序,6楼的只能求圆与线延伸求交,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-28 18:00:57 | 显示全部楼层
再试试
参数0 改为3
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-28 20:25:14 | 显示全部楼层
非常感谢狂刀老兄!帮我解决了困扰已久的问题。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-28 15:46 , Processed in 0.187835 second(s), 48 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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