前言:
眼前同学们对“vb怎么判断奇偶性”都比较重视,朋友们都需要知道一些“vb怎么判断奇偶性”的相关内容。那么小编同时在网络上网罗了一些关于“vb怎么判断奇偶性””的相关文章,希望大家能喜欢,看官们快快来了解一下吧!摘要:针对建筑总平面设计图、建筑规划放线附图与现状地形图、竣工地形图等均需要大量注记建筑楼层数的情况,提出了基于AutoCAD的建筑楼层数自动注记方法,给出了方法的流程,并通过VB.NET调用AutoCAD提供的COM接口进行开发实现。实践表明:该方法实现了建筑楼层数自动化注记,不仅大幅提高了建筑楼层数注记的效率,而且保障了楼层数注记的准确性。
关键词: AutoCAD 建筑总平面设计图 建筑楼层数 测绘学 自动化注记
1、引言
为满足建筑工程规划建设管理的需要,建筑总平面设计图、建筑规划放线附图与现状地形图、竣工地形图等图件需要注记建筑物±0层标高、建筑高度以及楼层数等信息,其中楼层数的注记工作量最大也最复杂,尤其是洋房、大型商业体、商住办公混合型建筑的楼层数注记。目前通用的做法是通过人工叠加计算,结合实地测量,来获得注记处的楼层数。这样的做法会面临两个方面的问题,一是工作量特别大,二是极易出错,多算少算的情况时有发生,极大地影响了工程质量。为此,本文提出了基于AutoCAD的建筑自动化楼层数注记方法,该方法无须人工计算,按照方法定义的规则进行建筑平面图绘制,在注记楼层数的地方点击鼠标,即可自动进行楼层数的注记。
2、方法基本原理和流程
本方法的基本原理是自动判断楼层数注记点与建筑分层图形对象的内外关系,选取注记点位于其内的分层建筑图形对象,自动获取其图层信息,解析得到楼层数信息,自动累加计算最终得到注记点的楼层数并自动注记。
方法实现的流程如图1所示。
3、方法实现
3.1规则定义
(1)图层规则化命名
AutoCAD绘图软件是通过图层来组织图形对象,建筑物的分层信息在本方法中通过应用图层来进行存储识别。建筑物不同层的图形对象存储在不同的图层,并对图层进行规则化命名。如地下楼层命名为CQKC建筑外墙_地下1F、吊层命名为CQKC建筑外墙_吊1F,地上楼层命名为CQKC建筑外墙1F,标准楼层命名为CQKC建筑外墙2-5F,奇数楼层命名为CQKC建筑外墙_吊1-5奇数F,偶数楼层命名为CQKC建筑外墙2-8偶数F等。如图2所示。
图1建筑楼层数自动注记方法流程图
(2)图形对象绘制规则
建筑物的分层图形对象采用多段线进行绘制,每一个图形对象必须闭合(注意:图形对象可以回头,但不能自交)。
图2图层规则化命名
通过以上规则的定义,即为自动化楼层数注记做好了数据准备。
3.2关键流程
(1)拾取注记点
以AutoCAD2008为例,引用AutoCADCOM提供的AutoCAD2008TypeLibrary和AutoCAD/ObjectDBXCommon17.0TypeLibrary两个组件库,调用其Thisdrawing.Utility.GetPoint()函数获取注记点的坐标[1]。
(2)构建交叉选择区
一个项目的建筑图形对象有很多,为了提高方法的计算效率,需要建立有效图形计算范围。以注记点为中心,向左右分别延伸500m(本参数根据项目整体范围大小进行设置,一般为整个项目外接矩形范围长边的0.7倍),上下分别延伸0.05m,形成矩形选择区。调用AcSelect.Select函数构建交叉选择集,与矩形选择区存在交叉的分层图形对象将被选出参与计算。如图3所示。
图3矩形叉选建筑分层图形对象
(3)遍历计算
对步骤2选取的建筑分层图形对象进行遍历计算,判断注记点是否在其内部。如果是,则被计算的分层图形对象的楼层信息纳入注记点的楼层数进行累加计算。同时,识别其图层信息(或者读取设置的楼层扩展属性信息),对楼层数进行判断和计算。如果是地下层,则楼层数纳入地下楼层数进行累加计算DXFloorNum=DXFloorNum+ThisOneFloorNum;如果是吊层,其楼层数纳入吊层楼层数进行累加计算DCFloorNum=DCFloorNum+ThisOneFloorNum;如果是地上层,其楼层数纳入地上楼层数进行累加计算DSFloorNum=DSFloorNum+ThisOneFloorNum。(ThisOneFloorNum为分层图形对象解算出来的楼层数,如CQKC建筑外墙2-5F,即为4)
上述方法的关键是判断注记点是否在建筑分层图形对象的内部,其实现办法为:以注记点为中心,虚拟一条水平构造线,判断水平构造线左右两边与分层图形对象的交点个数的奇偶性与有无关系,即可确定注记点是否在分层图形对象的内部。如图4所示。
图4判断注记点是否在图形对象内部
(4)楼层数注记
通过步骤3遍历计算完成以后,应用公式FloorNum=DSFloorNum+”F/吊”+DCFloorNum+”F-/”+DXFloorNum+”F”进行组合,即可得到注记点处的楼层数,调用Thisdrawing.ModelSpace.AddText即可完成楼层数的自动注记[2]。
3.3程序实现
通过应用AutoCAD提供的COM接口,利用VB.NET语言进行了开发实现。在MicrosoftVisualStudio中建立VB.NET类库解决方案[3,4],命名为SurveyNet,编译完成后生成类库可执行程序SurveyNet.dll,在AutoCAD中输入NetLoad命令,加载SurveyNet.dll类库程序,点击程序设计的楼层注记菜单按钮,在绘图区拾取注记点,即可完成楼层数的自动化注记。
4、方法应用
图5展示了本方法在规划放线附图制作过程中的楼层自动注记实际应用。并与常规人工注记方法进行了对比,4栋房子的楼层数注记,在保障正确性的前提下,常规方法需要10min,本程序则仅用了48s。
图5规划放线附图建筑楼层数自动化注记
5、结论
本文结合建筑设计和规划测绘工程实际,研究实现了自动化的建筑楼层数注记方法,为建筑总平面设计图、建筑规划放线附图与现状地形图、竣工地形图楼层注记提供了自动化解决方案。实践表明,该方法注记建筑楼层数效率高、准确,可以应用到基于天正的建筑总平面设计图、基于规划监督测量绘图系统的规划放线附图[5]、基于南方CASS软件绘制的现状地形图与竣工地形图等的建筑楼层数注记工作中。若要应用到清华山维EPS等非AutoCAD类绘图软件中,需基于对应软件系统开发实现。
标签: #vb怎么判断奇偶性