明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2594|回复: 6

请教:如何修改图元扩展数据?

[复制链接]
发表于 2009-12-13 20:41:00 | 显示全部楼层 |阅读模式
自定义的扩展数据:(-3 ("test" (1000 . "1234")) ("aaa" (1070 . 2)) ,如何用lisp实现通过键盘输入其它数据如3,4等来修改前面的红色数据"2"  ?
发表于 2009-12-13 21:03:00 | 显示全部楼层
<br/>;;修改扩展数据<br/>;;ENT---图形对象,xDATA---扩展数据值<br/>(defun amend_xDATA(ENT xDATA / E C C1 B OBJ)<br/>    (setq E (entget ENT (list "*")))<br/>    (setq C1 (car (cadadr (setq C (assoc -3 E)))))<br/>    (setq B (cons (car C) (list (list (caadr C) (cons C1 xDATA)))))<br/>    (setq OBJ (subst B C E))<br/>    (entmod OBJ)<br/>)
 楼主| 发表于 2009-12-14 10:59:00 | 显示全部楼层

谢谢楼上的,不过运行后出现错误: 参数类型错误: lentityp nil,加了(setq ENT (car (entsel)))还是不行啊

发表于 2009-12-14 13:05:00 | 显示全部楼层
(defun c:aaa()
  (setq xDATA "OK")
  (setq ent (car (entsel "\n选取对象:")))
  (amend_xDATA ENT xDATA)
 楼主| 发表于 2009-12-14 14:14:00 | 显示全部楼层

 (setq xDATA "OK") 这一句中的"OK"如何设置才能通过键盘输入其他数字来修改("FLOOR" (1070 . 2))中的2

试着用(setq xdata '((-3 ("SOUTH" (1000 . "141101")) ("FLOOR" (1070 . 4)))))会出错,能通过查找替换来实现么?

完整的群码是:((-1 . <图元名: 7effc948>) (0 . "LWPOLYLINE") (330 . <图元名:
7edeac10>) (5 . "1B09") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 .
"Jmd") (6 . "Continuous") (100 . "AcDbPolyline") (90 . 4) (70 . 129) (43 . 0.0)
(38 . 0.0) (39 . 211000.0) (10 490040.0 3.54764e+006) (40 . 0.0) (41 . 0.0) (42
. 0.0) (10 490044.0 3.54765e+006) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 490039.0
3.54765e+006) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 490035.0 3.54765e+006) (40 .
0.0) (41 . 0.0) (42 . 0.0) (210 0.0 0.0 1.0) (-3 ("SOUTH" (1000 . "141101"))
("FLOOR" (1070 . 2))))

发表于 2009-12-18 13:41:00 | 显示全部楼层

不能通过查找替换来实现

根据你给的群码,要修改("FLOOR" (1070 . 2)),可根据以下程序实现:

(defun c:XG()
  (setq  s (car (entsel "\n选择实体: ")))
  (setq  N (getint "输入整数:"))
  (XG_XDATA s N)

;;修改扩展数据
(defun XG_xDATA(ENT xDATA / E C C1 B OBJ)
    (setq   E (entget ENT (list "FLOOR")))
    (setq  C1 (car (cadadr (setq C (assoc -3 E)))))
    (setq   B (cons (car C) (list (list (caadr C) (cons C1 xDATA)))))
    (setq OBJ (subst B C E))
    (entmod OBJ)

 楼主| 发表于 2009-12-18 14:20:00 | 显示全部楼层

多谢wmz帮忙!还有一个问题,text文本转成1070类型的整数该怎么转换,用什么函数?

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

本版积分规则

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

GMT+8, 2024-10-1 21:27 , Processed in 0.170025 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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