找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 633|回复: 2

[求助] [求助]:请教选择集问题?

[复制链接]
发表于 2004-2-27 18:23:59 | 显示全部楼层 |阅读模式

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

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

×
AutoLisp 参考中有这样的一段内容。
用户也可以创建使用下表中的逻辑分组运算符的嵌套布尔表达式,以此来对组进行测试:

选择集过滤器表中的分组运算符

起始运算符    包含的内容        结束运算符
"<AND"        一个或多个操作数         "AND>"
"<OR"        一个或多个操作数         "OR>"
"<XOR"        两个操作数         "XOR>"
"<NOT"        一个操作数         "NOT>"
与关系运算符类似,分组运算符也由 -4 组指定。它们是成对出现的,必须在过滤器表中适当均衡,否则 ssget 调用将失败。下面是一个在过滤器表中进行分组运算的例子:


此代码选择所有半径为 1.0 的圆和所有位于图层“ABC”上的线。分组运算符不区分大小写,例如,可以用“and>”、“<or”代替“AND>”、“<OR”。

(ssget "X"

'(
    (-4 . "<OR")
      (-4 . "<AND")
        (0 . "CIRCLE")
        (40 . 1.0)
      (-4 . "AND>")
      (-4 . "<AND")
        (0 . "LINE")
        (8 . "ABC")
      (-4 . "AND>")
    (-4 . "OR>")
  )

)

        
[B]这个功能很好用,可我将(0 . "CIRCLE")(40 . 1.0)设为变量时却不能执行出正确结果[/B]


  1. (setq li1 (0 . "CIRCLE")
  2.          li2 (40 . 1.0)
  3.          li3 (0 . "LINE")
  4.          li4 (8 . "ABC")
  5.       )
  6. (ssget "X"
  7. '(
  8.     (-4 . "<OR")
  9.       (-4 . "<AND")
  10.         li1
  11.         li2
  12.       (-4 . "AND>")
  13.       (-4 . "<AND")
  14.         li3
  15.         li4
  16.       (-4 . "AND>")
  17.     (-4 . "OR>")
  18.   )
  19. )


请各位大侠指导
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-2-27 18:33:54 | 显示全部楼层
简直昏到,前后不匹配,变量乱用
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2004-2-27 21:19:50 | 显示全部楼层

Re: [求助]:请教选择集问题?

最初由 zhangrz 发布
[B]AutoLisp 参考中有这样的一段内容。
用户也可以创建使用下表中的逻辑分组运算符的嵌套布尔表达式,以此来对组进行测试:

选择集过滤器表中的分组运算符

起始运算符    包含的内容        结束运算符
"<AND"        一个或... [/B]


暂且撇开关系判断,关于表有以下几点需要说明:
1.“'”(quote)作为前导,跟随的是没有运算的表或原子,所以

  1. (setq aa '(0 . "LINE"))
  2.          bb '(aa (8 . "0"))   ;aa在“'”表中,没有进行运算
  3. )
  4. ;;与
  5. (setq bb '((0 . "LINE") (8 . "0")))
  6. ;;是不同的,构成这样的表可以用
  7. (setq bb (list aa '(8 . "0")))   ;另外可参见函数cons

2.作为一个点对表(或其他表),除非有“'”前缀,否则应视为运行以第一个原子为函数名的过程(其实“'”前缀是运行quote函数),这样,如“(setq aa (0 . "LINE"))”就不成立,应该写为“(setq aa '(0 . "LINE"))”。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 02:03 , Processed in 0.256414 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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