cvbnm8888 发表于 2015-6-29 16:30:21

关于SSGET选择扩展数据

图形边线可以查询到属性
((-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"))))))

却选择不到,不知道哪里出文图了,求教。。。。。

13648893846 发表于 2019-5-22 16:54:04

只能选择多段线,其他的都选择不了(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 )

lenlenq 发表于 2019-5-29 19:03:16

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

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

tryhi 发表于 2019-6-5 09:41:04

lenlenq 发表于 2019-5-29 19:03
你没明白我的意思:我的意思是并不是大小写的问题,而是符号与字符串的区别。如果是符号,那大小写无所谓 ...
证明你还是没有去测试就下定论,跟图元类型有关系,只有多段线可以被选择,你看附件





fan_zh 发表于 2015-7-1 13:08:47

具体原因不明,查了下资料,"x"支持的组码如下图

newbuser 发表于 2015-7-1 17:59:31

我觉得应该写成(list (list -3 (list 'SOUTH (cons 1000 "141111-1"))))就没问题了。

虾屮蛋 发表于 2019-1-19 22:22:31

貌似还是选择不到,请指教。

yanshengjiang 发表于 2019-1-23 16:35:01

我也是cass用户。我也觉得选不到。遇到这样的, 我都是全选谈好遍历的。

lenlenq 发表于 2019-5-25 17:56:46

问题出在这--->(-3 (SOUTH
(1000 . 141111) (1040 . 5.0))))

上面的返回值中 注册名为SOUTH但你选择时的过滤条件是“south”,两者不一样。没记错的话,注册名必须为字符串吧。

tryhi 发表于 2019-5-26 19:19:11

lenlenq 发表于 2019-5-25 17:56
问题出在这--->(-3 (SOUTH
(1000 . 141111) (1040 . 5.0))))



你可以自己测试一下,扩展数据只有多段线可以过滤,其他类型不行

lenlenq 发表于 2019-5-27 18:30:20

本帖最后由 lenlenq 于 2019-5-27 18:34 编辑

tryhi 发表于 2019-5-26 19:19
你可以自己测试一下,扩展数据只有多段线可以过滤,其他类型不行
我自己测试一下什么?我回答的是选不到的原因。你的回复我不懂呀。

lenlenq 发表于 2019-5-27 19:12:54

要测试也要提供图档呀
页: [1] 2
查看完整版本: 关于SSGET选择扩展数据