CAD对象赋值,实体赋值,lisp字典创建与修改读取,对象添加自定义属性

  • A+
所属分类:CAD二次开发

相信很多都在网上找如何给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)
)

复制

如果以上不能满足你 的需求,那只有扩展字典了哦,这个有字数限制的哦!

 

 

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: