明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1137|回复: 8

[已解答] 给出面积范围选定多段线

[复制链接]
发表于 2015-10-22 18:36:35 | 显示全部楼层 |阅读模式
例如:选择面积在990到1100之间多段线(一个极端的例子是明知道面积是1000,但按等于1000却选不上,只能利用快速选择选两次:>999和<1001)
发表于 2015-10-22 20:16:42 | 显示全部楼层
可以个别验证
= / equal 分出其差异性
 楼主| 发表于 2015-10-23 14:55:47 | 显示全部楼层
Andyhon 发表于 2015-10-22 20:16
可以个别验证
用 = / equal  分出其差异性

请问:类似(ssget "X" '((0 . "LWpolyline") ...990...1010...))的表达式怎么写?
发表于 2015-10-23 15:08:55 | 显示全部楼层
没有这样的表达式,ssget的这种选择基本上是基于组码的,而实体是没有直接的关于面积的组码的。
发表于 2015-10-23 16:07:03 | 显示全部楼层
先全选,再分别计算排除equal,and<<可以考虑
发表于 2015-10-23 16:20:01 | 显示全部楼层
如果作为比较条件的东东没有相应的组码,那么无法用ssget直接得到,只能先选择出来再进行二次判断
至于用别的方法是不是可以不清楚
 楼主| 发表于 2015-10-24 14:22:40 来自手机 | 显示全部楼层
llsheng_73 发表于 2015-10-23 16:20
如果作为比较条件的东东没有相应的组码,那么无法用ssget直接得到,只能先选择出来再进行二次判断
至于用别 ...

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

点评

(vla-get-area(vlax-ename->vla-object(car(entsel))))  发表于 2015-10-24 22:45
 楼主| 发表于 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)
)
发表于 2016-1-18 15:02:59 | 显示全部楼层
顶一个,想学习一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-20 19:51 , Processed in 0.184790 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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