欢迎来到天天文库
浏览记录
ID:46290411
大小:195.97 KB
页数:3页
时间:2019-11-22
《基于Autocad数字地形图分幅裁剪的实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、第22卷第2期安徽地质V0l_22No.22012年6月GeologyofAnhuiJune2012文章编号:1005—6157(2012)02—155—03基于Autocad数字地形图分幅裁剪的实现曹安淮,邓毅(安徽省地质测绘技术院,安徽合肥230022)摘要:针对当前市场上很多地形图成图软件在分幅时裁剪不干净,容易丢对象和分幅速度慢等情况,笔者使用vi—sumLisp编程语言,基Autocad中的“Break”命令开发了一个相对完善的裁剪工具以代之。关键词:VisualLisp;圆;椭圆;样条曲线;2D多段线;
2、图元对象中国分类号:TP391.4文献标识码:A很少使用,故本程序未考虑面实体的裁剪。0引言1_2交点计算当前测绘行业应用较广的基于Autocad的测绘成图幅裁剪前将必须逐一计算得出裁剪对象和裁剪图软件较多,虽然其功能侧重各不相同,但其中对地边框的交点坐标。其中直线段和直线段的交点计算最形图裁剪分幅功能必不可少。笔者在实际使用过程中为简单,只需列出两线段的直线方程,然后组成方程发现,这些软件的裁剪功能均存在一个共同的缺陷,组进行解算即可。其它对象的交点计算,总体原则也即裁剪不干净,分幅后丢失图元对象严重,尤其对一是
3、列方程组进行计算。地形图中图元丰富,有各种类些特殊对象如椭圆、闭合样条曲线、2D多段线以及别的图元对象,其交点坐标计算较为复杂,且算法稍自相交图元等。部分商业软件在使用其裁剪工具对有不当,计算速度会极慢,计算精度难以保障。故本2D多段线和自相交图元进行裁剪时,甚至会出现严文不做论述,而考虑直接使用第三方API函数,以提重错误而导致系统崩溃。包括AutoDesk公司自己的测高开发速度和可靠性。绘商业软件AutocadMAP在内,其裁剪工具也不尽完1.3统计裁剪图元及相应断点坐标善,对于上述的特殊图元尤其是自相交图元同
4、样会出1.3.1定义选择集现裁剪不干净现象。另外,部分成图软件在使用此功在地形图裁剪之前,需要选择裁剪边界线,此裁能时的系统资源需求极大,裁剪速度较慢。针对这些剪边界线可以是圆、椭圆以及任意形状的多边形。然缺陷,笔者使用VisualLisp编程语言,基于Autocad后使用获得其边界坐标值,按自右向左的顺序选择图中的“Break”命令开发了一个相对完善的裁剪工具元对象。因文本、点及参照块无需裁剪,故可以事先以代之。定义一个选择过滤器filter,以加快选择和计算速度。1.3.2分类统计图元对象1收集裁剪图元对象在交
5、点计算过程中,根据被选中且和裁剪边界有1.1地形图图元分析至少两个交点的对象类型进行分类统计,统计原则地形图中图元丰富,尤其基于Autocad的地形图为:圆和椭圆一类、闭合样条曲线一类、2D多段线产品中,基本图元涉及到系统的各种类别。主要包一类、剩下的非点非字非块非面一类。并统计各类图括:文本、点、线、面以外部参照实体等。其中线实元和裁剪边界的交点坐标。具体代码如下:体又包含了直线、圆、圆弧、椭圆、椭圆弧、优化多(ifBpt_sublist;如果有交点段线、2D多段线等。地形图分幅裁剪,主要裁剪对(progn象为线
6、实体和面实体,但面实体在大比例尺地形图中(setqTrimobjTemobj);统计此对象进入待裁剪收稿日期:2012—02—24作者简介:曹安淮(1962一),男,安徽蚌埠人,工程师,主要从事数字化制图、航测和GIS工作。156安徽地质列表,并同时统计交点列表作为待断开点略1cond(setqcounter0)(and(or(equalObjectName”AcDbCircle”)(equal(setqBreakobjnumber(1engthCircleandEllipseTri—ObjectName”AcDb
7、Ellipse”))(>(1engthBptsublist)mobj_list));;需要分解的圆及椭圆对象数量1)1;;统计超过一个交点的圆及椭圆对象(setqCircleandEllipseTrimobj_list(appendCircle—(setqBpt_Sublist(nthcounterCircleandEllipseobjB—andE1lipseTrim0bj—list(1istTrimobj)));统计圆及椭圆pt_list))对象(setqVNewTrim_obj(apa—copyVTrim—oh
8、j));;克隆(setqCircleandEllipseobjBpt_list(appendCirclean—一个需要分解的对象dEllipseobjBpt_list(1istBpt_sublist))));圆及椭圆断点(setqArcandEllipseTrimobj_list(appendArcandEll—列表ipseTrimobj_list(1ist
此文档下载收益归作者所有