1、浅谈 VLISP 提取宅基地基础数据的 CAD 的二次开发摘 要:宅基地基本信息库的建设是项耗费时间的繁复工作,为了提高宅基地基本信息库建设的效率并保证基础数据的准确性,通过应用Vlisp 计算机程序语言对 AutoCAD 软件的二次开发,编译了从宅基地数字化地籍图中提取宗地基本信息数据的应用与 AutoCAD 软件程序命令。 关键词:宅基地;地籍图;Vlisp;AutoCAD 中图分类号:TP391.72 文献标志码:A 文章编号:1673-291X(2014)02-0253-02 一、宅基地信息管理系统创建的关键是宅基地基本信息库的建立 Visual LISP(简称 Vlisp)是 Aut
2、oCAD 软件自带的可视化、集成型CAD 二次开发的计算机语言,采用递归的语法结构控制计算机的运行,程序的设计比较简单,易于使用户接受。作为 CAD 软件的二次开发工具,它完整地提供了集成开发环境,使用户能够快捷地调用 CAD 命令,高效地调试程序。 宅基地管理信息系统是地理信息系统的一个分支,是将宅基地权属信息及规划等信息在计算机技术的支持下,按照住户信息或者地籍属性以一定的格式输入、存储、管理、分析、检索、统计、显示以及应用决策的地理信息系统。 宅基地信息管理系统创建的关键是宅基地基本信息库的建立,而宅基地基本信息库的主要指标之一是从宅基地数字化地籍图中提取宅基地宗地界址点坐标。为了适应这
3、一需求,本文依据宅基地信息管理系统中宅基地基本信息库文件的格式需求,应用 Vlisp 计算机语言对 CAD 软件进行了二次开发的学习研究。 二、获取数字化地籍图中特定数据格式的程序开发 (一)宅基地宗地基础数据库格式要求 在获得宅基地 AutoCAD 地籍图的基础上,为了明确工作的内容,我们先确定出所需输出的数据的文件格式,即: 提取日期,户主姓名,界址点 1,X 坐标,Y 坐标,宗地编号 提取日期,户主姓名,界址点 2,X 坐标,Y 坐标,宗地编号 提取日期,户主姓名,界址点 3,X 坐标,Y 坐标,宗地编号 提取日期,户主姓名,界址点 4,X 坐标,Y 坐标,宗地编号 通过分析数据格式,我
4、们可以知道,该格式中需要人工输入确认的数据只有户主的相关信息,即姓名汉字拼音简称,其他如提取时间、户主姓名、界址点序号,坐标及宗地编号都是地籍图上已有的内容或可以通过计算机后台完成,完全可以通过 Vlisp 计算机语言进行快速且准确地提取。 (二) Vlisp 计算机语言对宅基地宗地信息的编程实现 Vlisp 计算机程序设计语言通过特定的计算机语法结构可让用户对AutoCAD 软件进行二次开发。 在计算机技术中,只要建立文件,就必须确定文件的存储路径及文件名称。本文为了方便文件管理,将所输出文件存储于宅基地数字化地籍图所在的计算机路径下,命名为该主文件名+界址点文件,后缀根据需要设定为所需的格
5、式后缀。为了确定输出文件的路径及名称,可以读取Vlisp 语言中的 dwgprefix 函数,该函数能够给出当前 AutoCAD 中活动文件的具体路径,如 AutoCAD 中当前打开的文件名为“*地籍图.dwg”的文件保存于计算机 D 盘中的“*村地籍图文件”文件夹下,在读取dwgprefix 函数后,计算机在 AutoCAD 软件中便会显示该文件路径为:“D:*村地籍图文件” ,在用 Vlisp 语言实现中我们将读取的文件路径定义为变量 wjmlj,语言代码为:(setq wjmlj (getvar “dwgprefix“) ) ;所需输出数据的文件名称可以读取 DWGNAME 函数,该函数
6、直接给出 AutoCAD 软件当前活动文件的文件名,如“*地籍图.dwg” ,我们所需的文件名称应该为“*地籍图界址点文件.txt” ,这一步的实现首先需要将“*地籍图.dwg”中的文件名后缀“.dwg”去掉,得到一个只代表文件名“*地籍图” ,通过组合字符“界址点文件.txt”确定出所要输出的文件名称,这一步的 Vlisp 语言代码可综合整理为:(setq wjm ( getvar “DWGNAME“) ln (strlen wjm) wjm (substr wjm 1 (- ln 4) ) ) (setq wjm1 (strcat wjmlj wjm “界址点文件.txt“) ) 。在确定
7、了工作中所要输出的文件的存储路径及文件名称后,需要完成宅基地基础数据库所需数据的计算机写出工作,针对输出的数据格式要求,先确定计算机可以自动识别的“提取日期”数据,这一数据可以通过直接读取计算机当前日期,在 Vlisp 计算机语言中可以用特定的函数 cdate 来实现。在编程中,需要定义一个有关当天日期的变量,根据Vlisp 计算机语言的语法结构,我们定义 rq 为“提取日期”的变量名称,具体实现表达式为:(setq rq (atoi (rtos (getvar “cdate“) 2 0) ) ) ;对数据库中所需的“户主姓名,宗地编号”两项需要在编程过程中赋予字符型变量类型,变量名称分别定义
8、为 hzxm,zdbh,通过直接提取宅基地 AutoCAD 地籍图中的相应图块列表来实现,实现代码可以写成 (setq hzxm (cdr (assoc 1 (entget (car (entsel “n 请拾取户主姓名:“) ) ) ) ) )及(setq zdbh (cdr (assoc 1 (entget (car (entsel “n 请拾取相应宗地编号:“) ) ) ) ) ) 。 现在,必须确定要输出的相应宗地的界址点序号及相应的坐标数据,这需要使用 Vlisp 语言的循环语法。界址点序号变量通过代码(setq rm1 “界址点“)首先定义出界址点序号中不变的部分,再在循环过程中首
9、先定义一个从数字 1 开始的变量 i,然后在循环中根据变量 i 的递增通过定义新的变量(setq rmm1 (strcat rm1 (rtos i 5) ) ) 确定其界址点序号。界址点坐标数据则通过从宅基地 AutoCAD 地籍图上点取各相应宗地的界址点坐标,应用 Vlisp 语言的 getpoint 函数提取相应界址点图块,并将其赋予特定的变量中(本文中定义 p1 及 p 为该变量) ,然后通过 car 及 cadr 函数将特定点的坐标从其图块列表中分离出来,变量定义为 x1,y1 及 xp,yp;编码(setq p1 (getpoint “n 指定第一个界址点:“) (setq y1 (
10、rtos (car p1) 2 3) (setq x1 (rtos (cadr p1) 2 3) )确定了第一个界址点的坐标信息,这时需要将从宅基地数字化地籍图中获得的数据信息按数据格式要求输出到特定路径下的特定文件中去,这里根据数据格式需要应用 Vlisp 语言代码(setq fn1 (open wjm1 “a“) ) , (write-line (strcat rq “,“ hzxm “,“ “ “, “ rmm1 “,“ x1 “,“ y1 “,“ zdbh) fn1) 。由于建立宅基地基础信息库是个比较耗费时间的工作,为了防止重复提取或遗漏,通过每完成一户在特定图层绘制 pline 线
11、加以区分,首先在编程过程中通过编码(command “-layer“ “m“ “界址点连线“ “c“ “3“ “ “ “)建立一个名称为“界址点连线”的颜色为绿色的新图层用于存放提取界址点坐标时新绘的 pline 线,代码(command “pline“ p1 “w“ “0.5“ “0.5“ )用来调用 AutoCAD 中的 pline 命令在 AutoCAD 软件平台上绘制 pline 线,Vlisp 语言的 while 循环语句以空格作为循环结束控制,所以,Vlisp 语言循环语法提取相应宅基地宗地界址点信息的代码(while (progn (initget 8 “x“) (setq p
12、(getpoint “n 指定下一放线点:“) ) (command p) (if (= list (type p) ) (prong (setq i (+ i 1) ) (setq rmm (rtos i 5) ) (setq rmm1 (strcat rm1 rmm) ) (setq yp1 (rtos (car p) 2 3) ) (setq xp1 (rtos (cadr p) 2 3) ) (write-line (strcat rq “,“ hzxm “,“ “ “,“ rmm1 “,“ xp1 “,“ yp1 “,“ zdbh) fn1) ) ) ) ) )通过循环逐个按特定的数
13、据格式将相应宅基地宗地的界址点坐标及宅基地信息管理系统所需的数据输出到了计算机特定路径下的特定文件中。 (三)Vlisp 程序语言与 AutoCAD 软件的衔接 在 Vlisp 计算机程序语言的编程代码经过编译运行无误后,需要在AutoCAD 软件下便捷使用,AutoCAD 软件提供了对应的接口,可以在AutoCAD 软件界面直接使用其命令 appload 加载 Vlisp 编译的相应程序文件,通过在 AutoCAD 中直接键入 Vlisp 语言定义的特定命令名称来执行所需的工作;也可以在 AutoCAD 软件的菜单文件中加入使用 Vlisp 计算机语言编制的命令,通过 menuload 命令
14、更新 AutoCAD 菜单的方式实现Vlisp 语言编写的程序命令。 结语 使用 Vlisp 计算机程序语言编译的从数字化地籍图提取宅基地基础信息的程序能较大程度且准确地提高宅基地基础信息数据库的建设效率,通过其对 AutoCAD 软件的二次开发,扩展了 AutoCAD 软件在特定专业需求的功能,能使宅基地基础信息库的建立顺利开展。 参考文献: 1 高华峰.基于 VLISP 对地形图中横断面的提取并生成横断面图的研究J.科技咨询,2012, (12). 2 代莉,吴晨耀,聂荔.VLISP 支持下的 CAD 二次开发与应用J.地理空间信息,2010, (5). 3 郑伟.农村宅基地登记管理系统的
15、设计与实现D.成都:电子科技大学,2012. Discussion about the two development of the CAD in the VLISP extraction homestead basic data ZHANG Hai-chun,MA Ying (Management college,Xinjiang Agricultural University,Urumqi 830000,China) Abstract:The construction of basic information database of homestead is a time consumin
16、g and complicated work,in order to improve the efficiency of the basic information database of land and to ensure the accuracy of the data base,by using the Vlisp computer program language to develop two times on the AutoCAD software,compiled with the application of AutoCAD software program to extract the data from the basic information of command curtilage base of Digital Cadastral map. Key words:homestead ;cadastral map;Vlisp;AutoCAD 责任编辑 李 可