分类房屋面积自动统计的程序实现

    廖维荣

    

    

    

    摘要:在新城建设或者旧城改造中,决策者往往想先了解征地拆迁工作量及成本,这样一来,房屋的建筑面积统计工作变得尤为重要,传统的手工计算既费时费力,又难以保证其准确性,文章应用VBA编制程序,实现了房屋分类面积的自动统计计算,使繁重的工作变得简单高效,并且能保证其准确与可靠性。

    关键词:房屋面积;分类统计;程序计算;VBA

    1引言

    随着社会经济的发展,人们对居住环境要求越来越高,新城建设和旧城改造项目进行的如火入茶;然而在项目的前期,决策者往往想先了解项目的征地拆迁工作量及成本,这样一来,房屋的建筑面积统计便成了该项工作的重中之重。传统的计算方法是逐间房屋分类手工计算,然后再汇总手工计算,这样既费时费力,也难以保证其准确性,笔者通过思考并结合实际项目,应用VB语言编制程序,实现了分类房屋面积的批量自动统计。

    2传统手工统计方法

    传统的手工处理方法一般是借助excel办公软件,将房屋预先编号,逐间房屋分类输入电子表格,然后计算,分类统计,这样一来,如果需要统计的房屋较多,工作量巨大,全部手工输入很难保证其正确性,对于大范围的城区改造,该种方法显然不可行。

    3计算机程序自动统计

    3.1开发工具介绍

    VBA是基于ActiveX技术的AutoCAD二次开发工具,可以通过ActiveX与AutoCAD进行通信,并操纵AutoCAD的许多功能。它基于Visual Basic版本,是面向对象体系结构的一种编程语言,有着与VB几乎相同的开发环境和语法。VBA依附于主应用程序AutoCAD,它与主程序的通信简单而高效,由于共享内存空间,使它有更快的执行速度,且其语法结构简洁,深受广大工程技术人员喜爱。

    3.2程序思路

    第一步,房屋分类归入不同图层,楼层数放入房屋中以备后续程序读取。

    第二步,程序对CAD图进行预处理,如删除房屋的多余节点,判断房屋内楼层数的唯一性,如果楼层数不等于1(有两个以上或者一个都没有),程序终止,将房屋换颜色显示,回手工处理阶段。

    第三步,程序按图层读取房屋面积及楼层数,按顺序将读取的房屋编号,将编号、面积、楼层数输出至EXCEL表格,将编号及面积写入相应房屋中心位置己备查询。

    第四步,程序自动统计所有房屋的总面积输出至EXCEL表格的汇总行,然后结束程序。

    3.3程序界面

    程序界面如图l所示。

    3.4部分源代码

    创造房屋选择集部分

    On Error Resume Next

    Call ThisDrawing.SelectionSets("MyssFw").Delete

    On Error Resume Next

    Set MySelectFw=ThisDrawing.SelectionSets.Add("MyssFw")

    If Err Then

    Err.Clear

    Set MySelect Fw = This Drawing.SeleetionSets("MyssFw")

    End If

    Dim gpCode(0.To 1)As Integer,dataValue(0.To 1)As Variant

    gpCode(0)=0:dataValue(0)="LWPolyline"

    gpCode(1)=8:dataValue(1)=layer99

    MySelectFw.SelectOnScreen gpCode,dataValue选择JMD房屋

    MySelectFw.Select acSelectionSetAll,,,gpCode,dataValue

    N=MvSelectFw.Count

    MJZn=0

    For I=0 To N-1

    Set PL=MySelectFw.Item(I)

    M=(UBound(PL.Coordinates)+1)/2

    ReDim pointsArray(0 To 3*(M-1)+2)AsDouble

    ReDim x(0 To M-1)As Double

    ReDim y(0 To M-1)As Double

    创建文字选择集部分

    0n Error Resume Next

    Call ThisDrawing.SelectionSets("MyssTx").Delete

    On Error Resume Next

    Set MyselectTx=ThisDrawing.SelectionSets.Add("MyssTx")

    If Err Then

    Err.Clear

    Set MyselectTx =This Drawing.SelectionSets("MyssTx")

    End If

    输出至Excel表格部分

    mySheet.Ceils(I+3,1).Value="合计"

    mySheet.Cells(I+3,2).Value="一层面积(砖混)"

    mySheet.Cells(I+3,3).Value="二层面积(砖混)"

    mySheet.Cells(I+3,4).Value="三层面积(砖混)"

    mySheet.Cells(I+3,5).Value="四层以上面积(砖混)"

    mySheet.Cells(I+3,6).Value="房屋总面积(砖混)"

    mySheet.Cells(I+3,11).Value="一层面积(砖木)"

    mySheet.Cells(I+3,12).Value="二层面积(砖木)"

    mySheet.Cells(I+3,13).Value="三层面积(砖木)"

    mySheet.Cells(I+3,14).Value="四层以上面积(砖木)"

    mySheet.Cells(I+3,15).Value="房屋总面积(砖木)"

    mySheet.Cells(I+3,21).Value="一层面积(简易)"

    mySheet.Cells(I+3,22).Value="二层面积(简易)"

    mySheet.Cells(I+3,23).Value="三层面积(简易)"

    mySheet.Cells(I+3,24).Value="四层以上面积(简易)"

    mySheet.Cells(I+3,25).Value="房屋总面积(简易)"

    mySheet.Cells(I+4,1).Value=N

    mySheet.Ceils(I+4,2).Value=ZHI

    mySheet.Cells(I+4,3).Value=ZH2

    mySheet.Cells(I+4,4).Value=ZH3

    mySheet.Ceils(I+4,5).Value=ZH4

    mySheet.Cells(I+4,6).Value=ZHZ

    mySheet.Ceils(I+4,11).Value=ZM1

    mySheet.Cells(I+4,12).Value=ZM2

    mySheet.Cells(I+4,13).Value=ZM3

    mySheet.Ceils(I+4,14).Value=ZM4

    mySheet.Cells(I+4,15).Value=ZMZ

    mySheet.Cells(I+4,21).Value=JY1

    mySheet.Cells(I+4,22).Value=Jf2

    mySheet.Cells(I+4,23).Value=JY3

    mySheet.Cells(I+4,24).Value=JY4

    mySheet.Cells(I+4,25).Value=UYZ

    3.5程序运行前CAD截图

    程序运行前CAD截图如图2所示。

    3.6程序运行后生成的Excel表格

    程序运行后生成的Excel表格如图3所示。

    4结语

    分类房屋面积统计程序基本实现了房屋面积的自动统计累加,前期仅需少量的人工干预(仅将不同结构或用途的房屋归入不同的图层即可),后续程序自动读取房屋面积与层数,并自动分算至各个楼层,方便快捷,省时省力。特别对于大面积的房屋面积统计尤能显示其优越性,譬如几千甚至上万个房屋,程序运行仅几秒钟即可统计完毕,并且保证准确可靠。由于笔者本身的学识和实践经验受限,程序在自动纠错和速度方面仍有许多可以改进提高的地方,笔者在今后的学习和工作中不断将其完善。

相关文章!
  • 融合正向建模与反求计算的车用

    崔庆佳 周兵 吴晓建 李宁 曾凡沂<br />
    摘 要:针对减振器调试过程中工程师凭借经验调试耗时耗力等局限性,引入反求的思想,开展了

  • 浅谈高校多媒体教育技术的应用

    聂森摘要:在科学技术蓬勃发展的今天,我国教育领域改革之中也逐渐引用了先进技术,如多媒体技术、网络技术等,对于提高教育教学水平有很

  • 卫星天线过顶盲区时机分析

    晁宁+罗晓英+杨新龙<br />
    摘 要: 分析直角坐标框架结构平台和极坐标框架平台结构星载天线在各自盲区状态区域附近的发散问题。通过建