AutoLISP二次开发在三旧改造房屋面积核查中的应用
2020-09-03王剑辉
黄 琴,王剑辉
(广东省地质测绘院,广东 广州 510800)
近年来,为解决土地资源日益突出的供需矛盾,提高土地的利用效率和产出效益,促进土地节约集约利用,各省市大力推进三旧改造工程。在该项工程规划、立项前,必然要进行相应区域征地拆迁的成本核算,因此,房屋数据分类面积核查与统计成为了该项工作的重中之重。目前业内采用较多的方法是利用AutoCAD软件进行逐区域面积计算,而面积统计则主要借助计算器结合Excel软件逐项手动完成,但使用该方法的工作效率和成果质量往往不能满足工程量大、房屋数量多以及房屋结构复杂的任务需求[1]。
本文以广州市花都区东莞村全面改造基础数据核查项目为例,借助AutoCAD软件的开放性平台,引入AutoLISP二次开发技术,通过调用AutoCAD空间识别、创建图元、面积计算等多种功能进行组合,可快速实现房屋数据单项面积计算、核查及分类自动统计。
1 AutoLISP简介
AutoLISP是镶嵌于AutoCAD内部的一种API人工智能语言,拥有强大的图形处理功能函数,利用其语言程序编写功能进行交互式设计,可实时对AutoCAD格式数据进行访问和修改[2]。此外,还可调用AutoCAD中任意指令,根据实际需求设置变量以达到定制系统的目的。AutoLISP包含编程以及数学计算所需的大部分数学函数,除了普通的加减乘除运算,还可以得到以弧段表示的角度正切值、反切值,正弦值、余弦值,其主要优点在于其兼容性强,对硬件条件要求低,可以使用任何文本编辑器进行编辑。
2 程序设计思路与步骤
以广州市花都区东莞村全面改造基础数据核查项目为实例,结合标准规范的技术质量要求和项目实际需求,设计了房屋分类面积计算和统计程序的开发思路和运算步骤,根据图层和目标参数提取房产平面附图中的宗地线、房屋结构线、房屋结构标注、层数标注等有效信息,自动分析、识别有效空间,生成封闭图元,并将房产面积计算规则、面积分类方法以及建筑面积分摊模型等嵌入程序,结合标注信息进行单项面积计算及分类面积统计、核查,如图1所示。
图1 程序设计思路
3 实现过程
3.1 生成封闭图元
调用AutoCAD软件空间识别和创建图元功能,使其自动识别选中对象所能构成的所有闭合面,如图2、图3所示。
图2 生成图元前
以A6为例,程序处理前A6区域为多条直线段构成的不封闭空间,经AutoLISP程序处理后,构成A6区域的多条直线段已转化为一个封闭图元[3]。
图3 生成图元后
3.2 提取有效的标注信息
房产平面附图中一般包含房屋结构、层数、边长等标注信息,内业面积计算和统计过程中一般不需要使用边长标注信息。这一步需设置AutoLISP程序参数自动过滤边长标注,仅提取房屋结构、房屋层数信息作为房产面积计算方法的依据。
根据标准规范的技术质量要求,在程序中嵌入房产面积计算规则,如:不封闭阳台建筑面积以50%计,余地不计入建基、建筑面积,低于2.2 m的房屋不计入建筑面积等。此外,还可根据项目实际需求,定制任意面积统计规则,在广州市花都区东莞村全面改造基础数据核查项目中,按照《广州市城市更新基础数据标准与调查核查工作指引》要求,需统计3.5层以下的建筑面积,可在程序中嵌入3.5层建筑面积计算和统计规则。
涉及分摊的房屋面积计算还需嵌入建筑面积分摊模型,一般建筑面积按比例分摊的计算公式如下:
δSi=K·Si
K=∑δSi/∑Si
式中,K为共有面积分摊系数;Si为各单元参加分摊的建筑面积;δSi为单元参加分摊所得的分摊面积;∑δSi为需要分摊的共有面积总和,∑Si为参加分摊的各单元建筑面积总和。
3.3 面积计算、核查及统计
调用AutoCAD面积计算以及加、减、乘、除功能,分别计算每个图元的面积,再根据提取的标注信息,结合AutoLISP程序中嵌入的房产面积计算规则和分摊模型,快速生成单项面积表及分类面积统计表,并导出为Excel表格,可与房产平面附图中各类面积值进行对比,实现面积计算质量核查的目标[4-6],如图4所示。
图4 面积计算、核查及统计
3.4 部分源代码展示
(princ " 首层有阳台不算建基、首层外梯计算建基")
(setqss(ssget'((0."*TEXT")))
strs(try-ss2table-textss)
strs(mapcar'(lambda(x)(list(list(carx))(atof(cadrx))))strs))
(setq fc(dg-jiegoufencengstrs));每层的面积
(setq
shoucengjiegou(cadr(carjgfz));;首层结构表
yongdi-mj(apply'+(mapcar'cadrshoucengjiegou));用地面积
jianji-mj(apply'+(mapcar'cadr(vl-remove-if-not'(lambda(x)(wcmatch(carx)"A,B,C,*梯*"))shoucengjiegou)));建基面积
zongjianzhu-mj(apply'+fc);总建筑面积)
(if (<(lengthfc)4)
(progn
(setq mj35(apply'+ceng-area))
)
(progn
(setq 4ceng(nth3ceng-area))
(if(>4ceng(*0.5jianji-mj))
(setq mj35(+(carceng-area)
(cadrceng-area)(caddrceng-area)(*0.5 jianji-mj)))
(setqmj35(+(car ceng-area)
(cadrceng-area)(caddrceng-area)(cadddrceng-area)))
3.5 程序加载及运行
AutoLISP程序的加载和运行主要有如下几种方式:
(1)利用AutoLISP函数进行程序加载:例如程序文件名称为“东莞村面积核查.lsp”,存放在D盘,则可在AutoCAD软件中COMMAND输入命令:load ND查:例东莞村面积核查.lsp”。
(2)对话框加载:在命令栏输入“appload”,在程序存放目录下选中程序文件,即可完成程序加载。
(3)将编写的程序内容写入AutoCAD库路径下的ACAD.LSP文件,则在启动AutoCAD软件时将自动加载程序文件。
(4)在命令栏输入程序指定命令,即可运行相应的程序指令[7-8]。
4 实例检验及结果分析
为了验证该程序的工作效率、完整性和正确性,分别选取了广州市花都区东莞村全面改造基础数据核查项目涉及的私人物业、国有物业以及集体物业中房屋结构复杂程度各异的房产平面附图作为样品(各10栋),进行各单项面积及分类统计面积比对。试验结果如表1所示。
表1 程序试验结果
试验结果证明:
(1)在房产测绘内业验算过程中,利用该程序可实现快速分类面积计算和统计功能,对于不同复杂程度的房屋,程序运行比传统人工计算的效率高出几十至几百倍,且使用程序输出的成果正确率高,质量得到有效保障[9-10〗。
(2)该程序的运行受数据量大小及房屋结构复杂程度的影响较小。
(3)程序运行的流畅度与数据预处理质量密切相关,个别房屋图元太小而使用引线会导致悬挂线问题或注记不在图元范围内等问题均会导致程序运行中断。因此运行程序前需处理悬挂线,且需确保各封闭图元内均有结构和层数标注信息。
5 结 论
本文以广州市花都区东莞村全面改造基础数据核查项目为实例,利用AutoLISP二次开发技术调用AutoCAD空间识别、创建图元、面积计算等多种功能进行组合,并通过嵌入房产面积计算规则和建筑面积分摊模型,开发的程序实现了自动、高效、精准的房屋面积计算和分类统计功能,通过实践证明使用该方法不仅可显著提高房产测绘内业验算及房屋面积数据质量核查的工作效率,且最大限度地减少了人工干预,保障了成果质量,可在质量和进度上为大规模城市基础数据调查、房产测绘相关工程提供坚实保障。
此外,该方法对硬件条件要求低,代码移植性强,使用灵活,可根据不同项目的实际需求定制计算和统计规则,可为其他测绘类相关项目面积计算、统计和质量检查工作提供参考。