非图形扩展数据技术在地下管线测绘中的应用

所属栏目:智能科学技术论文 发布日期:2011-07-20 08:12 热度:

  摘要:随着计算机技术的飞速发展和广泛应用,在测绘行业,图形的信息化、三维化、图形和数据库的互相转换等技术已逐渐得到应用。笔者运用VisualLisp和DCL语言开发了绘制二维信息管线、二维信息管线与数据库互相转换、二维管线自动转成三维管线的系统。
  关键词:非图形数据:图形与数据的转换:二维转成三维
  0引言
  管线数据库和三维管线是在二维信息管线的基础上形成的。所谓二维信息管线就是在CAD中,用三维多段线画线,加入管线信息,例如:管线类型、管线材质、管径等。这些信息附加在多段线属性列表的后面,也叫非图形扩展数据。这样,这条线既有CAD的几何信息,又有用户附加的个人信息。在程序运行中,这些信息可以根据需要检索出来,以备形成数据库和三维图形使用。
  1二维信息管线
  建立和使用非图形数据库,*.DWG文件是AutoCAD在图形生成和编辑中使用的数据库,它存放的主要内容是所生成图形的几何信息和其他相关信息。DWG这种数据库相当别致,数据的结构允许用户建立自己的、许多种可能结构的“非图形信息”数据。比如管线类型、管线材质、管径等信息。
  AutoCAD实质上是一个优秀的数据库软件,对于非图形数据的处理也具有许多优秀的性能。例如:虽然有高速读取的特性,可是体积却不大。数据值写多长,DWG就记下多长。再如:检索的方法多,可用图形对象块名色号、层名……作为索引,甚至用上述方法的组合。
  在指定对象中建立和加入扩展的对象数据库的主要步骤:
  (1) 找到指定的目标对象名
  (While(Not(SetQen(EntSel"指定一个实体:")))(Alert"没选中任何实体..."))
  (2)找到指定应用名(这是搜寻扩展对象数据库的主要索引项)
  (Regapp"PIPEM")
  (3)加入扩展数据库的开头项,建立完整的扩展数据表
  (setqnew_ext_list(list-3(list"PIPEM"
  (cons1000data_ptype);管线类型
  (cons1000data_pmat);管线材料
  ……
  )))
  (4)组建后扩展数据库的内容(这些内容附加在实体属性列表的后面。)
  (("PIPEM"(1000."排水")(1000."水泥管")(1070.1000)(1070.0)(1040.0.0)(1040.0.0)(1000."")(1000."")(1000."")(1000."")(1070.0)(1000."")(1000."")(1070.0)(1000."")(1000."")))
  具体操作是在CAD环境下,选择指定的目标对象,(三维多段线画的线,)出现图1的对话框,按外业调查的信息填入对话框,就建立了二维信息管线。
  
  图1
  2二维管线转成三维管线
  三维管线是在二维管线的基础上用程序自动生成的,程序运行时,把生成三维管线所需要的几何信息和附加信息检索出来赋给设定的变量,经过画线、拉伸、抽芯等步骤就自动生成三维管线。部分代码如下:
  (Setqold_ext_list(assoc-3endata));取得非图形数据库列表
   (Setqptype(cdr(assoc1000(cdrold_ext_list))));管线类型
  (Setqpmat(cdr(assoc1000(cdrold_ext_list))));管线材料
  (Setqpdia(cdr(assoc1070(cdrold_ext_list))));管径
  (Setqvla-pline(vlax-ename->vla-objecten));取得第一个点的坐标信息(vlax-dump-objectvla-pline)(SetqCoordinates(vla-get-Coordinatesvla-pline))
  (Setqval_list(safearray-value(vlax-variant-valueCoordinates)))
  (SetqX(carval_list))(SetqY(cadrval_list))(SetqH(-(caddrval_list)(/pdia2000.0)))
  (command"3dpoly"(listxyh));根据坐标信息画线
  根据画好的线变换坐标系,根据管线半径画圆,再经过拉伸抽芯就生成三维管线。部分代码如下:
  (command"ucs""za"(listx0y0h0)(listx1y1h1)"");转换坐标系
  (command"circle"'(000)(/pdia2000.0)"");根据管线半径画圆
  (command"extrude"bb2"""p"en1);根据圆拉伸
  (command"subtract"aa2""aa3"");抽芯
  画好的三维管线效果图如2:
  
  图2
  有了这个程序,只要会操作CAD的技术人员,都会画三维管线。
  3信息管线图与数据库的相互换
  信息管线图转到数据库就是在程序运行时,把管线的几何信息和附加信息检索出来,按一条管线一个信息源写到数据库里。反之,把数据库里的数据转成CAD图形就是在程序运行时,打开数据库把数据(几何信息和附加信息)读出来,按这些信息在CAD中画线、附加信息,再生成信息管线。部分代码如下:
  (1) 信息管线转到数据库
  检索管线的附加信息:
  (setqold_ext_list(assoc-3endata))
  (setqptype(cdr(assoc1000(cdrold_ext_list))));管线类型
   (setqpmat(cdr(assoc1000(cdrold_ext_list))));管线材料
   (setqpdia(cdr(assoc1070(cdrold_ext_list))));管径
  检索管线的几何信息:
  (setqvla-pline(vlax-ename->vla-objecten))(vlax-dump-objectvla-pline);取得每个端点的信息
  (vlax-dump-objectvla-pline)(setqx(carval_list))(setqy(cadrval_list))(setqh(caddrval_list))
  (setqObjectID(vla-get-ObjectIDvla-pline));取得取得实体的ID码
  (setqLengt(vla-get-Lengthvla-pline));取得取得实体的长度
  把这些信息写入数据库
  (2) 数据库转成CAD图形
  从数据库里读出信息:
  (setqptype(substrs1(setqj(-i1))));管线类型
  (setqpmat(substrsji));管线材料
  (setqpdia(substrsji));管径
  (setqx(substrsji))(setqy(substrsji))(setqh0(substrsji));三维坐标

  (command"3dpoly"(list(atofx)(atofy)(atofh)))
  根据这些信息画图:
  (setqnew_ext_list(list-3(list"PIPEM"(cons1000ptype)
  (cons1000pmat)(cons1070(atoipdia));加入附加信息
  4结束语
  线划图形向信息图形转换、二维图形向三维图形转换是今后发展的趋势,也给用户提供更多的服务功能。笔者在这方面研究的成果还非常浮浅,很多问题还需要深入学习,使之更加完善。
  
  参考文献:
  [1]人民邮电出版社,陈伯雄、冯伟编著的VisualLISP程序设计与技巧。
  [2]中国铁道出版社,吴永进、林美樱编著的AutoLISP&DCL基础篇。
  [3]人民邮电出版社,吴永进、林美樱编著的AutoCAD2007中文版实用教程(3D应用篇)。

文章标题:非图形扩展数据技术在地下管线测绘中的应用

转载请注明来自:http://www.sofabiao.com/fblw/dianxin/zhineng/9757.html

相关问题解答

SCI服务

搜论文知识网的海量职称论文范文仅供广大读者免费阅读使用! 冀ICP备15021333号-3