cyq405 发表于 2015-10-22 18:36:35

给出面积范围选定多段线

例如:选择面积在990到1100之间多段线(一个极端的例子是明知道面积是1000,但按等于1000却选不上,只能利用快速选择选两次:>999和<1001)

Andyhon 发表于 2015-10-22 20:16:42

可以个别验证
用 = / equal 分出其差异性

cyq405 发表于 2015-10-23 14:55:47

Andyhon 发表于 2015-10-22 20:16 static/image/common/back.gif
可以个别验证
用 = / equal分出其差异性

请问:类似(ssget "X" '((0 . "LWpolyline") ...990...1010...))的表达式怎么写?

ll_j 发表于 2015-10-23 15:08:55

没有这样的表达式,ssget的这种选择基本上是基于组码的,而实体是没有直接的关于面积的组码的。

crazylsp 发表于 2015-10-23 16:07:03

先全选,再分别计算排除equal,and<<可以考虑

llsheng_73 发表于 2015-10-23 16:20:01

如果作为比较条件的东东没有相应的组码,那么无法用ssget直接得到,只能先选择出来再进行二次判断
至于用别的方法是不是可以不清楚

cyq405 发表于 2015-10-24 14:22:40

llsheng_73 发表于 2015-10-23 16:20
如果作为比较条件的东东没有相应的组码,那么无法用ssget直接得到,只能先选择出来再进行二次判断
至于用别 ...

看来需要二次判断才能确定了。其实获取多段线的面积也不容易。

cyq405 发表于 2015-10-26 14:45:35

谢谢指点。好像是这个样子:
(defun aqujm(amin amax / ss1 ent)
(SETQ SS1 NIL)
(vl-load-com)
(if (setq ss (ssget '((0 . "LWpolyline"))))
    (progn
      (setq i -1 ss1 (ssadd))
      (repeat (sslength ss)
        (setq ent(ssname ss (setq i (1+ i))))
        (setq mmji (vla-get-area (vlax-ename->vla-object ent)))
        (if (and (> mmji amin)(< mmji amax))
          (ssadd ent ss1)
        )
      )
    )
)
(sssetfirst nil ss1)
)

QJGUANBA 发表于 2016-1-18 15:02:59

顶一个,想学习一下
页: [1]
查看完整版本: 给出面积范围选定多段线