二次开发技术在地籍测量中的应用聂利挺.docx_第1页
二次开发技术在地籍测量中的应用聂利挺.docx_第2页
二次开发技术在地籍测量中的应用聂利挺.docx_第3页
二次开发技术在地籍测量中的应用聂利挺.docx_第4页
二次开发技术在地籍测量中的应用聂利挺.docx_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

CAD二次开发技术在地籍测量中的应用摘要数字化地籍测量已经成为我国地籍测量工作的主要方法,其工作效率的提高和制作方法的选择成了目前的研究方向,快速且准确的生产方法能够节省生产成本和提高生产效率。本文简单介绍了AutoCAD的二次开发绘图软件在地籍测绘中的运行方式和应用技巧。并主要从使用AutoCAD二次开发绘图软件南方CASS7.1对地形图的绘制,即CASS在地籍测量内业中的应用;以及用AutoCAD的二次开发工具Visual LISP语言编写在AutoCAD软件环境下快速制作宗地图的程序这二个方面进行了初步的介绍。通过使用CAD的二次开发功能,完全实现了数字化地籍测量的目标,很好的完成了本次地籍测量任务。关键词:CAD;CASS;Visual LISP;地籍测量;宗地图ABSTRACTDigital Cadastral Survey has become the main method of work in our Country,improve the work efficiency and methods of making the choice of the current research direction.Fast and accurate methods of production can save production costs and increase productivity.This article explains the AutoCAD drawings software in the secondary development of Operation Mode and application skills of cadastral surveying.And mainly from the use of the secondary development of AutoCAD drawing softwareSouth CASS7.1 Drawing the terrain mapping,That is CASS in cadastral Survey applications within industry;And the secondary development tools with AutoCADVisual LISP language environment in the AutoCAD software program to quickly create maps that were two aspects of the initial introduction. through the use of CAD Secondary development functions,realized completely the target of the digital cadastral survey,Completed well in this task cadastral survey.Key words: CAD; CASS; Visual LISP; cadastral survey; Clan Map目录目录摘要1ABSTRACT2目录3第一章 绪论51.1 数字化地籍测量简介51.2. CAD二次开发的原理应用5第二章 CAD二次开发介绍72.1 AUTOCAD的二次开发简介72.2 AUTOCAD 的二次开发工具介绍72.2.1 AUTOLISP72.2.2 ADS72.2.3 OBJECTARX82.2.4 VISUAL LISP82.2.5 VBA92.2.6 其它性能9第三章 CAD 开发的发展前景和趋势113 .1 CAD开发的发展前景113.2 CAD技术发展趋势11第四章 地籍测量内业的方法和步骤134.1 CASS7.1地形地籍成图软件简介134.2 CASS7.1 绘图软件在地籍测绘中的应用134.2.1 数据导入134.2.2 根据测绘草图绘制地籍现状图134.2.3 绘制权属线134.2.4 生成地籍表格144.2.5 完成宗地图144.2.6 老地类码批量修改144.2.7 用CASS7.1软件做地籍测量的总结15第五章 Visual LISP 语言编程快速提取宗地图165.1 宗地图提取简介165.2 Visual Lisp 语言介绍165.2.1 Visual Lisp 的简单介绍165.2.2 Visual Lisp 的使用特点165.3 程序设计与实现175.3.1 制作宗地图框175.3.2 自动注记点号、距离、面积195.3.3 程序加载27第六章 结语28参考文献30第一章 绪论1.1 数字化地籍测量简介国土资源信息化“十五”规划(纲要)中明确提出了以信息化建设带动国土资源信息技术跨越式发展和国土资源管理方式的根本转变。抓住国民经济和社会信息化的机遇,加快国土资源管理的信息化,以管理信息化带动管理科学化和服务社会化。因此,传统的用图纸和表格等来记录存储土地信息的地籍管理方式已越来越不能适应现代化地籍管理的需要,利用计算机技术对土地信息进行采集、管理、操作、分析、模拟、显示、统计、查询等,实现地籍管理信息化和数字化已成为土地管理部门的工作重点。地籍测量信息处理的主要工作是通过野外采集的平面图数据及权属调查草图等信息,绘制出标准地籍分幅图、宗地图,并生成相应的各宗地的面积量算表、各街坊界址点成果表和面积统计表、各级土地分类统计表等,为政府提供精确的统计数字,是土地管理部门进行管理、规划的科学依据。宗地是一系列界址坐标点构成的封闭多边形,宗地图是土地证上必须附有的图件,是土地使用者的重要依据,面积是其主要属性,通常具有法律意义。传统的宗地图绘制主要是从分幅地籍图上蒙绘,其精度主要受分幅地籍图的精度及蒙绘的精度影响。而对于已经数字化的分幅地籍图,宗地图的绘制则主要采用在计算机绘图系统中对分幅地籍图进行裁剪,绘制界址线、生成界址点成果表,注记界址边长、宗面积、权利人、地类号等属性的方法来实现。蒙绘法的精度很低,已不能适应现代地籍信息化管理的需要。而采用一般方法利用计算机来进行宗地图的绘制,工作量大、重复性强、自动化程度低。笔者通过不断探索与实践,用南方CASS地籍地形成图软件实现绘图,用VisualLisp 编写程序实现了宗地图的自动绘制,界址点成果表、各类土地分类统计表和面积统计表的自动生成。提高了工效,降低了劳动强度,取得了良好的工作效果和社会效益。1.2. CAD二次开发的原理应用用南方CASS实现了绘图,用Visual Lisp编写程序作为地籍菜单在CASS显示。即可直接调用其功能,例如绘制权属线,提取宗地图,自动计算宗地面积等等。CASS是南方测绘仪器公司在Auto CAD上开发的新一代数字化地形地籍地图软件,地形地籍测绘的主要基础是数字地图。数字地图具备精度高、规范化、可综合应用等特点,对各用图单位进行的规划、设计、计算、综合管理等方面的工作有着极大的优越性,并且与过去的手工测图相比,其效率及效益更高,运用领域更加广泛。而在城镇地籍测量中,宗地图的制作是很关键的一步,宗地图的精度和制成的速度直接影响地籍测量的进度。本文利用Visual LISP语言编程,仅需两个综合程序便能基本完成宗地图制作,且精度能很好的达成要求。大大强化了AutoCAD在城镇地籍测量中勘测定界制图方面的功能。第二章 CAD二次开发介绍2.1 AUTOCAD的二次开发简介AUTOCAD的二次开发主要涉及以下内容:(1)编写各种用户自定义函数并形成若干LISP、ARX、VLX或ADS文件,以及一些DCL文件。(2)建立符合自己要求的菜单文件,一般可在 AUTOCAD 原菜单文件内添加自己的内容,对于AUTOCAD2000版本还可增加部分菜单文件,然后经交互方式加入到系统中去。(3)在系统的ACAD.LSP 或类似文件中加入某些内容以便进行各种初始化操作,如在启动时立即装入一些文件等。(4)通过系统对话框设置某些路径。这些操作在程序开发成功后向其它AUTOCAD系统上安装应用,特别是需要大批安装时,需要进行很多文件检索、内容增删、子目录创建、文件拷贝、系统设置等繁琐工作,如能令上述工作全部自动进行,使整个二次开发程序在无人干预的情况下嵌入系统,将大大提高工作效率。AUTOCAD荣登全球绘图软件的龙头宝座,主要是因为它具有开放的体系结构。它允许用户和开发者采用高级编程语言对其进行扩充和修改,即二次开发,能最大限度地满足用户的特殊要求。AUTOCAD第一版于1982年11月由AUTODESK公司推出,目前大家广泛使用的是AUTOCAD 2004或2007,最新版本是 AUTOCAD 2010,其二次开发语言及工具也在不断地涌现。2.2 AUTOCAD 的二次开发工具介绍2.2.1 AUTOLISPAUTOLISP 的全名是 LIST PROCESSING LANGUAGE,她出现于 1985 年推出的AUTOCAD R2.18 中,是一种嵌入在 AUTOCAD 内部的编程语言,是 LISP 原版的一个子集,她一直是低版本 AUTOCAD 的首选编程语言。它是一种表处理语言,是被解释执行的,任何一个语句键入后就能马上执行,它对于交互式的程序开发非常方便。其缺点是继承了 LISP 语言的编程规则而导致繁多的括号。2.2.2 ADSADS的全名是AUTOCAD DEVELOPMENT SYSTEM,它是AUTOCAD的C语言开发系统,ADS 本质上是一组可以用C语言编写AUTOCAD应用程序的头文件和目标库,它直接利用用户熟悉的各种流行的C语言编译器,将应用程序编译成可执行的文件在AUTOCAD环境下运行,这种可以在AUTOCAD环境中直接运行的可执行文件叫做ADS应用程序。ADS由于其速度快,又采用结构化的编程体系,因而很适合于高强度的数据处理,如二次开发的机械设计CAD、工程分析CAD、建筑结构CAD、土木工程CAD、化学工程CAD、电气工程CAD 等。2.2.3 OBJECTARXOBJECTARX是一种崭新的开发AUTOCAD应用程序的工具,是以C+为编程语言,采用先进的面向对象的编程原理,提供可与AUTOCAD直接交互的开发环境,能使用户方便快捷地开发出高效简洁的AUTO CAD应用程序。OBJECTARX并没有包含在AUTOCAD中,可在AUTODESK公司网站中去下载,其最新版本是OBJECTARX FORAUTOCAD2010,它能够对AUTOCAD的所有事务进行完整的、先进的、面向对象的设计与开发,并且开发的应用程序速度更快、集成度更高、稳定性更强。OBJECTARX从本质上讲,是一种特定的C+编程环境,她包括一组动态链接库(DLL),这些库与AUTOCAD在同一地址空间运行并能直接利用 AUTOCAD 核心数据结构和代码,库中包含一组通用工具,使得二次开发者可以充分利用AUTOCAD的开放结构,直接访问 AUTOCAD数据库结构、图形系统以及CAD几何造型核心,以便能在运行期间实时扩展AUTOCAD的功能,创建能全面享受AUTOCAD固有命令的新命令。OBJECTARX的核心是两组关键的 API,即ACDB(AUTO CAD数据库)和ACED(AUTO CAD编译器),另外还有其它的一些重要库组件,如ACRX(AUTOCAD实时扩展)、ACGI(AUTO CAD 图形接口)、ACGE(AUTO CAD几何库)、ADSRX(AUTO CAD 开发系统实时扩展)。OBJECTARX还可以按需要加载应用程序;使用OBJECTARX进行应用开发还可以在同一水平上与WINDOWS系统集成,并与其它WINDOWS应用程序实现交互操作。2.2.4 VISUAL LISPVISUAL LISP 已经被完整地集成到 AUTOCAD 2000以上版本中,为开发者提供了崭新的、增强的集成开发环境,一改过去在 AUTOCAD中内嵌ATUOLISP运行引擎的机制,这样开发者可以直接使用AUTOCAD中的对象和反应器,进行更底层的开发。其特点为自身是AUTOCAD中默认的代码编辑工具;用它开发AUTOLISP程序的时间被大大地缩短,原始代码能被保密,以防盗版和被更改;能帮助大家使用ACTIVEX对象及其事件;使用了流行的有色代码编辑器和完善的调试工具,使大家很容易创建和分析LISP程序的运行情况。在VISUAL LISP中新增了一些函数:如基于AUTOLISP的ACTIVEX/COM自动化操作接口;用于执行基于AUTO CAD内部事件的LISP程序的对象反应器;新增了能够对操作系统文件进行操作的函数。2.2.5 VBAVBA即MICROSOFT OFFICE中的VISUAL BASIC FOR APPLICATIONS,它被集成到AUTOCAD中。VBA为开发者提供了一种新的选择,也为用户访问AUTOCAD 2000以上版本中丰富的技术框架打开一条新的通道。VBA和AUTOCAD中强大的ACTIVEX自动化对象模型的结合,代表了一种新型的定制AUTOCAD的模式构架。通过VBA,可以操作AUTOCAD,控制ACTIVEX和其它一些应用程序,使之相互之间发生互易活动。而VLISP则是灵活而充分地使用AutoCAD的现有功能,适合于“组合使用”AutoCAD的现有功能。这样,程序设计着对AutoCAD操作的数量程度,就明显地影响着程序设计的结果。就是说,这种程序设计模式,将能充分利用程序设计着使用AutoCAD的经验和技巧。也可以用VLISP按照ARX/VBA的ActiveX模式写程序。2.2.6 其它性能可以在AutoLISP程序中引用AutoCAD的几乎所有的功能,进行图形处理的自动化,尤其是较深层的应用对象数据库的操作。在Visual LISP的协助下,从对AutoCAD进行操作的功能上讨论,仅比ARX少几个功能:自定义AutoCAD对象、多图档的深入管理等。从目前的情况看,AutoLISP 是 AutoCAD中几乎所有的应用程序的“总管、大管家”,而且目前只有 AutoLISP 表达式,才能以添加在脚本文件、对话框程序、菜单、甚至VBA程序的 ThisDrawing.SendCommand中,更可以直接用在AutoCAD的命令行中响应几乎所有的命令。LISP是典型的结构化程序设计语言,AutoLISP是解释运行,源程序保密性差,巨量数据的复杂运算效率较低,文件管理功能简单,但可以在绝大多数源程序内容不变的条件下,用Visual LISP将其编译成VLX程序包或者FAS程序,这样处理之后的AutoLISP程序,将具有与ARX程序相同的高保密性能,也将具有比解释运行明显提高的运行效率。而且,AutoLISP程序设计的复杂程度和运行风险大大低与ARX,绝少在程序崩溃后连带AutoCAD崩溃。第三章 CAD 开发的发展前景和趋势3 .1 CAD开发的发展前景市场需求是技术创新的动力。二十世纪的一个重大变革是全球市场得统一,它使市场竞争更加激烈,产品更新周期加速。在这种背景下,CAD开发技术得到迅速普及和极大发展。海湾战争结束当年,美国评出二十世纪最具影响的十大技术中,CAD便榜上有名。CAD技术从最初的工业设计领域已渗透到人们日常生活的每个角落,从机械、电子、航空、航天、邮电、兵工、纺织、建筑、船舶、地质、采矿,一直到艺术、装演、医疗、教学、旅游、管理等,可以说无数不包,以CAD技术为基础开发的各类商业专业软件已超过10万个,其中以工程设计领域的CAD所占比例最大,发展和普及速度也最快,并且取得了显著的经济效益,如美国Autodesk公司开发AutoCAD己推出了17个版本,应用领域遍及全球各个行业。近二十年来,随着计算机硬件技术的发展,特别是图形处理设备的飞速发展,计算机辅助设计/制造(CAD/CAM)技术以惊人的速度快速发展,有专家评价“如果把电子技术看作是工业的一次革命的话,那么CAD/CAM是工业的另一次革命,它是计算机对人类文明的巨大推动在工业万面的重要体现,其前景是不可限量的”。据美国1991年统计,在超大规模集成电路设计生产十引入CAD技术后,提高效率18倍,机械工业提高5倍,建筑行业提高3倍,出版行业提高4.4倍。随着交互式图形技术,特别是可视化技术的提高,其效率会有更明显的增长。3.2 CAD技术发展趋势随着CAD技术的普及应用,CAD技术正向着开放、集成、智能和标准化的方向发展。开放性是决定一个系统能否真正达到实用化并转化为现实生产力的基础,着主要体现在系统统的工作平台、用户接口、应用开发环境厦与其他系统的信息交换等方面。所谓集成就是向企业提供一体化的解决方案,通过集成能最大限度地实现企业信息共享,建立新的企业运行方式,提高生产效率。完善的标准化体系则是我国CAD软件开发及技术应用与世界接轨的必由之路。作为CAD系统的支撑环境,开放的操作系统,如:WINDOWS,UNIX 将是今后CAD系统的主流;面向对象的编程技术和数据库技术将为CAD系统的发展作出贡献;系统的智能化结台专家系统、知识工程,将各个领域的专家经验融台于CAD系统中,并开发出智能化用户界面,使之更为广大工程设计人员所接受;系统的集成化是大势所趋,80年代中期CAD/CAM技术的集成形成了CIMS高科技系统。概括起来今后CAD系统将会在以下几方面发展:(1)在计算机图形和几何造型技术上由二维向三维发展。几何造型技术解决了如何将三维图形转化为数学模型并存入数据库中的问题,三维造型方法主要有:线框模型、曲面造型和实体造型。三维图形技术与数据库技术相结合对 CAD/CAM系统的发展具有极其重要的意义。(2)与图形学发展相关的硬件支持,如:高速图形图像处理技术、三维显示技术、三维数字化仪等。(3)集成化技术将继续得到快速的发展,从单一行业领域内的业务性集成, 向多行业集成发展,如CIMS系统、工程设计建筑、水、电、暖一体化的集成。(4)与CAD集成的工程数据库技术仍将继续发展,过去许多基于商用数据库开发的图形数据库,效果并不理想。开发集成化专用数据库是今后的发展方向,它既能支持几何信息,也能支持非几何数据,同时能够支持工程构件、零部件、产品等实体的多级描述及长时间的事务处理要求。(5)基于网络和多媒体技术的分布式CAD系统将大量发展,网络环境下的分布式CAD系统,将各种不同的CAD作业、不同的硬、软件支撑环境集成于一个网络环境,或客户/服务器环境下;各种不同的信息表示与传输媒体,如声音、图形、图像、数据等集成于一个系统内,即多媒体CAD系统。(6)智能化、专家系统技术也是一个热门研究方向,如何在CAD系统中应用人工智能和知识库,以提高系统的智能水平并加强人机之间的密切协作。(7)以可视化技术和虚拟技术为核心的集成化和交互式CAD系统是热门研究方向。第四章 地籍测量内业的方法和步骤4.1 CASS7.1地形地籍成图软件简介CASS是南方测绘公司基于CAD基础上二次开发的软件,CASS7.1数字化地形地籍成图软件,是南方测绘仪器公司在 AutoCAD 基础上开发的新一代数字化地形地籍成图软件,主要应用于地形成图、地籍成图、工程测量三大领域。CASS7.1除具有AutoCAD强大的图形编辑功能外,在菜单中特别添加了地籍成图菜单功能:界址线、界址点、街坊内统一编号、自动累加,方便重排浏览与查询编辑;图形属性联动、地图图形属性合为一体,修改宗地属性方便快捷;自由分割、合并宗地、宗地面积自动重算、自动面积查错、绘制地籍表格等功能方便实用,更加符合地籍测绘的实际需要,便于地籍数据库建设中各种图形的编辑。4.2 CASS7.1 绘图软件在地籍测绘中的应用4.2.1 数据导入打开CASS7.1界面,首先要确定地图比例尺,在绘图处理菜单下点击“展野外测点”,输入绘图比例尺分母即可。然后在弹出的“输入坐标数据文件名”对话框中选择需要打开的数据文件(*.dat 文件),点击“打开”,即在当前现状图中展开测点。4.2.2 根据测绘草图绘制地籍现状图在底图上进行测点连线,圈出界线,对地形、地物及地面上的附着物等进行绘制与修改。在菜单中选择相应的符号绘制房屋、围墙、道路、植被、管线、水系设施等。软件中增加了一些实用菜单如市政部件等,功能更加完善。4.2.3 绘制权属线在地籍菜单下点击“绘制权属线”,按要求绘制闭合线,输入该宗地的基本属性,包括街道号、街坊号、宗地号、权利人及地类等,单击任一注记位置,即可产生该宗地的面积。在已经绘制好闭合线的前提下,点击“复合线转为权属线”直接将闭合线转为权属线,系统将宗地号、地类号、权利人等信息输入到权属界线里,图上就产生了该宗地的界址线、各界址边长及面积,形成一个封闭的宗地;再点击地籍菜单中“注记界址点”下的“全图注记”,图上就产生了该宗地的界址点号,该宗地权属界线的绘制就完成了。如果在同一宗地图中移动或改变过界址线,当界址点名排列较凌乱时,可选择“重排界址点”功能,使街坊内的界址点号重新排序,点击“注记界址点名”,则软件自动注记排序后的界址点。一个街坊内不同的界址点其编号一般是唯一的,每一宗地的界址点号在地籍图上一目了然,查询起来很方便。4.2.4 生成地籍表格选择地籍菜单下“绘制地籍表格”中的“界址点坐标表”单击表格左上角点,命令行中出现“选择定点方法”,一般在生成表格前都已经绘制完权属线,这里直接回车,选择复合线或宗地,屏幕上就会产生该宗地的界址点坐标表。CASS7.1还可以根据需要生成其它地籍表格,比如界址点成果表、以街坊为单位界址点坐标表、以街道为单位宗地面积汇总表、城镇土地分类面积统计表等,输入相应的信息就可生成不同的表格。4.2.5 完成宗地图在图上标注指北针、图章,画出图框,一个宗地图的绘制就基本完成了。完成宗地图有两种方法:一是采用直接“插入图块”方式,插入事先已绘制好1500比例图章和指北针即可,如插入不同比例图时,可以对其进行不同比例缩放;二是用地籍菜单中的“绘制宗地图框”自动生成宗地图。生成宗地图也有两种方法:一是批量生成方法,点击“绘制宗地图框”,选择适合纸张,点击“批量处理”,弹出“宗地图参数对话框”,对“比例尺”进行“自动计算”或“手工输入”的选择,还可以选择是否绘制坐标表等,用鼠标批量选取界址线,可以一次分出一排多幅宗地图;二是单块宗地生成方法,点击“绘制宗地图框”,按图比例和大小,选择适合纸张,点击“单块宗地”,弹出“宗地图参数对话框”,进行比例尺、坐标表等参数的设置。选取界址线就可以生成宗地草图,再按国家统一标准要求整饰后,就完成一幅标准宗地图。4.2.6 老地类码批量修改如何在CASS7.1软件中实现地籍图全国土地分类(试行)代码转换成新的土地利用现状分类代码,同时保证原有地籍数据平台的一致性,手动修改效率低下容易遗漏,只有在软件功能上挖掘,现介绍两种方法。一是运用“地籍管理”中的数据库功能,把地籍图有效信息转换成*.dbm的数据库文件格式,在Acess软件环境下,对表格形式数据库文件内的地类代码行中进行批量替换修改,再把修改好的文件,重新使用外部文件形式导入。二是运用“地籍管理模块”绘制权属线功能,把原有地籍图成果信息转换成文本文件格式,在文本文件格式中转换成Excel文件,对包含有地类代码信息的字段进行批量替换,再把替换的文本文件,重新使用外部文件形式导入,生成新的地类代码地籍成果图就可以了。4.2.7 用CASS7.1软件做地籍测量的总结CASS7.1绘图软件不失为一种高效率的测绘软件,随着数字化地籍成图得到越来越多的广泛应用,CASS7.1软件中还有大部分功能有待去开发、研究,能熟练掌握应用它的功能,将大大提高工作效率。下面再介绍一种可以简单快速提取宗地图的方法。第五章 Visual LISP 语言编程快速提取宗地图5.1 宗地图提取简介城镇地籍测量勘测定界测量中,宗地图的制作是很关键的一步。但在日常操作中,按现有软件,其制图过程很难一步到位,图面整饰需修改大量的数据,比如:缩小宗地比例后,距离、点号等可能压线,图上内容杂乱无章,需一个个或移动或修改或删除,重复工作量大,效率低下,容易出现漏洞或差错。以下介绍利用Visual LISP语言编程,仅需两个综合程序便能基本完成宗地图制作,大大强化了在城镇地籍测量勘测定界制图方面的功能。节省直接使用CASS来提取宗地图的时间,提高生产效率。5.2 Visual Lisp 语言介绍5.2.1 Visual Lisp 的简单介绍AutoCAD 软件具有相当优秀的开放型结构(Open architecture)和一个强大的内部编程语言(Autolisp语言,可以完成一些计算机工作和作图功能),可以方便地让用户开发自己的命令、标准库文件和各种应用程序等,以满足不同用户的特殊需要。目前支持AutoCAD二次开发环境的主要有:Autolisp,Visual Lisp,VBA,ObjectARX,ActiveX Automation 及块和形定义等。本文利用DCL(Dialog-box Control Language)、语言编制对话框、Visual Lisp 语言编程及定制菜单对AutoCAD2004 进行了二次开发与定制。AutoLISP是对AutoCAD进行二次开发最常用最有效的手段,是国内外AutoCAD应用软件开发者的首选工具。由于AutoLISP源程序的可读性较差,使得AutoLISP程序的编制、修改和维护显得不是很方便,尤其是对初学者更是如此。现在VisualLISP的出现,大大改进了老版本AutoLISP的性能,比如源代码的彩色显示、语法检查、即时求值、源代码编译等,显著提高了软件开发者的编程效率。利用Visual LISP 编制自己的应用程序,可以强化AutoCAD的应用特性,使AutoCAD成为自己的专业设计软件。5.2.2 Visual Lisp 的使用特点Visual Lisp内嵌于AutoCAD内部。使用时,在command命令行键人VLIDE或VLISP,也可以点击下拉菜单“TOOLS/Autolisp/Visual Lisp Editor,便可进人由文本编辑器、文件编译器、调试器、语法捡查器和其他开发工具等组成的集成开发环境。Visual Lisp 提供了可视化编程环境,它可以检查程序中的括号对应关系,由不同颜色所标志的语法检查系统自动进行匹配。可以帮助使用者迅速发现打字错误,提供实时的语法检查反馈。它也能够为AutoLisp源程序提供自动格式化功能。另外,在程序中设置断点以及高亮显示正在运行的语句,可以检测程序段的运行情况,帮助对程序的分析和排错。Visual Lisp可对源代码进行编译生成二进制代码,增加了程序的安全性,同时加快了程序的运行速度。用户也很容易地管理多文件应用程序,编译过的文件可以被封装成一个单独的模块。Visual Lisp包括Lisp和ActiveX Automation之间的接口,用户可以直接利用对象属性窗口访问对象的方法和属性,并可以使用操作系统级的文件访问函数。另外,方便的多文档的处理环境也是 Visual Lisp 的一个显著特点。5.3 程序设计与实现下面是用Visual LISP语言开发的在AutoCAD中制作宗地图方面的几个源程序。5.3.1 制作宗地图框该程序命令名为“zdtk ,所在层为“zdt,默认比例尺为1 :500,若宗地图比例尺为1:1000,只输入1000即可,其余类推。该图框为宗地图常用的A4纸图框。程序 1制作宗地图框(defun c zdtk()(setvar cm decho 0)(command osnap off)(command layer m zdt )(setq zg1(getvar ltscale)(setq zg (* zg1 2)(setq zdbl(getint 请输入宗地图比例尺(500):) )(if (=zdbl nil) (setq zdbl 500)(setq ti(rtos (getvar cdate) 2 6)(setq nn( substr ti 1 4)(setq yy( substr ti 5 2) )(setq rr( substr ti 7 2) )(setq dat( strcat nn 年 yy 月 rr 日) )(setq ba(getpoint the base point ) )(setq a1(car ba) )(setq b1(cadr ba) )(setq d1( list a1 b1) )(setq d2( list a1 (+ b1 (* zg 100) ) ) )(setq d3( list a1 (+ b1 (* zg 115) ) ) )(setq d4( list (+a1(* zg 90) ) ( +b1(* zg 115) ) ) )(setq d5( list (+a1(* zg 90) ) ( +b1(* zg 100) ) ) )(setq d6( list (+a1(* zg 90) )b1) )(setq d7( list (+a1(* zg 1) )(-b1(* zg 3 5) ) ) )(setq d8( list (+a1(* zg 1) ) (-b1(* zg 7) ) )( setq d9( list (+a1(* zg 74) ) (-b1(* zg 3.5) ) ) )( setq d10( list(+a1(* zg 74) ) (-b1(* zg 7) ) ) )( setq d11( list(+a1(* zg 10.2) ) (-b1(* zg 3.5) ) ) )( setq d12( list(+a1(* zg 45) ) (-b1(* zg 4.25) ) ) )( setq d13( list(+a1(* zg 2.5) ) (+b1(* zg 110) ) ) )( setq d14( list(+a1(* zg 2.5) ) (+b1(* zg 104) ) )( setq d15( list(+a1(* zg 47) ) (+b1(* zg 106.5) ) ) )( setq d16( list(+a1(* zg 45) ) (+b1(* zg 118) ) ) )( setq d17( list(+a1(* zg 74.5) ) (+b1(* zg 117) ) ) )( setq d18( list(+a1(* zg 86) ) (+b1(* zg 118) ) ) )( setq d19( list(+a1(* zg 85.75) ) (+b1(* zg 95) ) ) )( setq d20( list(+a1(* zg 85.75) ) (+b1(* zg 92.5) ) ) )( setq d21( list(+a1(* zg 83.5) ) (+b1(* zg 82.5) ) ) )( setq d22( list(+a1(* zg 88) ) (+b1(* zg 82.5) ) )( setq d23( list(+a1(* zg 85.75) )(+b1(* zg 86) ) ) )( command pline d1 d3 d4 d6 c)( command pline d2 d5 )( command text j bl d7(* zg 1.75)0 绘图日期: )( command text j bl d8(* zg 1.75)0 审核日期: )( command text j bl d9(* zg 1.75)0 绘图员: )( command text j bl d10(* zg 1.75)0 审核员: )( command text j bl d11(* zg 1.75)0 dat)( command text j bc d12(* zg 1. 75)0(strcat 1: (itoa zdbl) ) )( command text j bl d13(* zg 1.75)0 宗地编号: )( command text j bl d14(* zg 1.75)0 地籍图号: )( command text j bl d15(* zg 1.75)0 权利人: )( command text j bc d16(* zg 3)0 宗地图)( command text j bl d17(* zg1.75)0 单位: m、m)( command text j bl d18(* zg 0.85)0 2)( command solid d20 d21 d22 d23 )( command text j m d19 (* zg 1.75)0 北)( command layer m 0 )( prin1) )5.3.2 自动注记点号、距离、面积将闭合复合线改为红色界址线并自动注记点号、距离、面积,且缩至宗地图所需比例。该程序命令名为“zdt”,点号前缀可输入任意字符或字符串,默认为“J”,不论输入大写或小写,均转换为大写,点号注记到“dh”层,界址线及界址点圆圈自动保存到“jz”层,距离及面积都在“zj”层,缩放基准点为选取复合线点,默认比例尺为 1500(同上面程序),执行完该程序即变为所需宗地比例尺的图形。程序 2将闭合复合线改为红色界址线并自动注记点号、距离、面积,且缩至宗地图所需比例(defun c zdt()( setvar cm decho 0)( setq os(getvar osm ode) )( setvar osm ode 0)( setq zg1(getvar ltscale) )( if (= zg1 0.5) (setq bl 500)( if (= zg1 1.0) (setq bl 1000)( if (= zg1 2.0) (setq bl 2000)( setq zg (* zg1 2) )( setq zgy (* zg1 0.3)( setq xs(* zg 1.25) )( setq zdbl(getreal 请输入宗地图比例尺(500): ) )( if (= zdb l nil) (setq zdbl500. 0)( setq bs( / zdb l b l) )( setq zgm(* (* zg1 bs) 3. 0) )( setq qz(getstring 请输入点号前缀: (J) )( if (= qz ) (setq qz J) )( command layer m zj )( setq ss(entsel)( setq ba(n th 1 ss) )( setq kk(command area o ss) )( setq kk1(getvar area ) )( setq kk2(rtos kk1 2 0) )( setq mjba(getpoint n 请选择面积注记位置: ) )( command text c m jba zgm 0 (strcat 净用地面积: kk2 平方米) )( setq jlen1(entlast)( command scale jlen 1 ba ( /1. 0 bs) )( setq endata(entget (car ss) ) )( jzx 1)( setq i 0)( setq j 2)( setq k 0)( setq key -2)( while ( /= key 10)( setq w(nth i endata)( setq key(car w) )( setq i(+ i 1) ) )( while ( /= key 210)( setq w( nth k endata) )( setq key( car w) )( setq k( + k 1) )( setq k(- k 1) )( setq d1(- k 4) )( setq d2(- k 8) )( setq n(- i 1) )( setq nn n)( setq pp1( nth n endata)( setq fir pp1)( setq fir1( cdr fir) )( setq n( + n 4) )( setq pp2( nth n endata) )( setq sec pp2)( setq sec1( cdr sec)( while(= n d1)( if (= n d1)( progn( setq pp1( nth d1 endata) )( setq pp2 fir)( setq da( distance pp1 pp2) )( setq da1( rtos da 2 2) )( setq p1( cdr pp1) )( setq p2 fir1)( setq p3 sec1)( jlgg)( pfx2)( setq dhm( strcat (strcase qz) 1) )( command layer m dh )( command text j m p5 (* zg bs) 0 dhm )( setq dhen3( entlast) )( command scale dhen3 ba ( /1. 0 bs) )( command scale ss ba ( /1. 0 bs) )( command layer m 0 )( setvar osm ode os)( setq n(+ n 4) ) )( if (= n d2)( progn( setq n(- n 8)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论