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

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CAD中炸开符号的自动识别和生成 赵振东 (辽宁省地理信息院,辽宁 沈阳 110034) 摘 要:在测绘生产中,有时由于历史原因,我们要处理的cad数据是碎线,即符号等全被炸开成一段一段的了,这时,我们除了用它做底图重新采集外,似乎是没有什么办法了,眼瞅着现有数据却不能直接用,还得重画,真的很郁闷。其实,通过分析各个符号的几何特征,利用autolisp二次开发还是有办法的。本文就是以一幅cad图中植被符号为例来解决这种碎线提取的问题。 关键词:CAD autolisp 符号识别 特征 植被符号 1 以直线为特征的符号提取 (1)CAD数据现状 我们所看到的是一幅全要素CAD图,包括居民地、道路、植被等。所有植被符号都在L层,以碎线形式存在。L层各种符号样子如下: L层对象情况: 1)所有对象共有13种。 2)所有对象同一图层和颜色。 3)碎线符号之间间距大于150。 4)各个符号线划集中在40x40的小矩形范围内。 (2)针对以上特征,以针阔混交林为例,因其最下面水平线超长为29,具有唯一性,设计其提取流程: (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)各种以线为特征线的符号比较: 特征线 长度 角度 符号插入点 找到对象个数 针阔混交林 最底线 29 0 中点 5 针叶林 中间线 25 90 下端点 3 稻田 中间线 20 90 中点 1 草地 左边线 10 90 中点 1,直线 旱地 最底线 20 0 中点 2,直线 疏林 最底线 10 0 左端点 1,圆 经济林 最上线 8 90 下端点 1,圆 阔叶林 最底线 5.8 0 左端点 2 表中其它符号的提取同针阔混交林。 2 以圆为特征的符号提取 (1)以圆为特征的同线的稍有不同,以成林符号为例,设计提取流程如下: (2)Lisp代码实现部分: (setq ssour (ssget X ((0 . ARC)(8 . L)(-4 . =)(40 . 6.01)(-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

文档评论(0)

82393aa + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档