yhly555 发表于 2015-11-4 16:04:14

获取扩展数据问题

本帖最后由 yhly555 于 2015-11-4 18:08 编辑

各位大侠好,我是初学者,我用命令: (entget (car (entsel)) '("SOUTH"))获取扩展数据时出来下面的表数据,

((-1 . <图元名: 7ef7eb28>) (0 . "LWPOLYLINE") (5 . "425") (102 .
"{ACAD_REACTORS") (330 . <图元名: 7ef7eb58>) (102 . "}") (330 . <图元名:
7ef7ccc0>) (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "JZD") (6 .
"Continuous") (100 . "AcDbPolyline") (90 . 3) (70 . 129) (43 . 0.15) (38 . 0.0)
(39 . 0.0) (10 146.388 83.064) (40 . 0.15) (41 . 0.15) (42 . 0.0) (10 165.256
48.3942) (40 . 0.15) (41 . 0.15) (42 . 0.0) (10 135.432 62.181) (40 . 0.15) (41
. 0.15) (42 . 0.0) (210 0.0 0.0 1.0) (-3 ("SOUTH" (1000 . "300000") (1000 .
"4690031142060") (1000 . "张某某") (1000 . "251"))))

如果用 (entget (assoc -3 (car (entsel)) '("SOUTH")))显示下面数据,

( (-3 ("SOUTH" (1000 . "300000") (1000 . "4690031142060") (1000 . "张某某") (1000 . "251"))))

请问怎么做才能只获取“张某某”或“4690031142060”或"251"的数据,谢谢!

Gu_xl 发表于 2015-11-4 20:09:26

(cadr(cddadr (assoc -3 (entget (car (entsel)) '("SOUTH")))))

yhly555 发表于 2015-11-5 11:21:17

Gu_xl 发表于 2015-11-4 20:09 static/image/common/back.gif
(cadr(cddadr (assoc -3 (entget (car (entsel)) '("SOUTH")))))

谢谢!如果我想直接获取“张某某”,前面的“1000”不要,又该怎么做的,初学者啥都不会,勿喷。
命令: (cadr(cddadr (assoc -3 (entget (car (entsel)) '("SOUTH")))))
选择对象: (1000 . "张某某")

ll_j 发表于 2015-11-5 11:33:27

扩展数据都是按一定次序写进实体的,每个数据的位置都是确定的,既然是自己确定的次序,再拿回来不是应该很容易么?
得到扩展数据的表,使用nth函数取就行了。

yhly555 发表于 2015-11-5 11:45:33

ll_j 发表于 2015-11-5 11:33 static/image/common/back.gif
扩展数据都是按一定次序写进实体的,每个数据的位置都是确定的,既然是自己确定的次序,再拿回来不是应该很 ...

通过层上的方法已经缩短围范了,但是我只想获得"张某某",该怎么写,请各位大神指教。

edata 发表于 2015-11-5 11:52:15

再加个cdr
(cdr(cadr(cddadr (assoc -3 (entget (car (entsel)) '("SOUTH"))))))

czcxxx 发表于 2015-11-5 11:53:09

今天又学了一招!!!!
谢谢Gu_xl !!!

yhly555 发表于 2015-11-5 12:39:45

edata 发表于 2015-11-5 11:52 static/image/common/back.gif
再加个cdr
(cdr(cadr(cddadr (assoc -3 (entget (car (entsel)) '("SOUTH"))))))

可以了,非常感谢!

czcxxx 发表于 2015-11-6 15:26:31

关于获取删除扩展数据问题又学了一招!!
页: [1]
查看完整版本: 获取扩展数据问题