陳榮,謝光,陳慶華,徐擁國(guó)
(浙江有色測(cè)繪院,浙江紹興 312000)
基于Auto LISP技術(shù)實(shí)現(xiàn)房屋面積計(jì)算的二次檢核
陳榮?,謝光,陳慶華,徐擁國(guó)
(浙江有色測(cè)繪院,浙江紹興 312000)
房產(chǎn)測(cè)量中房屋面積的手工計(jì)算,是房屋面積二次檢核的一種有效手段,但也是較為繁重的一項(xiàng)工作。本文結(jié)合實(shí)例介紹在AutoCAD軟件平臺(tái)上,如何引入Auto LISP編程,簡(jiǎn)化手工計(jì)算,實(shí)現(xiàn)可視、快速的房屋面積二次檢核的方法。
AutoLISP;房產(chǎn)測(cè)量;房屋面積;面積計(jì)算;二次檢核
房屋面積作為房地產(chǎn)權(quán)屬登記管理、開發(fā)交易等房地產(chǎn)活動(dòng)緊密相關(guān)的基礎(chǔ)性數(shù)據(jù),其測(cè)算與檢核都需要有效的方法與嚴(yán)格的程序把控。房屋面積的測(cè)算,由于其復(fù)雜性與風(fēng)險(xiǎn)性,原則上要求兩套房產(chǎn)測(cè)繪軟件獨(dú)立計(jì)算保證數(shù)據(jù)成果的正確性。在實(shí)際操作中,利用AutoCAD軟件進(jìn)行房屋面積的手工計(jì)算,也是一種有效的檢核手段。但此項(xiàng)工作較為繁重,由于AutoCAD軟件原有的面積計(jì)算命令較為簡(jiǎn)單,這造成實(shí)際操作中很多不便,特別是一些墻體不規(guī)則、結(jié)構(gòu)較復(fù)雜的房屋,如酒店、別墅、商住樓等,處理起來既費(fèi)時(shí)又費(fèi)力,也容易出錯(cuò)。
借助AutoCAD繪圖軟件的開放性平臺(tái),引入AutoLISP二次開發(fā)技術(shù),可以使AutoCAD軟件上房屋面積的手工計(jì)算二次檢核工作變得可視化、簡(jiǎn)便化。利用AutoLISP編程,在AutoCAD軟件上可實(shí)現(xiàn)上空部位面積的扣除、陽臺(tái)半面積的計(jì)算、戶室全面積的計(jì)算、外半墻面積的自動(dòng)生成,最后整幢房屋面積的統(tǒng)計(jì)一系列二次檢核工作。
2.1 基本框架和流程
本文結(jié)合浙江省紹興市一個(gè)公寓式酒店房屋面積統(tǒng)計(jì)的實(shí)例,介紹房屋面積檢核的這一程序的實(shí)現(xiàn)過程。
房屋面積的計(jì)算,一般在分層圖上進(jìn)行,房屋內(nèi)有戶室、陽臺(tái)、上空部位等要素,CAD軟件無法直接對(duì)這些面積進(jìn)行分辨及計(jì)算,所以首先應(yīng)該對(duì)這些面域按一定的規(guī)則進(jìn)行屬性的賦加;另外一般分層圖繪制的是中軸圖,分層圖中每層的外半墻是不存在的,CAD軟件無法直接計(jì)算,必須先判別出每層的外半墻。所以程序的思路是先解決這兩步,然后完成每層房屋面積的計(jì)算和幢總面積的計(jì)算,最終完成房屋面積計(jì)算的二次檢核工作。程序的基本框架和流程如圖1所示。
圖1 基本框架和流程
2.2 面域?qū)傩缘妮斎?/p>
根據(jù)房屋面積計(jì)算的方式房屋面域一般分增加部分、扣除部分、減半部分三種,增加部分如戶室、樓梯等,扣除部分如上空部位,減半部分如不封閉的陽臺(tái)、無柱走廊等。子模塊按此三種方式對(duì)房屋面域進(jìn)行屬性的賦加,使程序能通過相應(yīng)的操作進(jìn)行面積的分類計(jì)算。
在CAD軟件中輸入命令“fcmj”,就可以調(diào)用程序,按命令行的提示依次給分層圖上所有面域進(jìn)行屬性的賦加,圖上各面域自動(dòng)按增加、扣除、減半三類完成面積的標(biāo)注。實(shí)現(xiàn)界面如圖2所示。
圖2 面域?qū)傩暂斎虢缑?/p>
關(guān)鍵代碼如下:
(setq pt(getpoint"\n選取中心點(diǎn):"))
(setq xx 0 yy 0 zz 0 xyz 0 fabc 0)
(while pt
(setvar "cecolor""1")
(command"bpoly"pt"")
(setq en(entlast))
(if(/=en nil)
(progn
(command"area""o"en)
(setq aa(getvar"area"))
(redraw en 3)
(setq fwsx(getstring"\n輸入屬性(1)增加面積(2)減半面積(3)扣除面積<增加面積>:"))
(if(=fwsx"")(setq fwsx"1"))
(if(=fwsx"1")
(progn
(setq xx(+xx aa))
(setvar "cecolor""1")
(command"_Text""j""mc"pt 0.5 0(strcat" +"(rtos aa)))))
(if(=fwsx"2")
(progn
(setq yy(+yy(/aa 2)))
(setvar "cecolor""5")
(command"_Text""j""mc"pt 0.5 0 (strcat (rtos aa)"/2"))))
(if(=fwsx"3")
(progn
(setq zz(+zz aa))
(setvar "cecolor""3")
(command"_Text""j""mc"pt 0.5 0(strcat" -"(rtos aa)))))
2.3 外半墻面積的計(jì)算
多數(shù)情況下房屋外墻的厚度整體統(tǒng)一,房屋分層圖中沒有繪制外框線,這種情況下手工計(jì)算外半墻面積將是一項(xiàng)繁瑣的工作,直接用CAD軟件的“bhatch”命令無法完成外邊線的繪制。在編程中我們用了" boundary"函數(shù),實(shí)現(xiàn)了自動(dòng)尋找每層房屋的外框封閉范圍并完成外邊線的繪制。
一般的房屋測(cè)量外半墻存在兩種方式,一種是較常見的“外凸型”,另一種是回字形房屋的內(nèi)部,我們稱它為“內(nèi)凹型”。外半墻線的繪制在CAD操作中,常用“offset”命令,但此命令無法自動(dòng)判斷是向外偏移還是向內(nèi)偏移,這是編程的一個(gè)難點(diǎn)。在編程中我們用了"offsetdist"函數(shù),再根據(jù)偏移面積的大小來辨別繪制的線是外凸型還是內(nèi)凹型的外半墻線,較好解決了這一問題。在操作中只要選擇外凸型或內(nèi)凹型,選中外邊線,并輸入外半墻厚度,就可以實(shí)現(xiàn)本層外半墻線的繪制并自動(dòng)完成外半墻面積的計(jì)算。
當(dāng)本層所有面域都完成了屬性配賦后,按程序提示進(jìn)行房屋外半墻的繪制,完成后會(huì)自動(dòng)添加青色的外半墻線,并計(jì)算外半墻面積,實(shí)現(xiàn)界面如圖3所示。
圖3 外半墻面積計(jì)算界面
關(guān)鍵代碼如下:
(setq pt(getpoint"\n如房屋外墻中軸線未封閉請(qǐng)點(diǎn)擊外側(cè)..."))
(command"_.boundary""a""o""p"""pt"")
(setvar "cecolor""4")
(setq obj(entsel "\n選擇房屋外墻中軸線:"))
(entdel(entlast)) (while obj
(setq fbxsx(getstring"\n輸入外半墻屬性(1)外凸型(2)內(nèi)凹型<外凸型>:"))
(if(=fbxsx"")(setq fbxsx"1"))
(command"_.area""o"obj)
(setq faa(getvar"area"))
(setq cm(getvar"cmdecho")of 0.12) (if(null(setq nf(getdist(strcat"\n輸入房屋半墻寬:<" (rtos of 2 2)">"))))
(setq nf of))
(setvar"cmdecho"0)
(setvar"offsetdist"nf)
(vl-load-com)
(setq obj(vlax-ename->vla-object(car obj)))
(vla-offset obj nf)
(setq en(entlast))
(command"_.area""o"en)
(setq fbb(getvar"area"))
(command"_.change"en"""p""c""4""lt""x6" "")
(if(>fbb faa)
(progn
(setq fab(-fbb faa))
(if(=fbxsx"2")(entdel en))))
(if(<fbb faa)
(progn
(setq fac(-faa fbb))
(if(=fbxsx"1")(entdel en))))
(vla-offset obj(?nf-1))
(setq en(entlast))
2.4 房屋面積的檢核
房屋面積的統(tǒng)計(jì)檢核,一般要考慮每層房屋面積的統(tǒng)計(jì),還有考慮整幢房屋面積的統(tǒng)計(jì),有時(shí)為檢查分析錯(cuò)誤,也需要任意幾個(gè)面域或幾個(gè)層次的面積統(tǒng)計(jì),這需要程序功能有這種開放性和靈活性。我們利用“ssget”選擇所有的面域數(shù)據(jù)集,讓程序自動(dòng)分辨屬于需統(tǒng)計(jì)的那些數(shù)值,篩選選擇集中非房屋面域的數(shù)據(jù),對(duì)賦加了屬性的面域進(jìn)行分類統(tǒng)計(jì)。程序運(yùn)行后生成一個(gè)關(guān)于面積統(tǒng)計(jì)的信息框,包括增加面積的累計(jì)值、減半面積的累計(jì)值、扣除面積的累計(jì)值、外半墻的累計(jì)值,并自動(dòng)完成房屋總面積的統(tǒng)計(jì),如圖4所示。
關(guān)鍵代碼如下:
(princ"\n??選擇要統(tǒng)計(jì)的房屋面積數(shù)值??") (setq ent(ssget))
(setq n(sslength ent))
(setq i0)
(initget5)
(repeat n
(setq x(ssname ent i))
(setq el(entget x))
(setq i(+1 i))
(setq txt(dxf 0 el))
(if(=txt"TEXT")
(progn
(setq txt(dxf 1 el))
(setq txtgs(strlen txt))
(if(=(substr txt1 1)"+")
(progn
(setq txt(substr txt 2))
(setq xx(+(atof txt)xx))))
(if(=(substr txt1 1)"-")
(progn
(setq txt(substr txt 2))
(setq zz(+zz(atof txt)))))
(if(=(substr txt(-txtgs 1))"/2")
(progn
(setq txt(substr txt 1(-txtgs 2)))
(setq yy(+(/(atof txt)2)yy))))
(if(=(substr txt 1 2)"外")
(progn
(setq txt(substr txt 3))
(setq fab(+(atof txt)fab)))))))
(setq xyz(-(+xx yy fab)zz))
圖4 房屋面積統(tǒng)計(jì)界面
本程序通過實(shí)際應(yīng)用,又通過與WalkFloor房屋面積計(jì)算分?jǐn)傁到y(tǒng)、手工統(tǒng)計(jì)的計(jì)算成果相比較,計(jì)算值完全一致。
房屋面域?qū)傩缘馁x加、外半墻面積的計(jì)算以及面積統(tǒng)計(jì)命令的使用,三個(gè)步驟便能輕松完成房屋面積的自動(dòng)統(tǒng)計(jì)實(shí)現(xiàn)房屋面積的二次檢核。三個(gè)部分既組成整體,又相互獨(dú)立,既可單獨(dú)計(jì)算一個(gè)戶室的套內(nèi)面積,也可檢核整幢房屋的總面積,這種獨(dú)立性使程序在涉及面積統(tǒng)計(jì)的其他領(lǐng)域也可適用,如土地分類面積的統(tǒng)計(jì)、竣工測(cè)量中房屋建筑占地面積和綠化面積的自動(dòng)統(tǒng)計(jì)??梢钥吹降氖?,利用AutoLISP的二次開發(fā)技術(shù),使房屋面積的手工統(tǒng)計(jì)檢核工作從繁重中解放出來。
[1] GB/T 17986-2000.房產(chǎn)測(cè)量規(guī)范[S].
[2] 劉武.房地產(chǎn)測(cè)繪成果質(zhì)量檢查的實(shí)踐[J].測(cè)繪通報(bào),2004(4).
[3] 龔子楨,花向紅,徐秀川等.在CAD平臺(tái)下實(shí)現(xiàn)房屋屬性自動(dòng)修改的方法[J].測(cè)繪通報(bào),2011(9).
[4] 趙文峰.利用AUTOLISP編程進(jìn)行房產(chǎn)圖尺寸標(biāo)注[J].測(cè)繪工程,2006(2).
[5] 湯峻.AutoCAD 2000高級(jí)應(yīng)用與Visual AutoLISP開發(fā)[M].北京:人民郵電出版社,2001.
Second Check of Calculation of Property Area by Auto LISP
Chen Rong,Xie Guang,Chen Qinghua,Xu Yongguo
(Zhejiang Colored Surveying and Mapping Institute,Shaoxing 312000,China)
Manual computation is an effectivemeasure for double-checking floor space in house property surveying,but also a heavy one.This paper demonstrates the way to simplify themanual computation by introducing Auto LISP on the AutoCAD platform along with some examples,so as to rapidly double-check floor space and visualize the process at the same time.
AutoLISP;house property surveying;floor space;house size;double check
1672-8262(2013)02-136-04
P209
B
2012—07—23
陳榮(1971—),男,工程師,主要從事房產(chǎn)測(cè)繪和工程測(cè)量等技術(shù)工作。