明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2072|回复: 13

[提问] 关于SSGET选择扩展数据

[复制链接]
发表于 2015-6-29 16:30 | 显示全部楼层 |阅读模式
图形边线可以查询到属性
((-1 . <图元名: 7ee6f9b8>) (0 . LWPOLYLINE) (5 . 4A7) (102 .
{ACAD_REACTORS) (330 . <图元名: 7ee6f9c0>) (102 . }) (330 . <图元名: 7ee6dcc0>)
(100 . AcDbEntity) (67 . 0) (410 . Model) (8 . JMD) (6 . Continuous) (100 .
AcDbPolyline) (90 . 4) (70 . 129) (43 . 0.0) (38 . 0.0) (39 . 0.0) (10 193.223
72.2861) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 193.223 12.5437) (40 . 0.0) (41 .
0.0) (42 . 0.0) (10 260.582 12.5437) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10
260.582 72.2861) (40 . 0.0) (41 . 0.0) (42 . 0.0) (210 0.0 0.0 1.0)

(-3 (SOUTH
(1000 . 141111) (1040 . 5.0))))

用ssget 选择
(setq ss (ssget "x" (list (list -3 (list "SOUTH" (cons 1000 "141111"))))))  可以选择得到


文字可以查询到属性

((-1 . <图元名: 7ee6f9d0>) (0 . TEXT) (5 . 4AA) (102 .
{ACAD_REACTORS) (330 . <图元名: 7ee6f9c0>) (102 . }) (330 . <图元名: 7ee6dcc0>)
(100 . AcDbEntity) (67 . 0) (410 . Model) (8 . JMD) (6 . Continuous) (100 .
AcDbText) (10 223.044 39.9149 0.0) (40 . 5.0) (1 . 砼) (50 . 0.0) (41 . 0.8)
(51 . 0.0) (7 . 细等线体) (71 . 0) (72 . 2) (11 226.778 42.4149 0.0) (210 0.0
0.0 1.0) (100 . AcDbText) (73 . 2)

(-3 (SOUTH (1000 . 141111-1))))

用ssget 选择
(setq ss (ssget "x" (list (list -3 (list "SOUTH" (cons 1000 "141111-1"))))))  

却选择不到,不知道哪里出文图了,求教。。。。。
发表于 2019-5-22 16:54 来自手机 | 显示全部楼层
只能选择多段线,其他的都选择不了(setq ss (LC:ssget-CASSCode (list (cons 0 "line")(cons 8 "DMX")'(-3 ("south"))) "992000")) (defun LC:ssget-CASSCode(filter sCode / ss sn si i ed sc scss)         (setq ss(ssget "X" filter ))         (setq sn (if ss (sslength ss) 0))         (setq scss(ssadd))         (setq i 0)         (while(< i sn)                 (setq si(ssname ss i))                 (setq ed(entget si '("south")))                 (setq sc(cdr(cadr (cadr (assoc -3 ed)))))                 (if(= sc sCode)                         (ssadd si scss)                 )                 (setq i(1+ i))         )         scss )

评分

参与人数 1明经币 +1 收起 理由
tryhi + 1

查看全部评分

发表于 2019-5-29 19:03 | 显示全部楼层
tryhi 发表于 2019-5-29 10:50
我的意思是选不到不是因为大小写的原因,而是因为图元类型的原因,自己追加一个扩展属性就能测试

你没明白我的意思:我的意思是并不是大小写的问题,而是符号与字符串的区别。如果是符号,那大小写无所谓,如果是字符串,那大小写就是不同的。但是CAD是不允许非字符串的注册名的。我仔细看了下一楼的,说可以选到,那就姑且认为SOUTH是个值为“south” 变量。
去除注册名的问题,应该是ssget 的过滤方式出现的问题,与图元类型无关(你可以使用扩展数据互换的方法来检验)。其根本问题是(cons 1000 "141111-1") , "-" 是个问题,你可考虑用其他字符代替 ,如(cons 1000 "141111a1")---意思是做程序命名时 就不要高什么带"-"的。我也没有去试验。
发表于 2019-6-5 09:41 | 显示全部楼层
lenlenq 发表于 2019-5-29 19:03
你没明白我的意思:我的意思是并不是大小写的问题,而是符号与字符串的区别。如果是符号,那大小写无所谓 ...

证明你还是没有去测试就下定论,跟图元类型有关系,只有多段线可以被选择,你看附件





本帖子中包含更多资源

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

x
发表于 2015-7-1 13:08 | 显示全部楼层
具体原因不明,查了下资料,"x"支持的组码如下图

本帖子中包含更多资源

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

x
发表于 2015-7-1 17:59 | 显示全部楼层
我觉得应该写成(list (list -3 (list 'SOUTH (cons 1000 "141111-1"))))就没问题了。
发表于 2019-1-19 22:22 | 显示全部楼层
貌似还是选择不到,请指教。
发表于 2019-1-23 16:35 | 显示全部楼层
我也是cass用户。我也觉得选不到。遇到这样的, 我都是全选谈好遍历的。
发表于 2019-5-25 17:56 | 显示全部楼层
问题出在这  --->(-3 (SOUTH
(1000 . 141111) (1040 . 5.0))))

上面的返回值中 注册名为SOUTH  但你选择时的过滤条件是“south”,两者不一样。没记错的话,注册名必须为字符串吧。
发表于 2019-5-26 19:19 | 显示全部楼层
lenlenq 发表于 2019-5-25 17:56
问题出在这  --->(-3 (SOUTH
(1000 . 141111) (1040 . 5.0))))

你可以自己测试一下,扩展数据只有多段线可以过滤,其他类型不行
发表于 2019-5-27 18:30 | 显示全部楼层
本帖最后由 lenlenq 于 2019-5-27 18:34 编辑
tryhi 发表于 2019-5-26 19:19
你可以自己测试一下,扩展数据只有多段线可以过滤,其他类型不行

我自己测试一下什么?我回答的是选不到的原因。你的回复我不懂呀。
发表于 2019-5-27 19:12 | 显示全部楼层
要测试也要提供图档呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-26 12:48 , Processed in 0.355725 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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