概要:16位整数32位整数2.2扩展实体数据的插入使用扩展实体数据,必须用AutoLISP程序实施对实体数据库的访问和修改。首先要自行定义扩展实体数据库信息表,然后再加入到指定的实体中。此处只是给出扩展实体数据库插入的AutoLISP程序主要内容,有兴趣的读者可以自行加入所需要的信息表,以把这一程序的功能进行扩展。对最后画的一个实体加入扩展的实体数据表的AutoLISP程序为:(defunexadd(nametyp/sselnel);name:扩展实体数据登记名,typ:扩展实体数据内容。(setqss(cons-3(list(consname(cons(cons1002″{″)(cons(cons1000typ)(list(cons1002″}″)))))));定义扩展实体数据库el(entget(entlast));提取最近画的一个实体的图形数据库nel(consssel);把扩展实体数据信息加入到实体数据库中)(regappname)(entmodnel))如果对上述函数修改一下,可适用于对任意所选择实体加入扩展实体数据信息:
扩展实体数据在给排水工程CAD中的应用,标签:建筑施工技术,施工技术总结,http://www.65jz.com16位整数32位整数
2.2扩展实体数据的插入
使用扩展实体数据,必须用AutoLISP程序实施对实体数据库的访问和修改。首先要自行定义扩展实体数据库信息表,然后再加入到指定的实体中。此处只是给出扩展实体数据库插入的AutoLISP程序主要内容,有兴趣的读者可以自行加入所需要的信息表,以把这一程序的功能进行扩展。
对最后画的一个实体加入扩展的实体数据表的AutoLISP程序为:
(defunexadd(nametyp/sselnel);name:扩展实体数据登记名,typ:扩展实体数据内容。
(setqss(cons-3(list(consname(cons(cons1002″{″)(cons(cons1000typ)(list(cons1002″}″)))))));定义扩展实体数据库el(entget(entlast));提取最近画的一个实体的图形数据库
nel(consssel);把扩展实体数据信息加入到实体数据库中)(regappname)(entmodnel))
如果对上述函数修改一下,可适用于对任意所选择实体加入扩展实体数据信息:
(defunexaddl(nametyped/sselnel);ed:所选择实体,把上述程序的el(entget(entlast))改为el(entgeted)即可。)
利用上述二个小程序,就可以实现对所画的最后一个实体或任一所选择的图形实体加入扩展实体数据,其特点是比用属性建立非图形信息的速度更快、更灵活、更小的数据体积,而且可以进行图形索引。
2.3扩展实体数据的查询
在对图形实体插入扩展实体数据后,还要对所插入数据信息进行查询、修改和应用。此处只给出扩展实体数据查询和数据提取的AutoLISP程序。
查找扩展数据登记名的程序:(defunexname(ed/cxl)(setqcxl(cdr(assoc-3(entgeted`(″*″)))))(ifcxl(car(nth0cxl))))
本程序应用,就可以对任何一个所选择的实体,找出它的扩展实体数据登记名。如管段号、节点号等。
对任意选择实体,提取扩展实体数据的程序:
(defunexsub(edname/sstypnamecxlcncalctcbl)(setqtyp(cons1"不是所选择实体");如果选择实体与所指定的扩展数据名不一致,则提示错误。
name(strcasename)cxl(cdr(assoc-3(entgeted`(″*″)))))(ifcxl(progn(setqcn0)(while(setqcal(nthcncxl))
(if(=name(carcal))
(progn(setqct0cal(cdrcal))
(while(setqcbl(nthctcal))
(if(=(carcbl)1000)(setqtypcblct10000cn10000))
(setqct(+ct1)))))(setqcn(+cn1)))))(cdrtyp))
上述两个程序的应用,就可以实现对所绘实体的扩展数据信息进行提取。
我们知道,AutoLISP是嵌入AutoCAD中的功能扩展程序,如同使用AutoCAD函数一样,易学易用。应用AutoCAD进行工程设计的技术人员,应该学会用AutoLISP编写简单的程序,以方便工程图形的绘制。从上述的程序中也可以看出AutoLISP编写的完成某一功能的程序,小到一至二句,多到十几句,即可实现所要完成的工作。
3扩展实体数据在给排水CAD中的应用