找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 512|回复: 2

[求助] 如何实现选择一条线就可以把相连接的线变成闭合多义线?

[复制链接]

已领礼包: 160个

财富等级: 日进斗金

发表于 2017-8-8 10:54:07 | 显示全部楼层 |阅读模式

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

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

×
1.gif
如图,选择一条线,其它和这条线相连的组成闭合多义线。需要效果如图
这个代码需要框选全部线才能实现
(defun c:vv (/ ssa ssa-ent ent-p i)
     (setvar "cmdecho" 0) ;指令执行过程不响应
     (PRINC "\n将所选直线变成闭合线")
(princ "\n请选取要闭合的直线:")
(command "undo" "be");设置返回起始点
(setq ssa (ssget))
(setq i 0)
(while (< i (sslength ssa))
(setq ssa-ent (ssname ssa i))
(setq ent-p (cdr(assoc 0 (entget ssa-ent))))
(if (not (null ent-p));判断原图元是否已串入多义线
(if (or (= ent-p "LWPOLYLINE") (= ent-p "POLYLINE"));判断原图元属性
(command "pedit" ssa-ent "j" ssa "" "")
(command "pedit" ssa-ent "y" "j" ssa "" "")
))
(setq i (1+ i))
)
(command "undo" "e");设置返回终止点
     (PRINC "\n将所选直线变成闭合多义线完成!")(PRINC))


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

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-8-8 11:19:02 | 显示全部楼层
如果你想拾取某根线实现的话,

1、取得线的端点
2、从一个端点构造一个适当精度的矩形选择集,选择集去掉这根线,然后判断其他选择集实体,比如LINE,判断端点是否重合(或有小断口,你在扩展下FILLET)
3、接着上面找到的线重复做1

不过这种方法,你要是有这些连续闭合挨着的才好,如果附近实体多,还有其他线等干扰,你可能要出错或完不成,反而效率可能不高,这不是高大尚和窗选比较。也不代表技术就高。 代码可靠,同时也足够方便用户才是好的。

所以,还是窗选下可靠,窗口选很多时候是快的,因为不用精度的选,单选还要仔细(甚至放大屏幕才点得到),
而且使用 pedit m 选项,可以很快的帮你连成功而且可靠。

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 02:32 , Processed in 0.218995 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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