CAD中炸開符號的自動識別和生成.doc
《CAD中炸開符號的自動識別和生成.doc》由會員分享,可在線閱讀,更多相關(guān)《CAD中炸開符號的自動識別和生成.doc(4頁珍藏版)》請在裝配圖網(wǎng)上搜索。
CAD中炸開符號的自動識別和生成 趙振東 (遼寧省地理信息院,遼寧 沈陽 110034) 摘 要:在測繪生產(chǎn)中,有時由于歷史原因,我們要處理的cad數(shù)據(jù)是碎線,即符號等全被炸開成一段一段的了,這時,我們除了用它做底圖重新采集外,似乎是沒有什么辦法了,眼瞅著現(xiàn)有數(shù)據(jù)卻不能直接用,還得重畫,真的很郁悶。其實,通過分析各個符號的幾何特征,利用autolisp二次開發(fā)還是有辦法的。本文就是以一幅cad圖中植被符號為例來解決這種碎線提取的問題。 關(guān)鍵詞:CAD autolisp 符號識別 特征 植被符號 1 以直線為特征的符號提取 (1)CAD數(shù)據(jù)現(xiàn)狀 我們所看到的是一幅全要素CAD圖,包括居民地、道路、植被等。所有植被符號都在L層,以碎線形式存在。L層各種符號樣子如下: L層對象情況: 1)所有對象共有13種。 2)所有對象同一圖層和顏色。 3)碎線符號之間間距大于150。 4)各個符號線劃集中在40x40的小矩形范圍內(nèi)。 (2)針對以上特征,以針闊混交林為例,因其最下面水平線超長為29,具有唯一性,設(shè)計其提取流程: N 選擇所有在L層的直線放到選擇集SSOLD中 順序獲取SSOLD中一條直線 直線角度=180 長度>28 依此直線生成40x40選區(qū)區(qū) 直線中點為符號插入點 選中的碎線移到tmp層 插入針闊混交林符號到newL層 Y (3)實現(xiàn) 前期工作:1、新建tmp層,在此層存放提取的線劃。 2、新建newL層,在此層插入標(biāo)準(zhǔn)符號。 Lisp代碼實現(xiàn)部分: (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)各種以線為特征線的符號比較: 特征線 長度 角度 符號插入點 找到對象個數(shù) 針闊混交林 最底線 29 0 中點 5 針葉林 中間線 25 90 下端點 3 稻田 中間線 20 90 中點 1 草地 左邊線 10 90 中點 1,直線 旱地 最底線 20 0 中點 2,直線 疏林 最底線 10 0 左端點 1,圓 經(jīng)濟林 最上線 8 90 下端點 1,圓 闊葉林 最底線 5.8 0 左端點 2 表中其它符號的提取同針闊混交林。 2 以圓為特征的符號提取 (1)以圓為特征的同線的稍有不同,以成林符號為例,設(shè)計提取流程如下: Y N 選擇所有在L層的圓放到選擇集SSOLD中 順序獲取SSOLD中一個圓 圓半徑=6 圓心為符號插入點 插入成林符號到newL層 Y 選區(qū)圓=1 選中圓移到tmp層 依此圓心生成40x40選區(qū) (2)Lisp代碼實現(xiàn)部分: (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 (polar pt (* pi 1.25) 15)) (setq ss2 nil) (setq ss2 (ssget "_C" pt3 pt4 ((0 . "ARC") (8 . "L")(-4 . "<=")(40 . 4.01)(-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)各種以圓為特征的符號比較: 半徑 符號插入點 找到的其它圓個數(shù) 成林 6 圓心 0 小樹林 6 圓心 1 幼林 4 圓心 0 稀灌 4 圓心 9 密灌 4 圓心 12 表中其它符號的提取同成林符號。 (4)檢驗:所有對象提取完后,在L層應(yīng)不再有任何對象了。 3 結(jié)束語 本程序的完成,把在1個小時才能完成的工作,眨眼就能完成了,而且免查,把已有數(shù)據(jù)充分的利用起來了。對于大批量的數(shù)據(jù)處理更能顯示其作用。 參考文獻: [1] 梁雪春 宋德明. AutoCAD 2002二次開發(fā)技術(shù)指南(第一版).北京:清華大學(xué)出版社,2001. 11- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- CAD 中炸開 符號 自動識別 生成
鏈接地址:http://m.jqnhouse.com/p-10062422.html