明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4620|回复: 25

[已解答] 点选多段线

[复制链接]
发表于 2014-7-3 13:36:31 | 显示全部楼层 |阅读模式
本帖最后由 77077 于 2014-7-4 13:01 编辑

如图所示,在红线范围内任意点点击一下,程序选中红线
能过滤下,
1.特定图层(比如说:"图层A"),其余图层不选.
2.只选多段线,其余不选.
3.只选闭合的,不闭合不选.
4.如果不满足上述三个条件,提示找不到,然后退出.
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2014-7-3 14:58:50 | 显示全部楼层
思路1,不知道行不行~~
1点取一个位置,运行BOUNDARY,定义为ent1,向外偏移0.00001,定义为ent2
2取得ent1的顶点列表pt_list然后(ssget "CP"pt_list)选择图元列表ss1.(ssget "WP"pt_list)选择图元列表ss2.
3.取得ent2的顶点列表pt_list然后(ssget "CP"pt_list)选择图元列表ss3.
4从ss1中剔除ss2和ss3
5.删除ent1ent2

发表于 2014-7-3 15:49:15 | 显示全部楼层

  1. (defun c:tt (/ e el pts ss)
  2.   (if (and (setq e (car (entsel "\nPick Polyline: ")))
  3.            (setq el (entget e))
  4.            (= (cdr (assoc 0 el)) "LWPOLYLINE")
  5.            (setq pts (vl-remove-if-not '(lambda (x) (= (car x) 10)) el))
  6.            (setq ss (ssget "F"
  7.                            (mapcar 'cdr pts)
  8.                            '((0 . "*POLYLINE")
  9.                              (-4 . "&=")
  10.                              (70 . 1)
  11.                              (8 . "0")
  12.                             )
  13.                     )
  14.            )
  15.            (progn
  16.              (ssdel e ss)
  17.              t
  18.            )
  19.       )
  20.     (princ (sslength ss))
  21.   )
  22.   (princ)
  23. )
 楼主| 发表于 2014-7-3 16:11:00 | 显示全部楼层
ivde 发表于 2014-7-3 15:49

不行啊,我的意思是点一个点,就选中这个点所在的闭合多段线.
发表于 2014-7-3 16:34:36 | 显示全部楼层
77077 发表于 2014-7-3 16:11
不行啊,我的意思是点一个点,就选中这个点所在的闭合多段线.

你的这个要求有点离奇,“在红线内任意点点击一下”,点击一下为什么选中的是红线,而不是其它线?红线很帅么?超凡脱俗?
 楼主| 发表于 2014-7-3 16:50:45 | 显示全部楼层
ll_j 发表于 2014-7-3 16:34
你的这个要求有点离奇,“在红线内任意点点击一下”,点击一下为什么选中的是红线,而不是其它线?红线很 ...

嘿嘿.因为是特殊需要.当然了用entsel也能选,
不过我就是要用指定点的方式来选~

发表于 2014-7-3 17:43:02 | 显示全部楼层
77077 发表于 2014-7-3 16:50
嘿嘿.因为是特殊需要.当然了用entsel也能选,
不过我就是要用指定点的方式来选~

除了点一下选中红线外,其它都容易实现,所以正解应该是entsel红线,ivde的程序就大致可以(我没有测试)。
点一下选中红线,不是不能实现,但相对复杂,首先,这里还有其它闭合多段线,也可能有其它红色线条,为了一个“理想化”的要求去无谓判别是不值得的,又假定你把红色多段线赋予什么特殊的特性,可能判别会容易,但你怎样去画这个红线呢?可能花的功夫要多很多,还是不值得。
发表于 2014-7-3 21:05:55 | 显示全部楼层
可以实现但是太过于局限性
 楼主| 发表于 2014-7-4 10:16:44 | 显示全部楼层
本帖最后由 77077 于 2014-7-4 10:43 编辑
ll_j 发表于 2014-7-3 17:43
除了点一下选中红线外,其它都容易实现,所以正解应该是entsel红线,ivde的程序就大致可以(我没有测试) ...

有些时候,entsel不是那么好用.
如下图这种情况,你叫我如何能快速选中中间红色那个方框呢?所以才诞生了如题所想!
换句话说,就是点一下填充的任意位置,都能选中填充边界填充边界线不能拆除重建,因为边界线里面有已定义好的拓展属性ldata.
红线全部在图层"填充边界线","填充边界线"图层上有且只有多段线,
填充图案根据不同的颜色分别在不同的层.

本帖子中包含更多资源

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

x
发表于 2014-7-4 10:27:41 | 显示全部楼层
本帖最后由 风树 于 2014-7-4 11:22 编辑

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

本版积分规则

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

GMT+8, 2025-5-24 09:15 , Processed in 0.203234 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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