明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 663|回复: 4

[提问] 请问如何得到多段线中直线与圆弧衔接的所有衔接点?

[复制链接]
发表于 2021-11-7 09:31:01 | 显示全部楼层 |阅读模式
请问如何得到多段线中直线与圆弧衔接的所有衔接点?
圆弧段有可能是多段圆弧组成的。我的理解是检测这两种情况:一:组码42由0变成非0,二:组码42由非0变成0,但具体实现代码不知道怎么写。请大神赐教。
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2021-11-7 10:21:59 | 显示全部楼层
就是判断类型,但我也没写过
还有一种是判断凸度,凸度不为0的就是圆弧了
 楼主| 发表于 2021-11-8 08:50:08 | 显示全部楼层
革天明 发表于 2021-11-7 10:21
就是判断类型,但我也没写过
还有一种是判断凸度,凸度不为0的就是圆弧了

是的,关键是要找出所有凸度由0变非0和由非0变0的所有位置。
发表于 2021-11-8 17:21:26 | 显示全部楼层
(defun c:tt (/ ent obj pt lst co1 co2 i)
  (vl-load-com)
  (setq ent (car (entsel)))
  (setq obj (vlax-ename->vla-object ent))
  (setq lst '())
  (setq i 0)
  (repeat (- (cdr (assoc 90 (entget ent))) 1)
    (setq co1 (vla-getBulge obj i))
    (setq co2 (vla-getBulge obj (1+ i)))
    (cond ((and (= co1 0) (/= co2 0))
           (setq pt (vlax-safearray->list
                      (vlax-variant-value (vla-get-Coordinate obj (1+ i)))
                    )
           )
           (setq lst (cons pt lst))
          )
          ((and (/= co1 0) (= co2 0))
           (setq pt (vlax-safearray->list
                      (vlax-variant-value (vla-get-Coordinate obj (1+ i)))
                    )
           )
           (setq lst (cons pt lst))
          )
    )
    (setq i (1+ i))
  )
  lst
)

评分

参与人数 1明经币 +1 收起 理由
vbnewer + 1 很给力!

查看全部评分

 楼主| 发表于 2021-11-8 22:04:56 | 显示全部楼层
gaics 发表于 2021-11-8 17:21
(defun c:tt (/ ent obj pt lst co1 co2 i)
  (vl-load-com)
  (setq ent (car (entsel)))

第一次认识vla-getBulge这个函数,很好很强大,多谢大佬指点!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-17 06:44 , Processed in 0.169474 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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