乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 23|回复: 4

[编程交流] 使用variabl的SSet过滤器列表

[复制链接]

37

主题

125

帖子

87

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
190
发表于 2022-7-6 14:34:38 | 显示全部楼层 |阅读模式
大家好,
 
我曾多次尝试在过滤器列表中使用变量而不是字符串,但都没有成功
 
  1. (setq sset (ssget "X" ' ((2 . "BLOCKNAME"))))
  2. ;This works fine
  3. (setq BLOCKNAME "Testblock")
  4. (setq sset (ssget "X" ' (2 . BLOCKNAME))))
  5. ;this returns an error along the lines of: Bad filter in ssget

 
我有什么遗漏吗?
 
谢谢
奥利
回复

使用道具 举报

5

主题

194

帖子

193

银币

初来乍到

Rank: 1

铜币
24
发表于 2022-7-6 14:58:19 | 显示全部楼层
奥利,
 
如果要将变量传递给选择集,则需要使用列表而不是引号
 
这应该行得通
 
  1. (setq BLOCKNAME "Testblock")
  2. (setq sset (ssget "X" ([color="blue"]list[/color] (cons 2 BLOCKNAME))))

 
LIST和QUOTE之间的主要区别在于,QUOTE返回一个表达式而不进行求值。使用LIST可以在创建实际列表之前计算所有表达式
 
 
 
在您的第一个示例中,您可以声明要搜索的块名。无需计算任何内容,AutoCAD只需假设选择过滤器正确,并搜索相关对象
 
 
在第二个示例中,您试图将变量传递到选择集中。为了理解这一点,AutoCAD首先需要评估过滤器,然后搜索对象。在这种情况下,列表是合适的
 
希望这有点道理
 
当做
 
杰米
回复

使用道具 举报

37

主题

125

帖子

87

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
190
发表于 2022-7-6 15:18:48 | 显示全部楼层
杰米:谢谢,效果很好。还感谢您详细介绍了它的工作原理。我从中学到了很多
 
 
 
奥利
回复

使用道具 举报

20

主题

344

帖子

325

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-6 15:34:12 | 显示全部楼层
有件有趣的事。尝试键入:
 
(键入“某物”)
 
在命令行中,查看返回的内容。将其与以下内容进行比较:
 
(键入“某物”)
 
此外,请尝试在AutoLISP帮助文件中查找(vl符号名称)和(读取)函数。
回复

使用道具 举报

5

主题

194

帖子

193

银币

初来乍到

Rank: 1

铜币
24
发表于 2022-7-6 15:41:34 | 显示全部楼层
 
没问题,欢迎光临!很乐意帮忙
 
杰米
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-5 00:34 , Processed in 0.319033 second(s), 62 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表