1基于AutoCAD平台的快速房产测量面积分摊计算系统研发何鑫星1张胜书1鄢中堡2(1.四川省测绘产品质量监督检验站,四川成都610041;2.四川省第一测绘工程院,四川成都610100)摘要:本文介绍了利用AutoCAD平台和VBA、Lisp及VisualBasic6.0开发语言,进行房产测量面积分摊计算系统开发的技术、原理及方法。利用该系统可快速、高效并系统性地完成房产测量面积分摊计算,在房产测量中具有较高的应用价值。关键词:房产测绘;分摊计算;AutoCAD平台;二次开发FastareaapportionmentofestatemeasurementbasedonAutoCADHEXin-xing1ZHANGSheng-shu1YANZhong-bao2Abstract:ThisarticledescribestheprinciplesandmethodsofusingVBA,LISPandVisualBasic6.0,inAutoCADplatformforrealestateapportionment.Thesystemcanbedonerealestateareaofapportionmentoffast,efficientandsystematic.Ithasahighpracticalvalueinrealestatemeasurement.Keywords:Estatemeasurement;Areaapportionment;AutoCADplatform;Customizationdevelopment一、引言房产测绘是测绘行业中与日常生活关系最为紧密的一种测量。其测量所得的面积最终将被产权登记所用,它直接关系着管理部门、开发商和业主的切身利益,为此房产测绘也最容易引起法律纠纷。作为测绘质量监督单位更是责任重大,需要对众多房产测绘单位的面积测绘成果进行质量检查。为了准确、快速并系统性的完成复杂的房屋面积分摊计算的核算工作,笔者结合相关规范和工作实际开发了一套快速房产测绘面积分摊计算的软件系统。二、开发工具及平台的选择AutoCAD是一款功能强大的图形编辑软件,在建筑设计领域广泛使用,在房地产测绘领域也得到了大面积的使用,用它能轻松简单的完成房屋平面图绘制。AutoCAD具有丰富的二次开发接口,包括VBA、Lisp、ARX等。其中VBA可以快捷的做出图形界面;Lisp可以便捷的调用VBA程序的各个模块,相当于在CAD中输入命令,使用非常方便;ARX具有对底层直接操控的能力,能快速高效的开发功能强大的扩展功能。房产测绘面积分摊计算系统的开发选择AutoCAD的VBA和Lisp开发接口进行二次开发,此种模2式开发的特点是VBA可以直接操作CAD图元对象,程序执行效率高,且VBA可以实现简洁易用的窗体,使得程序更加人性化,更简单使用。Lisp主要用来建立VBA程序与CAD菜单和工具栏之间的联系,可以整合VBA程序功能到菜单及工具栏中,使得程序使用更加方便,就像是使用CAD内置功能一样。但考虑到VBA开发的程序最终是一个DVB工程,其中包含程序源码,容易被修改破坏,并且运行时解释执行,关键运算效率不如编译后执行的程序。为保证系统的健壮性和稳定性,只用VBA来实现属性的添加、修改和读取,关键的计算分摊部分用VisualBasic6.0语言编程实现。通过CAD外接MicrosoftAccessMDB数据库,用VisualBasic6.0来完成分摊计算和表格输出的功能。综合易用性和稳定性考虑,选择VisualBasic6.0开发语言、应用Lisp和VBA基于AutoCAD平台二次开发编写房产测量面积分摊计算系统是适合的。三、系统的总体设计3图1房产测量面积分摊计算系统总体设计图四、系统实现原理与方法(1)、分摊系数计算公式房产测量面积分摊的基本原理为面积按比例进行分配,分摊的难易程度与功能区的多少和分摊方式的多少有关。一般分摊方式会涉及到幢分摊、功能区分摊、功能区间分摊、层分摊、层内分摊及协议分摊等。结合GB/T17986.1-2000《房产测量规范》和《四川省房产测绘实施细则》得出常用的分摊系数计算公式如下:Ⅰ、K幢(幢分摊系数)=幢分摊面积/(幢建筑面积-幢分摊面积);Ⅱ、K功(功能区分摊系数)=功能区分摊面积×(1+K功间)/(功能区的套内建筑面积+功能区内的低级分摊面积)+K功间;Ⅲ、K功间(功能区间分摊系数)=K幢+功能区间分摊面积×(1+K幢)/(功能区间内的套内建筑面积+功能区间内的低级分摊面积);Ⅳ、K层(层分摊系数)=层分摊面积×(1+K功)/层套内建筑面积+K功。(2)、分摊计算过程中要解决的几个关键问题当一幢房子涉及到多个功能区和多种分摊方式的时候,就会带来分摊计算的难度。如图2中,涉及到6个功能区(白色部分)和9部分的共有建筑面积(灰色部分),共有建筑面积的分摊方式为幢摊、功能区分摊及功能区间的分摊。4图2多个功能区和多种分摊方式的例子①多级分摊的分摊级别确定问题当同一块共有建筑面积分给多个功能区的时候,会出现复杂的功能区编号的组合。例如图2中的“123456”、“12345”、“1245”、“235”、“145”、“45”,“14”、“4”、“5”这9个编号组合,那么就涉及到一个确定分摊级别(分摊顺序)的问题,就是在分摊计算的时候到底应该按什么样的分摊顺序将9个部分共有建筑面积进行分摊。本系统建立了一个数学模型,能通过不同的编号组合自动进行分摊级别的确定,并且不限功能区的个数及功能区编号组合的个数,也就是说可以对N个功能区产生的M多个功能区编号组合进行分摊级别的确定。建立数学模型如下:假设有N个功能区:1、2、3…N,产生的功能区编号组合可存放在一个有M个元素的一维数组a(M)中。那么所有编号一起的组合,即代表幢分摊;单个号的组合,即代表功能区分摊;其他的编号组合,即代表功能区间分摊。再定义一个数组b(M)来对应a(M)每个元素分摊级别的存放,求分摊等级的过程可以设计成一个函数P(),那么可以得到a(M)中任意一个元素的分摊级别为:b(i)=P(a(i),L),其中1=i=M,L为整个数组a(M)。5图3实验程序实效图对于层分摊和层内分摊不需要特殊的算法,层分摊的处理其实和功能区分摊一样,层内分摊原理可以和功能区间分摊一样,只不过是功能区内的局部再细化分摊,可以套用以上模型,这里不再赘述。②同级分摊问题如图2中,分给1245及235功能区的两块共有建筑面积分摊的级别都是第3级分摊,分给45及14功能区的两块共有建筑面积分摊的级别都是第5级分摊。但这两组数据中都有重合部分,第一组中重合了2、5功能区,第二组中重合了4功能区,这样的话就很难用(1)中所列出的公式来计算分摊系数,这就是同级交叉分摊问题,实际情况中可能还会有重合部分更多的同级交叉分摊。图2中的第6级分摊为同级平行分摊,这种同级分摊比较简单,任何一个先分和后分都不影响计算结果。本系统利用低分摊级别向高分摊级别的分摊顺序巧妙地解决了同级分摊问题,可以解决各种同级交叉和同级平行分摊问题。(3)、向AutoCAD发送数据和提取数据VBA通过AutoCADActiveXAutomation接口向AutoCAD发送信息,并通过ActiveXAutomation接口提供对AutoCAD的编程控制。这样就把AutoCAD、ActiveXAutomation和VBA紧密连结在一起,它不仅能控制AutoCAD对象,也能向其他应用程序发送数据或从中提取数据。再者AutoCAD本身提供了全面的对象,包括AutoCAD图元、数据和命令,通过AutoCAD的对象层次模型就可以逐步访问到需要的图元对象,并向其添加扩展数据,以下为套内信息和分摊信息输入的程序实效图:6图4套内信息输入程序界面图5分摊信息输入程序界面用这种方法给房屋平面图形赋扩展数据,使得图形具有套内面积属性和公用面积属性等自己特定的属性。在所有套内和共有建筑面积属性和分摊方式等都赋值完并检查后,再访问到图形对象,并向其获取扩展数据,最后将数据按一定的格式输出到MDB数据库,使得数据从AutoCAD中脱离出来,为下一步分摊计算做好准备。(4)、面积分摊计算输出到EXCLE电子表格为了软件的安全性,这个核心模块用VisualBaisc6.0开发语言编写,该模块主要实现的功能分为分面积分摊计算和绘制表格两部分。以下为实例数据统计结果输出表格:图6分户统计结果表7图7共有建筑面积构成及分摊方式明细表限于篇幅的原因这里只能展出程序的部分界面截图和几个关键性问题的讲解,本系统的其他程序界面和技术性问题将不在这里展出和讲述。五、结束语利用以上原理及方法,作者使用AutoCAD平台和VBA、Lisp及VisualBasic6.0开发语言开发出来了一套完整的面积分摊计算系统。该系统可以对多幢房屋同时进行面积分摊计算和统计表格输出,并对实际操作中可能遇到的其他多种情况做了应对处理,例如跃层的处理,层分摊、层内分摊的处理,对已赋值的图形可以进行查询和批量修改。实际操作时方便实用、效率高,取得了较好的效果。本文探讨的房产面积分摊算法,能快速的解决多次分摊、多级分摊等面积分摊中的疑难问题,并结合AutoCAD的二次开发技术,进行了开发实践。完成的系统被应用于多个地区的房产测绘项目的质检中。同时该系统也适合用于房产测绘单位,只需要将面积分摊计算结果的格式调整到与主管单位要求的格式。参考文献:[1]GB/T17986.1-2000.房产测量规范[S]第一单元:房产测量规定.国家质量技术监督局,2000.[2]四川省房产测绘实施细则.四川省建设厅,四川省测绘局,2006.[3]张帆.AutoCADVBA二次开发教程[M].清华大学出版社.,2006.[4]刘言松,等.AutoCAD二次开发实例教程[J].化工工业出版社,2009.