明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3473|回复: 9

[基础] 直线和圆的交点打断

[复制链接]
发表于 2011-5-7 21:28:47 | 显示全部楼层 |阅读模式
本帖最后由 chpmould 于 2011-5-8 10:05 编辑

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

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2011-5-7 23:26:12 | 显示全部楼层
按TR 然后双挤右键或是空格键,点击不要的线条,效果就出来了
 楼主| 发表于 2011-5-8 10:06:28 | 显示全部楼层
本帖最后由 chpmould 于 2011-5-8 10:06 编辑
陈貌 发表于 2011-5-7 23:26
按TR 然后双挤右键或是空格键,点击不要的线条,效果就出来了


我是想求直线和圆的交点,然后按交点打断...
发表于 2011-5-8 17:44:51 | 显示全部楼层
回复 chpmould 的帖子

  1. (defun c:tt (/ cir curve pl pts el sta enda cp p1 p2)
  2.   (while (and
  3.            (setq cir (car (entsel "\n选择圆:")))
  4.            (setq curve (car (entsel "\n选择分割曲线:")))
  5.          ) ;_ and
  6.     (setq pl (vlax-invoke
  7.                (vlax-ename->vla-object cir)
  8.                'IntersectWith
  9.                (vlax-ename->vla-object curve)
  10.                acExtendNone
  11.              ) ;_ vlax-invoke
  12.     ) ;_ setq
  13.     (while pl
  14.       (setq pts        (append pts (list (list (car pl) (cadr pl) (caddr pl))))
  15.             pl        (cdr (cdr (cdr pl)))
  16.       ) ;_ setq
  17.     ) ;_ while
  18.     (if        (> (length pts) 1)
  19.       (progn

  20.         (setq el   (entget cir)
  21.               cp   (cdr (assoc 10 el))
  22.               p1   (car pts)
  23.               p2   (last pts)
  24.               sta  (angle cp p1)
  25.               enda (angle cp p2)
  26.               el   (vl-remove-if
  27.                      '(lambda (x) (or (= -1 (car x)) (= 0 (car x))))
  28.                      el
  29.                    ) ;_ vl-remove-if
  30.               el   (append
  31.                      (list '(0 . "ARC"))
  32.                      el
  33.                      (list '(100 . "AcDbArc") (cons 50 sta) (cons 51 enda))
  34.                    ) ;_ append
  35.         ) ;_ setq
  36.         (entmake el)
  37.         (entdel cir)
  38.       ) ;_ progn
  39.     ) ;_ if

  40.   ) ;_ while
  41. ) ;_ defun

点评

除了用break和entmake,是否还有其他的方法?break好像有点慢,entmake似乎无法通用所有情况。。。请G版赐教!  发表于 2011-11-21 18:44
 楼主| 发表于 2011-5-8 20:10:20 | 显示全部楼层
Gu_xl 发表于 2011-5-8 17:44
回复 chpmould 的帖子

版主,我测试了一下,有时打不断,有时侯打断的位置不对。。。
发表于 2011-5-8 20:52:40 | 显示全部楼层
回复 chpmould 的帖子

还需要判断分割曲线的走向,顺时针或逆时针!圆弧的方向始终是逆时针,本程序仅仅只是按曲线逆时针走向来计算的!判断曲线逆时针、顺时针你在论坛搜一下,有很多示例代码!
 楼主| 发表于 2011-5-9 17:34:20 | 显示全部楼层
本帖最后由 chpmould 于 2011-5-9 17:40 编辑
Gu_xl 发表于 2011-5-8 20:52
回复 chpmould 的帖子

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


谢谢!
    不知版主是否有求直线和圆交点的函数例子,我主要是想学习下如何求直线和圆交点
发表于 2011-5-10 00:22:59 | 显示全部楼层
回复 chpmould 的帖子

两条曲线求交点在4楼的代码中已经给出来了!没有看懂代码吗?求交点使用函数'IntersectWith
,代码中pts就是交点的点表!
 楼主| 发表于 2011-5-10 18:08:30 | 显示全部楼层
Gu_xl 发表于 2011-5-10 00:22
回复 chpmould 的帖子

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

很少用VL,还没有完全看明白,我再去看函数手册研究一下你的代码。。。
发表于 2018-3-28 01:29:54 | 显示全部楼层
谢谢楼主分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-19 19:42 , Processed in 0.198090 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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