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

评论

0/150

提交评论