1 / 11
文档名称:

基于autocad vba的增减挂钩报备坐标文件的自动生成.doc

格式:doc   页数:11页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

基于autocad vba的增减挂钩报备坐标文件的自动生成.doc

上传人:ying_zhiguo02 2015/8/30 文件大小:0 KB

下载得到文件列表

基于autocad vba的增减挂钩报备坐标文件的自动生成.doc

文档介绍

文档介绍:基于AutoCAD VBA的增减挂钩报备坐标文件的自动生成
摘要:生成增减挂钩报备坐标文件是一项非常繁琐的工作,会占用大量工作时间。如果利用VBA对AutoCAD进行二次开发,可以实现自动生成坐标文件,使工作效率得到极大提高。本文就如何实现这一目标给出了具体的解决方法,并对相应的程序代码做了简要介绍。该方法对相关生产单位来说有很大的实用价值和借鉴作用。
关键词:AutoCAD二次开发;报备坐标文件;图幅号;自动生成

中图分类号:{P286+.1} 文献标识码:A 文章编号:
一、概述
报备坐标数据文件是国土部门在城乡建设用地增减挂钩试点在线监管报备工作中的重要基础资料,它包含了地块的位置、形状、面积、用途、坐标数据的坐标系统等重要信息。为了能通过导入坐标交换文件方式导入地块坐标数据,必须先把勘测定界图中的用地界线的坐标导出,再加上必要信息,并按照国土部要求的格式,做成坐标交换文件。其模板如下:
[属性描述]
格式版本号=
数据产生单位=
数据产生日期=
坐标系=80国家大地坐标系
几度分带=3
投影类型=高斯克吕格
计量单位=米
带号=
精度=3
转换参数=0,0,0,0,0,0,0
[地块坐标]
界址点数,地块面积,地块编号,地块名称, 面(点、线),图幅号,地块用途,地类编码,@
点号,地块圈号,X坐标(纵),Y坐标(横)
......
点号,地块圈号,X坐标(纵),Y坐标(横)
目前,AutoCAD或南方CASS等主流软件没有现成的功能实现自动生成报备坐标文件。通常情况下,我们在南方CASS中利用生成界址点成果表功能,生成Excel坐标表格。然后经复制、粘贴、排序,再粘贴到记事本中,把空格替换成逗号,然后在坐标前加上相对固定的坐标属性等若干行......最后保存为报备坐标文件。其操作过程很繁琐,且对每个地块操作流程都一样,无非就是要更改地块的界址点数、地块面积、地块名称、图幅号,坐标等。地块越多,重复劳动就越多,人力资源浪费的就越多,在非常注重办事效率的今天,这样的生产方式确实需要改变。如果可以编写出一个小程序,能实现在AutoCAD中只需选择用地界线(包括岛),再录入地块编号、地块名称、地块用途、地类编码就能自动生成我们要数据,这无疑会使我们的生产效率得到极大提高。
二、解决方法
AutoCAD是一个可以再次开放的软件平台,它允许用户根据需要开发适合自己的工具,二次开发工具可以选择Visual LISP、VBA、Visual C++等,对于非专业程序开发人员,VBA是个不错的选择,因为它简单易学,速度也还不错。由于生产的需要,本人结合自己工作中的具体情况,用AutoCAD VBA编写了一段程序,实现了在AutoCAD环境下自动生成报备坐标文件。下面就具体的解决方法做简要介绍。
(一)总体思路
按照先后选择界址线、岛(如果地块包含岛),为了保证生成数据的正确性,判断所选多段线是否闭合,是否有重复顶点,若多段线不闭合或有重复顶点,报错后退出,用户需要检查图形。如顺利通过选择,则按照圈号先后顺序提取所有圈上的所有顶点坐标,并按照模板格式赋给一个字符串变量,所有圈的顶点数相加,计算出界址点数,地块面积等于外圈面积减去岛的面积。
为了实现自动计算出地块所在的1:1万图幅号,要在运行该程序前把实际生产中涉及到得所有1:1万图幅四角坐标提取出来,,图幅号和相应四角坐标数据按照下列方式存放,其中X、Y和AutoCAD坐标系一致:
图幅号1
X左上,Y左上,X右上,Y右上,X右下,Y右下,X左下,Y左下
……
图幅号n
X左上,Y左上,X右上,Y右上,X右下,Y右下,X左下,Y左下
然后将该文件放在AutoCAD的support目录下。由地块的界址线(外围线)生成一地块面域,再根据support\,按顺序每次生成一图幅面域,地块面域减去图幅面域,若地块面域面积减少,则和该图幅相交。依次往后读取每一图幅四角坐标生成图幅面域,并用被减后的地块面域减去新的图幅面域,,这样就能求出地块所在的图幅号。另外,由于地块编号、地块名称、地块用途、地类编码不能由程序自动生成,因此在这几个数据在设计的弹出窗口中手工输入。
最后,将上面获取的数据和一些固定不变的数据按照模板样式组合在一起,写入文本文件,这样就生成了报备坐标文件。
(二)程序主要流程及主要代码
1、提示用户选择地块范围线和岛,创建选择集
Set ss_LWPolyline = ThisD