CAD中炸开符号的自动识别和生成.doc

上传人:jian****018 文档编号:10062422 上传时间:2020-04-09 格式:DOC 页数:4 大小:197.50KB
返回 下载 相关 举报
CAD中炸开符号的自动识别和生成.doc_第1页
第1页 / 共4页
CAD中炸开符号的自动识别和生成.doc_第2页
第2页 / 共4页
CAD中炸开符号的自动识别和生成.doc_第3页
第3页 / 共4页
点击查看更多>>
资源描述
CAD中炸开符号的自动识别和生成赵振东(辽宁省地理信息院,辽宁 沈阳 110034)摘 要:在测绘生产中,有时由于历史原因,我们要处理的cad数据是碎线,即符号等全被炸开成一段一段的了,这时,我们除了用它做底图重新采集外,似乎是没有什么办法了,眼瞅着现有数据却不能直接用,还得重画,真的很郁闷。其实,通过分析各个符号的几何特征,利用autolisp二次开发还是有办法的。本文就是以一幅cad图中植被符号为例来解决这种碎线提取的问题。关键词:CAD autolisp 符号识别 特征 植被符号1 以直线为特征的符号提取(1)CAD数据现状我们所看到的是一幅全要素CAD图,包括居民地、道路、植被等。所有植被符号都在L层,以碎线形式存在。L层各种符号样子如下:L层对象情况:1)所有对象共有13种。2)所有对象同一图层和颜色。3)碎线符号之间间距大于150。4)各个符号线划集中在40x40的小矩形范围内。(2)针对以上特征,以针阔混交林为例,因其最下面水平线超长为29,具有唯一性,设计其提取流程:N选择所有在L层的直线放到选择集SSOLD中顺序获取SSOLD中一条直线直线角度=180 长度28依此直线生成40x40选区区直线中点为符号插入点选中的碎线移到tmp层插入针阔混交林符号到newL层Y(3)实现前期工作:1、新建tmp层,在此层存放提取的线划。 2、新建newL层,在此层插入标准符号。Lisp代码实现部分:(setq ssold (ssget X (0 . LINE)(8 . L)(setq ssnew nil)(setq n1 (sslength ssold)(setq i 0 num1 0 num2 0 flag 0)(command .zoom e )(while ( i n1) (setq en (ssname ssold i) (setq ed (entget en) (setq pt1 (cdr (assoc 10 ed) (setq pt2 (cdr (assoc 11 ed) (setq ang (angle pt1 pt2)(setq dis (distance pt1 pt2) (if (and (equal dis 26 0.001) ( equal ang 0 0.001) ) (progn (setq pt3 (polar pt2 (/ pi 2) 25) (setq ss1 (ssget c pt1 pt3 (8 . L) (if (= ( sslength ss1) 6) (progn (command change ss1 p la tmp ) (setq pt1 (polar pt1 0 13) (command .insert f118 pt1 10 10 ) ) ) ) ) (setq i (+ i 1) )(4)各种以线为特征线的符号比较:特征线长度角度符号插入点找到对象个数针阔混交林最底线290中点5针叶林中间线2590下端点3稻田中间线2090中点1草地左边线1090中点1,直线旱地最底线200中点2,直线疏林最底线100左端点1,圆经济林最上线890下端点1,圆阔叶林最底线5.80左端点2表中其它符号的提取同针阔混交林。2 以圆为特征的符号提取(1)以圆为特征的同线的稍有不同,以成林符号为例,设计提取流程如下:YN选择所有在L层的圆放到选择集SSOLD中顺序获取SSOLD中一个圆圆半径=6圆心为符号插入点插入成林符号到newL层Y选区圆=1选中圆移到tmp层依此圆心生成40x40选区(2)Lisp代码实现部分:(setq ssour (ssget X (0 . ARC)(8 . L)(-4 . =)(setq n1 (sslength ssour)(setq i 0 num2 0 )(command .zoom e )(while ( i n1) (setq en (ssname ssour i) (setq ed (entget en) (setq pt (cdr (assoc 10 ed) (setq pt1 (polar pt (* pi 0.25) 9) (setq pt2 (polar pt (* pi 1.25) 9) (setq len1 0) (setq ss1 (ssget _C pt1 pt2 ( (8 . L) ) (if ss1 (setq len1 (sslength ss1) (setq pt3 (polar pt (* pi 0.25) 15) (setq pt4 (polar pt (* pi 1.25) 15) (setq ss2 nil) (setq ss2 (ssget _C pt3 pt4 (0 . ARC) (8 . L)(-4 . =)(40 . 3.99) (if (and (= len1 1) (not ss2) (progn (setq ess (ssadd en) (command .change ess p la tmp ) (command .insert f118 pt 10 10 ) ) (setq i (1+ i)(3)各种以圆为特征的符号比较:半径符号插入点找到的其它圆个数成林6圆心0小树林6圆心1幼林4圆心0稀灌4圆心9密灌4圆心12表中其它符号的提取同成林符号。(4)检验:所有对象提取完后,在L层应不再有任何对象了。3 结束语本程序的完成,把在1个小时才能完成的工作,眨眼就能完成了,而且免查,把已有数据充分的利用起来了。对于大批量的数据处理更能显示其作用。参考文献: 1 梁雪春 宋德明. AutoCAD 2002二次开发技术指南(第一版).北京:清华大学出版社,2001. 11
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑环境 > 建筑资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!