明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 61|回复: 8

[提问] 对于两条多段线,如何自适应延伸和剪切,使其首尾相连?

[复制链接]
发表于 昨天 22:12 | 显示全部楼层 |阅读模式




如图,想要编段代码,实现点击两条多段线,能自适应按需延伸和剪切。

初步思路如下:
1.先获取多段线1与多段线2的两个交点
2.选取离拾取点较近的交点,画一段很短的临时线
3.以这段很短的临时线为边界,分别对两条多段线先进行延伸再进行剪切
4.删除临时线

现在遇到的问题是,用(vlax-invoke obj1 'Intersectwith obj2 Flag)获取两条多段线的交点,得到的结果有5个交点,请问如何找到合适的那个交点?

或者各位大神有什么更加简便的方法吗?我只能想到这个笨办法了。

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 昨天 22:41 | 显示全部楼层
这个不是倒角的事?
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 22:45 | 显示全部楼层
本帖最后由 vbnewer 于 2024-11-28 22:51 编辑

对于两条直线可以采用倒角,对于两条多段线,使用倒角的方法多数情况下会出现意料外的结果,拾取点必须点在合适的位置才能得到期望的结果,感兴趣的话可以打开附件的测试图试试。
而且我还有一个小需求,希望保持每条多段线原有的颜色,如果采用倒角方法,会导致两条多段线合并成一条,颜色就统一了。
回复 支持 反对

使用道具 举报

发表于 昨天 23:08 | 显示全部楼层
用交点法 Flag 处有四个值可选 指明延伸方式
acExtendNone
acExtendThisEntity
acExtendOtherEntity
acExtendBoth
回复 支持 反对

使用道具 举报

发表于 昨天 23:11 | 显示全部楼层
不能指明延伸方式就 判断两个交点表 之间的距离 还有最笨的方法是PE和倒角
回复 支持 反对

使用道具 举报

发表于 昨天 23:23 | 显示全部楼层


  1. (defun c:tt ()
  2.   "延伸修剪处理"
  3.   (while (and (setq e1 (entsel "\n选择固定边线: "))
  4.               (setq e2 (entsel "\n选择延伸边线: "))
  5.          )
  6.     (setq s1 (car e1)
  7.           s2 (car e2)
  8.           pt (cadr e2)
  9.     )
  10.     (command "extend" e1 "" e2 "")
  11.     (setq p1  (vlax-curve-getStartPoint s1)
  12.           p2  (vlax-curve-getEndPoint s1)
  13.           lst (list p1 p2)
  14.           lst (vl-sort lst'(lambda (x y) (< (distance x pt) (distance y pt))))
  15.           p0  (car lst)
  16.     )
  17.     (command "trim" e2 "" (list s1 p0) "")
  18.   )
  19.   (princ)
  20. )

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 23:51 | 显示全部楼层
本帖最后由 vbnewer 于 2024-11-29 00:28 编辑

非常感谢版主大神指教,上面的代码对于我发的这个测试图确实很有效,谢谢。
我前面发的图可能有一定的特殊性,没有把几种情况都表达出来,重新发个全面点的,大神有空的时候请再指教一下,谢谢。





本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 小时前 | 显示全部楼层

对于我的这个图,fillet 0必须是拾取点正好点击在虚拟交点附近的那一段上的某些位置才可以,不能随意点击。
有空的话请下载测试图试一下,谢谢关注。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-29 04:31 , Processed in 0.162011 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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