danxingpen 发表于 2008-4-22 10:40:00

(setq objent(car(entsel)))<br/>(setq ent(entget objent))<br/>(setq entall(entget objent '("djinfo")))<br/>(setq appent(cadr(assoc -3 entall)))<br/>(setq appent(mapcar '(lambda(x)(if (equal  x '(1000 . "253")) '(1000 . "072") x)) appent))<br/>                                                                             ;看前面一个(1000 . "253")是你要修改的,<br/>                                                                             ;后面一个(1000 . "072")是你想修改到的值---<br/>(setq appent(append (list -3) (list appent)))<br/>(setq entall(append ent (list appent)))<br/>(entmod entall)

龙龙仔 发表于 2008-4-22 17:06:00

樓主指的(1000 . "253")應該是位置吧!

zml84 发表于 2008-4-22 20:33:00

层层扒皮<br/>层层回溯

Nico 发表于 2024-7-23 14:42:18

danxingpen 发表于 2008-4-22 10:40
(setq objent(car(entsel)))(setq ent(entget objent))(setq entall(entget objent '("djinfo")))(setq app ...

下面是对每一行代码的详细分析:

1. `(setq objent (car (entsel)))`
   - 这行代码通过`entsel`函数选择一个实体,并将其存储在变量`objent`中。`entsel`函数会弹出一个选择框让用户选择一个实体,并返回一个包含该实体的列表。`car`函数用于提取列表中的第一个元素,即选择的实体。

2. `(setq ent (entget objent))`
   - 这行代码使用`entget`函数获取所选实体的完整数据,并将其存储在变量`ent`中。`entget`函数返回一个包含实体所有属性和值的关联列表。

3. `(setq entall (entget objent '("djinfo")))`
   - 这行代码再次使用`entget`函数获取所选实体的数据,但这次传递了一个额外的参数`'("djinfo")`,表示只获取与"djinfo"相关的数据。这个参数的具体含义可能与具体的应用场景有关。

4. `(setq appent (cadr (assoc -3 entall)))`
   - 这行代码从`entall`中提取与代码块`-3`相关的数据。`assoc -3 entall`会返回一个包含代码块`-3`及其相关数据的列表,`cadr`函数用于提取这个列表的第二个元素,并将其存储在变量`appent`中。

5. `(setq appent (mapcar '(lambda (x) (if (equal x '(1000 . "253")) '(1000 . "072") x)) appent))`
   - 这行代码使用`mapcar`函数遍历`appent`中的每个元素,并使用一个匿名函数`(lambda (x) ...)`来检查每个元素是否等于`(1000 . "253")`。如果是,则将其替换为`(1000 . "072")`,否则保持不变。这个操作的目的是修改特定的数据值。

6. `(setq appent (append (list -3) (list appent)))`
   - 这行代码将代码块`-3`和修改后的`appent`数据重新组合成一个新的列表。`append`函数用于将两个列表连接在一起。

7. `(setq entall (append ent (list appent)))`
   - 这行代码将原始的实体数据`ent`和修改后的`appent`数据组合成一个新的列表,并将其存储在变量`entall`中。

8. `(entmod entall)`
   - 这行代码使用`entmod`函数将修改后的实体数据写回到AutoCAD中,从而更新实体的属性。
页: 1 [2]
查看完整版本: [原创]请高手帮个忙,有关修改扩展数据的.