找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 665|回复: 5

[求助] [求助]:请教求曲线交点的问题?

[复制链接]
发表于 2005-3-28 09:17:15 | 显示全部楼层 |阅读模式

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

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

×
(vla-intersectwith object1 object2 extendoption)
听大家说这个函数可以达到目的,但我不知道怎样用法?
大家可否举个例子来说明?
还有就是求两个圆的交点应该也可以用这个函数吧?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-3-28 10:13:47 | 显示全部楼层
(setq object1 (entsel "请选择曲线1:"))
(setq onject2 ((entsel "请选择曲线2:"))
(setq jdtb(vla-intersectwidth (vlax-ename->vla-object object1) (vlax-ename->vla-object object2)  acExtendnone))
(princ (vlax-safearray->list (vlax-variant-value jdtb))

需注意两曲线一定要共面!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3个

财富等级: 恭喜发财

发表于 2005-3-28 17:35:23 | 显示全部楼层
mccad     
  
  
  头衔:工程师
  等级:管理员
  积分:13
  文章:4287
  现金:9565
  鲜花:87
  鸡蛋:16
  注册:2001-6-7
                  第4楼  



提供一个用ax的方法,对所有曲线均有效


(defun c:GIP ()
  (c:getinterpoint)
)
(defun C:GetInterPoint (/        ent1     ent2     ent_1    ent_2
                        ax_ent_1 ax_ent_2 intpoints         i
                        j        k        disp
                       )
  (setq ent1 (entsel "\n选择第一条曲线:"))
  (setq ent2 (entsel "\n选择第二条曲线:"))
  (setq ent_1 (car ent1)
        ent_2 (car ent2)
  )
  (setq ax_ent_1 (vlax-ename->vla-object ent_1)
        ax_ent_2 (vlax-ename->vla-object ent_2)
  )
  (setq intpoints (vla-intersectwith ax_ent_1 ax_ent_2 acextendnone))
  (setq intpoints (vlax-variant-value intpoints))
  (if (> (vlax-safearray-get-u-bound intpoints 1) 0)
    (progn
      (setq i 0)
      (setq j 0)
      (setq k 0)
      (setq disp "")
      (repeat
        (/ (+ 1
              (- (vlax-safearray-get-u-bound intpoints 1)
                 (vlax-safearray-get-l-bound intpoints 1)
              )
           )
           3
        )
         (setq
           disp (strcat
                  disp
                  "\n交点"
                  (itoa (+ k 1))
                  "坐标为:"
                  (rtos (vlax-safearray-get-element intpoints j))
                  " , "
                  (rtos (vlax-safearray-get-element intpoints (+ 1 j)))
                  " , "
                  (rtos (vlax-safearray-get-element intpoints (+ 2 j)))
                )
         )
         (setq i (+ 2 i)
               j (+ 3 j)
               k (+ 1 k)
         )
      )
      (princ disp)
    )
    (princ "\n两曲线没有交点")
  )
  (princ "\n明经通道LISP示例-求两曲线交点")
  (princ)
)






空间相交的解决方法:



mkhsj928     
  
  
  等级:业余侠客
  文章:89
  现金:413
  鲜花:3
  鸡蛋:0
  注册:2004-7-28
              第38楼  



经过一番测试,还是陈版主的方法高!简单而又快捷,很精确的哦!


(setq ent1 (car (entsel "\n请选择修剪边界线:")))

(setq ent2 (car (entsel "\n请选择被修剪线:")))

(setq endpt (vlax-curve-getEndPoint (vlax-ename->vla-object ent2)))

(command "trim" ent1 "" (list  ent2 endpt) "")

(setq jdpt  (vlax-curve-getEndPoint (vlax-ename->vla-object ent2)))

(command "undo" "")

使用中 ent1 ent2 由程序确定,代入就可以了!

本方法对空间相交照样适用,只是经修剪后ent2变成了最后一个实体了(entlast)




[此贴子已经被作者于2004-8-3 0:21:57编辑过]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-29 00:43:49 | 显示全部楼层
请教2楼主:
按照你的方法出现错误,我想应该是Vlisp不能识别vla-intersectwith这个函数,是不是先要作个对vla函数的定义再使用呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2005-3-29 11:34:00 | 显示全部楼层
2楼主的代码经过修正如下:

(vl-load-com)
(setq object1 (entsel "请选择曲线1:"))
(setq object2 (entsel "请选择曲线2:"))
(setq jdtb (vla-intersectwith (vlax-ename->vla-object (car object1)) (vlax-ename->vla-object (car object2)) acExtendnone))
(princ (vlax-safearray->list (vlax-variant-value jdtb)))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-6 00:42 , Processed in 0.298610 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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