欢迎来到天天文库
浏览记录
ID:9116247
大小:50.00 KB
页数:6页
时间:2018-04-18
《autocad扩展图元数据在地籍测量中的应用》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、AutoCAD扩展图元数据在地籍测量中的应用贺鹏HEPeng曰孙变富SUNBian-fu(华北地质勘查局519大队,保定071051)(519TeamofTianjinNorthChinaGeologicalExplorationBureau,Baoding071051,China)木文对AutoCAD中扩展图元数据(XDATA)的数据格式进行了详细分析,介绍了扩展图元数据在AutoCAD中添加、访问和使用的方法,讨论了扩展数据在地籍测量中的只体应用,对从事地籍测量工作的技术人员有一定的借鉴作用。Abstract:Inthispaper,the
2、AutoCADextendedentitydata(XDATA)dataformatisanalyzedindetail.Themethodtoadd,visitanduseXDATAinAutoCADisintroduced.Thespecificapplicationofextendeddataincadastralsurveyingisdiscussed,whichprovidesreferenceforcadastralsurveyingworkers.关键词:图元;扩展数据;地籍测量Keywords:graphicsprimitive
3、;extendeddata;cadastralsurvey院P209院A院1006-4311(2014)07-0202-03引言:AutoCAD有强大的图形编辑功能,在测绘领域有着广泛的应用,目前国内流行的几种测图软件系统,像南方CASS软件、广州开思,都是以AutoCAD为平台进行二次开发,而CASS软件在国内各个测绘单位占了很大的使用比率,其图形要素的属性,以扩展属性的方式存放在图元上。AutoCAD的基木图形类型有以下几种:单行文木(Text)、多行文木(MText)、直线(Line)、圆(Circle)、圆弧(Arc)、多段线(Poly
4、Une)、点(Point)、块参照(Insert),其中多段线乂分为轻量多段线及二维多段线两种,后者乂可分为无拟合、二次拟合、三次拟合等几种形式。在AutoCAD数据文件中,只是记录着表示图形元素的几何位置、形状、大小的几何坐标和表示图形元素性质(如颜色、层号等)的辅助数据。采用扩展属性,在相应的图元上添加扩展数据,可以拓展AutoCAD在专业方面的应用,使其具有一定的GIS功能。1扩展图元数据AutoCAD的DWG文件,图形对象并不直接存贮属性数据,相反,对属性数据的存贮是通过图形的扩展数据XDATA来实现,利用XDATA设计变量,然后将属性
5、数据赋给这些变量来完成。AutoCAD没奋提供相应的菜单命令来直接操作XDATA,要读写属性数据,借助该平台的二次开发,选择一种开发语言:Lisp/VisualLisp、VBA/VB或C++编写代码来读写这些属性数据。如果图元包括扩展数据,则扩展数据将放在普通定义数据之后。利用扩展图元数据,用户能将用户定义数据添加到任何AutoCAD图元中。1.1扩展图元数据码扩展数据是由AutoUSP或ObjectARX应用程序创建的。如果图元包括扩展数据,则扩展数据将跟在普通定义数据之后。从1000到1071的组码用来描述扩展数据。组码1001表示扩展数据
6、的幵始。与普通图元组码相比,在扩展数据中相同的组码可以出现多次,而且次序非常重要。扩展数据按照已注册的应用程序名称编组。每一个注册应用程序的组都从组码1001幵始,其组值为表示应用程序名称的字符串。注册应用程序名称符合APPID符号表条0。如果需要,应用程序可以使用多个APPID名称。APPID名称是永久性的,尽管那些在图形中非当前使用的APPID名称将被清理。每个APPID名称可以拥有一个附着到每个对象上的数据组。在应用程序的组码中,扩展数据组的序列及其含意由应用程序定义。扩展数据组码的说明如表1。1.2添加扩展图元数据在为一个图元添加XDA
7、TA之前,AutoCAD需要注册应用名。因为一个图形可以为许多不同的应用程序引用。一个应用程序必须将其数据与别的应用程序分开,唯一应用程序识别名(APPID)用于完成这种功能。注册应用程序名之后,可用APPEND函数把扩展图元数据添加到原图元数据表后。下面的代码示例基于ObjectARX2008及VC++2005。完成添加扩展数据的功能。voidaddXdata(CStringappName'CStringresString,ads_nameen){AcDbObject*pObj;AcDbObjectldObjectld;acdbGetObje
8、ctld(Objectld,en);acdbOpenAcDbObject(pObjzObjectld,AcDb::kForWrite);structr
此文档下载收益归作者所有