概要:3.1管配件插入:例如一条已经画好的管线,管径为DN100,使插入的管配件也具有DN100的特性。假设管配件是阀门,为已经做好的图块。我们可以在插入的过程中不需要关心管径是多少,直接插入阀门信息,从而提高绘图效率。应用扩展实体数据库的程序为:(defunc:inval(/sspededanametypp1p2ang)setqss(entsel)p(car(cdrss))ed(carss)eda(entgeted)name(exnameed);提取扩展实体数据的名称typ(exsubedname);提取扩展实体数据信息,即管径信息p1(cdr(assoc10eda);管线的起点坐标p2(cdr(assoc11eda);管线的终点坐标ang(anglep1p2);管线角度)(command″break″p″F″(polarpangBL)(polarp(+piang)BL);断开线的距离″insert″″阀门″p(*2BL)″″ang);插入阀门(exaddnametyp);对插入的阀门加入扩展实体数据,即管径。)这一小程序在加载以
3.1管配件插入:
例如一条已经画好的管线,管径为DN100,使插入的管配件也具有DN100的特性。假设管配件是阀门,为已经做好的图块。我们可以在插入的过程中不需要关心管径是多少,直接插入阀门信息,从而提高绘图效率。应用扩展实体数据库的程序为:
(defunc:inval(/sspededanametypp1p2ang)
setqss(entsel)p(car(cdrss))ed(carss)eda(entgeted)
name(exnameed);提取扩展实体数据的名称
typ(exsubedname);提取扩展实体数据信息,即管径信息
p1(cdr(assoc10eda);管线的起点坐标
p2(cdr(assoc11eda);管线的终点坐标
ang(anglep1p2);管线角度
)
(command″break″p″F″(polarpangBL)(polarp(+piang)BL);断开线的距离
″insert″″阀门″p(*2BL)″″ang);插入阀门(exaddnametyp);对插入的阀门加入扩展实体数据,即管径。
)
这一小程序在加载以后,如同AutoCAD函数一样,只要在命令状态下运行inval,系统提示选择实体时,在插入阀门的位置上点取管线,就会自动把管线先断开,再插入阀门,并且所插入的阀门具有DN100的特牲。
3.2管线删除
对于上面所插入阀门的管线,由于阀门的插入而变为二条线,三个实体(二条线加一个阀门),如果由于各种原因需要删除,按照AutoCAD命令,则需要分别对这三个实体加以删除。对于工程图,由于图形复杂,经常会产生误操作或漏操作的问题,给工程设计人员带来许多困难。而扩展实体数据库的应用,可以为工程图的绘制带来许多方便。
(defunc:deled()
(setqss(entsel)ed(carss)s(ssget“x”)n0name(exnameed)typ(exsubedname))
(while(setqes(ssnamens))(setqname1(exnamees))
(if(=namename1)(progn(setqtyp1
(exsubesname))(if(=typ1typ)(entdeles))))
(setqn(+n1))))
这一小程序在加载后,运行deled,按照提示选择要删除的实体,即可删除与这一实体具有相同扩展数据的所有实体,快速而准确。
3.3扩展实体数据修改
给水管网图是由管线、节点、水泵、水塔、阀门等组成,所有设施之间并不是相互独立,而是有机的联系在一起。某一设施的修改,必然带动其它与之有关联的设施和变动。例如,对于给水管网水力计算成果图,当节点号修改时,要影响与之相连的所有管线的起止节点号的变动、管线上水流方向扩展实体数据的变动以及节点标注信息的变动。一般情况下,一个节点号的变化,要引起几个甚至几十个图形实体的变化。采用扩展实体数据绘图,这一变化可以通过程序方便地实现。此处只给出修改一个扩展实体数据的小程序,读者可以扩充这一小程序,以通过遍历整个图形数据库的方式,分别查找要修改的实体,并加以修改。
(defunchent(edstyp/sbcxlss);
(setqsb(entgeteds′(″*″))cxl(cdr(assoc-3sb))
ss(cons(cons1002″{″)(cons(cons1000typ)(list(cons1002“}”))))