- A+
相信很多都在网上找如何给CAD对象赋值,比如直线、圆、块,等上面赋值一些信息呢?CAD本身没有这个功能,但是可以用一些代码来实现,下面直接上如何给一个CAD图形赋值参数,增加对象属性,等高线高程赋值、lisp对象属性赋值,CAD添加自定义属性
下面贴出赋值和读出AutoLisp Vlisp代码,如果你是第一次使用lsp代码,直接新建一个文本扩展后缀改为lsp,复制下面两段代码到里面,保存后使用CAD命令AP加载即可测试
给对象赋值代码,测试命令ZDD
下面的注释字符串组码就是可以任意参数,如果不够用,可以把参数组成一个,用符号隔开,读的时候在分割即可。里面的1组码是验证用户删除对象,但是信息还在,只需验证图库,如果没有直接删除这条记录即可;
(defun c:ZDD ( / TuTY RRList ORList )
(setq TuTY(car (entsel "\n选取对象:"))
TuTY (entget TuTY);;图元
TuTY (cdr (assoc 5 TuTY)));图元标识,图元句柄
(if (dictsearch (namedobjdict) TuTY) (dictremove (namedobjdict) TuTY))
;构建新表,字串符组码(410-419) (470-479 )(430-437)
(setq RRList (list '(0 . "Xrecord")'(100 . "AcDbXrecord")(cons 1 TuTY)'(410 . "伙计百科")'(430 . "huojibk.com")'(431 . "SS是26")))
;创建图元
(setq ORList (entmakex RRList))
;添加图元到字典
(dictadd (namedobjdict) TuTY ORList)
(princ TuTY)
)
复制
下面为读出CAD对象上面的所附的值,赋值对象和读取对象上的值必须是同一个对象,否则为空,读取前先赋值。代码代码直接返回对象上的值把CAD的命令行拉高点,需要的参数就在里面,这里我只举例返回对象上所赋值的值,读取准确的自己截取即可。测试命令dqq
(defun C:dqq ( / TuTY xRlist )
; 找到xrecord命名对象字典.
(setq TuTY(car (entsel "\n选取对象:")))
(setq TuTY (entget TuTY))
(setq TuTY (cdr (assoc 5 TuTY)))
(setq xRlist (dictsearch (namedobjdict) TuTY))
; 打印出xrecord的数据列表.
(princ xRlist)
(princ)
)
复制
如果以上不能满足你 的需求,那只有扩展字典了哦,这个有字数限制的哦!