菜卷鱼 发表于 2022-9-28 11:14:51

选择屏幕外某个范围某些对象的一个思路


到这里去学习了一下 ,受到启发 ssget 用法详解

首先声明一下,这个方法不是通用的,
某些特定情况下相当于栏选
无法窗选,想要窗选效果需要自己去排除

假设范围左下角是p1,右上角是p2
先取出坐标



(setq        x1 (car p1)
        y1 (cadr p1)
)
(setq        x2 (car p2)
        y2 (cadr p2)
)

再用ssget去筛选、


(setq
       ss1
        (ssget "X"
             (list
               '(0 . "INSERT")
               '(-4 . ">,>,*")
               (list 10 x1 y1 0)
             )
        )
   )
   (setq
       ss2
        (ssget "X"
             (list
               '(0 . "INSERT")
               '(-4 . "<,<,*")
               (list 10 x2 y2 0)
             )
        )
   )


ss1 表示从指定的左下角无限往右上角选
ss2 表示从指定的右上角无限往左下角选
取两个选择集的交集就是基点在指定范围的块
但是这个块具体是不是自己想要的范围要看自己的具体需求
我是用这个方法将图框内的索引序号与明细表相互定位,很好用


masterlong 发表于 2022-9-28 11:32:41

这个思路
其实我一直很后悔把它放出来
因为这种筛选方式有很严重的隐患
除了line、pline等少数图元
其它图元要应用
需要有严格的限制

比方说
你的块心就在图块包围盒内
这种过滤方式成功的几率会较高
但也不是100%
块心偏离包围盒极远的情况下
这方法根本就不能用
至于圆、弧之类的
漏选误选的可能就更高了

masterlong 发表于 2022-9-28 16:23:40

不是这样的
现在觉得好用
其实只是因为没有碰到“意外”

暂且不说块心和图块的关系
就说210组码不为001吧

如果确定能避免掉所有的坑
这方法当然没问题

菜卷鱼 发表于 2022-9-28 14:09:22

masterlong 发表于 2022-9-28 11:32
这个思路
其实我一直很后悔把它放出来
因为这种筛选方式有很严重的隐患


指定范围是一个图框内,就好用了

VBALISPER 发表于 2022-9-28 11:39:03

谢谢两位长老的经验分享。

自贡黄明儒 发表于 2022-9-28 11:39:18

G版不是早写过选择屏外的东西吗?

wzg356 发表于 2022-9-28 12:42:04

还是zoom快,选好后是否返回原窗口可以设定。64位计算机几乎感觉不到切换

d1742647821 发表于 2022-9-28 21:01:55

4叉树了解一下

Linxian1028 发表于 2022-9-29 17:23:16

有没有vb.net版的?

烟盒迷唇 发表于 2022-9-29 17:46:51

SSGET "X"在图纸数据很多的时候会不会很慢呢
页: [1] 2
查看完整版本: 选择屏幕外某个范围某些对象的一个思路