◎聞威
(作者單位:大連市勘察測繪研究院有限公司)
引言:《房產(chǎn)測量規(guī)范》(GB/T 17986.1-2000)中規(guī)定,共有墻按水平投影面積的一半計入套內(nèi)墻體面積。從而繪制墻體中線,成為房產(chǎn)測繪的必要工作,而現(xiàn)有的測繪軟件并沒有墻體中線獲取功能,使得這項工作較為繁瑣,且容易出錯。針對此問題,本文進(jìn)行了相應(yīng)的研究,提出解決方法,并利用AutoLISP 編程語言編寫了相應(yīng)的程序,提高了工作效率。
房產(chǎn)圖上主要有兩種線:建筑線和套內(nèi)線。建筑線是建筑的輪廓線,套內(nèi)線是戶間的分割線或戶與公用面積的分割線。套內(nèi)線的數(shù)量一般大于建筑線的數(shù)量,戶和公用面積越多,套內(nèi)線的數(shù)量越大。套內(nèi)線一般是墻體中線。
我們在AutoCAD 上繪制墻體中線時一般采用兩種方法,一種是用墻體邊線偏置的方法。根據(jù)墻體邊線位置和墻體厚度,利用偏置功能繪制中線。在LINE 線較多時,此方法較為繁瑣。另一種方法是利用墻體截斷面實體線,用中點捕捉的方式依次繪制中線。在原圖上沒有實體線時,則需要手動繪制實體線,也較為費力。
總體思路:先統(tǒng)一處理墻體邊線為LINE 線,然后根據(jù)墻體兩側(cè)邊線起終坐標(biāo),求取并繪制墻體中線,使用選擇集統(tǒng)一管理新繪制的中線圖元,最后連接并合并中線。
流程圖:
根據(jù)上述思路,利用AutoLISP 編制程序如下:
*繪制墻體中線程序*
(defunc:hzx();主程序
(setqi1 rec0 ss (ssadd));
(command"osnap""none""")
(command"_chamfer""d" 0 0"")
(setqchklay(tblsearch"layer""中線"))
(if (=chklaynil)
(command"_layer""n""中線""c"1"中線""s""中線""""")
(command"_layer""s""中線""""")
);if
(prompt" ☆請依次選擇Line 線☆")
(setqsel(getstring" 中線是否連續(xù)?是[y] 否[n]:[是]"))
(while (= rec 0);循環(huán)繪制中線
(hzx_1);循環(huán)調(diào)用繪制子函數(shù)
(if(and(>i2)(or(=sel"y")(=sel"")));判斷中線繪制條數(shù),連接中線。
(progn
(if(and(/=L_last L_new)(>i1))
(command"chamfer" L_last L_new "")
);if
);progn
);if
(setqL_lastL_new)
);while
(command"pedit""m" ss "" "y""j" """");合并中線。
(princ)
)
(defunhzx_1();子程序1
(提示選擇墻體兩側(cè)邊線)
(調(diào)用子程序2)
(判定墻體邊線的起始方向)
(繪制墻體邊線)
)
(defun hzx_2(tip_x);子程序2
(setqLL (entseltip_x))
(hzx_3 tip_x)
(if(=rec0)
(progn
(setqLL_chk (cdr(assoc0(entget(carLL)))))
(while(/=LL_chk"LINE")
(prompt" 選擇線不是Line 線,請重新選擇!")
(setqLL (entseltip_x))
(hzx_3tip_x)
(setqLL_chk (cdr(assoc0(entget(carLL)))))
);while
);progn
);if
)
(defun hzx_3(tip_x);子程序3
(根據(jù)選擇,判斷繪制是否結(jié)束)
)
1.隨著計算機(jī)技術(shù)的日益發(fā)展,測繪軟件的功能也趨于完善,但現(xiàn)有軟件并不能完全解決問題,這時我們可以自己去思考和解決,使軟件進(jìn)行更加完善。2.本文通過分析工作中遇到的實際問題,提出了解決思路,并編制相應(yīng)的程序,從而提高了工作效率。