chpmould 发表于 2011-5-7 21:28:47

直线和圆的交点打断

本帖最后由 chpmould 于 2011-5-8 10:05 编辑

请教:
   lisp如何实现先求出直线和圆的交点,然后打断圆...效果如下图片

陈貌 发表于 2011-5-7 23:26:12

按TR 然后双挤右键或是空格键,点击不要的线条,效果就出来了

chpmould 发表于 2011-5-8 10:06:28

本帖最后由 chpmould 于 2011-5-8 10:06 编辑

陈貌 发表于 2011-5-7 23:26 http://space.mjtd.com/static/image/common/back.gif
按TR 然后双挤右键或是空格键,点击不要的线条,效果就出来了

我是想求直线和圆的交点,然后按交点打断...

Gu_xl 发表于 2011-5-8 17:44:51

回复 chpmould 的帖子


(defun c:tt (/ cir curve pl pts el sta enda cp p1 p2)
(while (and
           (setq cir (car (entsel "\n选择圆:")))
           (setq curve (car (entsel "\n选择分割曲线:")))
       ) ;_ and
    (setq pl (vlax-invoke
             (vlax-ename->vla-object cir)
             'IntersectWith
             (vlax-ename->vla-object curve)
             acExtendNone
             ) ;_ vlax-invoke
    ) ;_ setq
    (while pl
      (setq pts        (append pts (list (list (car pl) (cadr pl) (caddr pl))))
          pl        (cdr (cdr (cdr pl)))
      ) ;_ setq
    ) ;_ while
    (if        (> (length pts) 1)
      (progn

        (setq el   (entget cir)
              cp   (cdr (assoc 10 el))
              p1   (car pts)
              p2   (last pts)
              sta(angle cp p1)
              enda (angle cp p2)
              el   (vl-remove-if
                     '(lambda (x) (or (= -1 (car x)) (= 0 (car x))))
                     el
                   ) ;_ vl-remove-if
              el   (append
                     (list '(0 . "ARC"))
                     el
                     (list '(100 . "AcDbArc") (cons 50 sta) (cons 51 enda))
                   ) ;_ append
        ) ;_ setq
        (entmake el)
        (entdel cir)
      ) ;_ progn
    ) ;_ if

) ;_ while
) ;_ defun

chpmould 发表于 2011-5-8 20:10:20

Gu_xl 发表于 2011-5-8 17:44 static/image/common/back.gif
回复 chpmould 的帖子

版主,我测试了一下,有时打不断,有时侯打断的位置不对。。。

Gu_xl 发表于 2011-5-8 20:52:40

回复 chpmould 的帖子

还需要判断分割曲线的走向,顺时针或逆时针!圆弧的方向始终是逆时针,本程序仅仅只是按曲线逆时针走向来计算的!判断曲线逆时针、顺时针你在论坛搜一下,有很多示例代码!

chpmould 发表于 2011-5-9 17:34:20

本帖最后由 chpmould 于 2011-5-9 17:40 编辑

Gu_xl 发表于 2011-5-8 20:52 http://bbs.mjtd.com/static/image/common/back.gif
回复 chpmould 的帖子

还需要判断分割曲线的走向,顺时针或逆时针!圆弧的方向始终是逆时针,本程序仅仅只 ...

谢谢!
    不知版主是否有求直线和圆交点的函数例子,我主要是想学习下如何求直线和圆交点

Gu_xl 发表于 2011-5-10 00:22:59

回复 chpmould 的帖子

两条曲线求交点在4楼的代码中已经给出来了!没有看懂代码吗?求交点使用函数'IntersectWith
,代码中pts就是交点的点表!

chpmould 发表于 2011-5-10 18:08:30

Gu_xl 发表于 2011-5-10 00:22 static/image/common/back.gif
回复 chpmould 的帖子

两条曲线求交点在4楼的代码中已经给出来了!没有看懂代码吗?求交点使用函数'Inters ...

很少用VL,还没有完全看明白,我再去看函数手册研究一下你的代码。。。

墨者 发表于 2018-3-28 01:29:54

谢谢楼主分享
页: [1]
查看完整版本: 直线和圆的交点打断