首页建筑研究 专题列表

扩展实体数据在给排水工程CAD中的应用

收录时间:2005-06-23 16:00 来源:建筑中文网  作者:碧森尤信  阅读:0次 评论:0我要评论

内容提示:本文从扩展数据在实体中的存贮方式、扩展实体数据的插入和查询以及应用扩展实体数据实现管配件的插入、图形的删除及修改等方面,介绍了应用扩展实体数据库进行给排水工程CAD绘制的方法和技巧,并给出几个通过实际工程验证的实用小程序,提出工程设计人员在工程图绘制过程中,自行编写小程序可以扩充商业软件的功能,提高绘图效率的结论。

延伸阅读:实体 工程 应用 数据 程序

    「摘要」本文从扩展数据在实体中的存贮方式、扩展实体数据的插入和查询以及应用扩展实体数据实现管配件的插入、图形的删除及修改等方面,介绍了应用扩展实体数据库进行给排水工程CAD绘制的方法和技巧,并给出几个通过实际工程验证的实用小程序,提出工程设计人员在工程图绘制过程中,自行编写小程序可以扩充商业软件的功能,提高绘图效率的结论。(参考《建筑中文网

    1概述

    在计算机迅速普及的今天,CAD已不再是新鲜名词。尤其是在工程设计领域,手工画图已逐渐被CAD软件所代替。在我国应用最广泛、最普及的CAD工具是AutoCAD软件包,该软件包以其界面友好、使用方便、功能强大的特点,被广大工程设计人员所接受。在给水排水工程领域,由于各设计单位的设计标准和设计方法的不同,造成各软件公司所开发的CAD软件不能被设计单位所广泛接受。尤其是软件公司的软件开发人员,在我国大多是计算机应用比较熟练的非专业人员或实际工作经验很少的专业技术人员,由于他们专业知识和工作经历的限制,造成所开发的专业软件存在这样或那样的不足,从而限制了专业软件的实用性。因此,尽管市场上的商业专用软件很多,但能够切实满足工程设计需要的软件并不多,甚至许多单位购置的软件根本就不能发挥其应有的作用。通过多年的CAD软件开发经验,作者认为,工程设计人员掌握一定的CAD技术处理技巧,可以在直接应用AutoCAD软件或其它商业软件进行工程设计的同时,自行编写一些实用的小程序,不但可以提高工程设计效率,而且还可以通过日积月累,使所编写的小程序在本单位内应用。

    在给水排水工程领域,最常处理的图形就是管线。管线是连接水源到水厂、水厂到用户、各构筑物间的有向图,一根管线的变动,必然引起其它设施的改变。同样,各构筑物采用平、立、剖三视图进行工程图的表达,一个视图的改变,也引起其它视图相应的改变。以前我们都是通过单个图形分别修改的方法来实现,不但效率低,而且容易产生错误。本人通过在WDOC软件开发中的应用,认为扩展实体数据库的应用,可以有效地解决这些问题,并且能够提高绘图效率。

    2扩展实体数据的插入与查询

    2.1扩展数据在实体中的存贮方式

    假设一条管线,起点号是8,坐标是(5.05.00.0),终点号是18,坐标是(10.010.00.0),管段号是1,这条管线的图形数据库为:

    ((-1<Entityname:1f92f48>)(0″LINE″)(5.″519″)(100.″AcDbEntity″)(67.0)(8.″0″)(100.″AcDbLine″)(105.05.00.0)(1110.010.00.0)(2100.00.01.0)(-3(″PIPE1″(1002.″{″)(1000.″8,18″)(1002.″}″)))

    其中扩展数据为:(-3(″PIPEI″(1002.″{″)(1000.″8,18″)(1002.″}″))),″PIPEI″表示以PIPE为前导的管线,管线号为1;″8,18″表示管线的起点号为8,终点号为18.

    扩展实体数据内容在实体数据库中是以-3码为前导的一个表项。在一个实体中可以加入扩展实体数据的大小为16383字节。用于描述非图形数据的扩展实体数据库有关组码为:

    组码意义1000 1001 1002 1003 1004 1005 1010 1011 1012 1013 1040 1041 1042 1070 1071ASCII码字串,长度小于255个字符位已登记的应用名,长度小于31个字符位控制字串层名长字节,长度小于127字符实体索引名点位3D地坪空间位置3D地坪空间位移3D地坪空间方向浮点数距离值比例系数;

    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))

    如果对上述函数修改一下,可适用于对任意所选择实体加入扩展实体数据信息:

    (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中的应用

    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,按照提示选择要删除的实体,即可删除与这一实体具有相同扩展数据的所有实体,快速而准确。

原文网址:http://www.pipcn.com/research/200506/2867.htm

也许您还喜欢阅读:

招标工作中的幕墙安全问题

筑牢分包合同管理之堤

做好招标工作确保幕墙安全

污水处理信息综合管理系统设计方案

世界交通运输EDI技术的发展和应用

营造富有活力的和谐乡土城市

同条件养护试件的几个问题及误区

景观实体的充分特征化

夯实水泥土桩复合地基的工程应用

我国工程项目管理创新价值体系的思考


【重要声明】本作品版权归建筑中文网和作者所有,允许以学习、研究之目的转载、复制和传播,但必须在明显位置注明原文出处和作者署名(请参考以下引文格式)且保证内容一致性,不得用于出售、出版、付费数据库或其它商业目的,本站保留追究一切法律责任的权利。投稿信箱
引用复制:网址 QQ/MSN 论文/著作 HTML代码

请告诉我们

请告诉我们您的知识需求以及对本站的评价与建议。
满意 不满意

Email: