CN114840909B - 一种镂空石材幕墙的bim自动建模方法 - Google Patents
一种镂空石材幕墙的bim自动建模方法 Download PDFInfo
- Publication number
- CN114840909B CN114840909B CN202210777854.5A CN202210777854A CN114840909B CN 114840909 B CN114840909 B CN 114840909B CN 202210777854 A CN202210777854 A CN 202210777854A CN 114840909 B CN114840909 B CN 114840909B
- Authority
- CN
- China
- Prior art keywords
- curtain wall
- panel
- curved surface
- wall surface
- typesetting
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/10—Geometric CAD
- G06F30/13—Architectural design, e.g. computer-aided architectural design [CAAD] related to design of buildings, bridges, landscapes, production plants or roads
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Geometry (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Structural Engineering (AREA)
- Computational Mathematics (AREA)
- Civil Engineering (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Architecture (AREA)
- Load-Bearing And Curtain Walls (AREA)
Abstract
本申请保护一种镂空石材幕墙的BIM自动建模方法,包括:整理、编辑镂空石材幕墙的设计数据,设计数据包括幕墙面边界、镂空图案、嵌板排版基准标记;将设计数据导入Revit平台,使用Dynamo工具对幕墙面边界、镂空图案、嵌板排版基准标记进行分离;基于分离后的幕墙面边界,创建幕墙面曲面,基于分离后的嵌板排版基准标记,创建嵌板整体排版曲面,幕墙面曲面和嵌板整体排版曲面进行交集运算,形成幕墙面基本嵌板单元曲面;基于分离后的镂空图案,创建镂空柱体模型;将幕墙面基本嵌板单元曲面和镂空柱体模型进行交集运算,形成镂空幕墙面基本嵌板单元曲面;将镂空幕墙面基本嵌板单元曲面拉伸转化,完成镂空石材幕墙嵌板的建模。
Description
技术领域
本发明涉及石材幕墙设计领域,具体涉及一种镂空石材幕墙的BIM自动建模方法。
背景技术
在传统的石材幕墙BIM建模工作中,通常是采用在建筑幕墙平面上,对比设计图纸的尺寸数据,通过绘制大量的参照线、参照平面,初步确定幕墙及幕墙嵌板的位置,但由于无法将CAD图纸创建在Revit平台的斜向平面中进行建模参考,导致无法准确绘制嵌板中的镂空图案,为幕墙嵌板的建模工作制造了很大的困扰;其次,针对幕墙嵌板进行编码的工作量巨大,且极容易混淆,出现重复编码的情况。所以,采用传统的建模作业方法,很难快速、准确形成高质量镂空石材幕墙信息模型。
发明内容
因此,本发明要解决的技术问题在于克服现有技术中的上述技术缺陷,从而提供一种镂空石材幕墙的BIM自动建模方法,具体实现方案如下。
一种镂空石材幕墙的BIM自动建模方法,包括:
整理、编辑镂空石材幕墙的设计数据,设计数据包括幕墙面边界、镂空图案、嵌板排版基准标记;
将设计数据导入Revit平台,使用Dynamo工具对幕墙面边界、镂空图案、嵌板排版基准标记进行分离;
基于分离后的幕墙面边界,创建幕墙面曲面,基于分离后的嵌板排版基准标记,创建嵌板整体排版曲面,幕墙面曲面和嵌板整体排版曲面进行交集运算,形成幕墙面基本嵌板单元曲面;
基于分离后的镂空图案,创建镂空柱体模型;
将幕墙面基本嵌板单元曲面和镂空柱体模型进行交集运算,形成镂空幕墙面基本嵌板单元曲面;
将镂空幕墙面基本嵌板单元曲面拉伸转化,完成镂空石材幕墙嵌板的建模。
整理、编辑镂空石材幕墙的设计数据时所述设计数据分层独立存储,并进行元素分解,闭合多段线为独立元素。
所述的将设计数据导入Revit平台,使用Dynamo工具对幕墙面边界、镂空图案、嵌板排版基准标记进行分离,包括:
使用Dynamo工具拾取设计数据,对幕墙面边界、镂空图案、嵌板排版基准标记输出子列表;
对子列表进行循环遍历,通过len()函数判断子列表的成员数量;
当数量为1时,通过PolyCurve.Curves()函数判断复合曲线中Curve曲线的数量:
当Curve曲线的数量与嵌板排版基准标记的线元素数量一致时,判定该子列表对应嵌板排版基准标记,获取嵌板排版基准标记对应的标记点,作为01号列表输出;
当Curve曲线的数量与幕墙面边界的线元素数量一致时,则判定该子列表对应幕墙面边界,作为02号列表输出;
当数量不为1时,通过try()函数获取NumberOfCurves属性:
当不存在该属性时,判断为Circle,作为03号列表输出;
当存在属性时,判断为PolyCurve,作为04号列表输出。
所述的基于分离后的幕墙面边界,创建幕墙面曲面,包括:
将02号列表输入Surface.ByPatch()函数,输出边界框,完成幕墙面曲面的创建。
所述的基于分离后的嵌板排版基准标记,创建嵌板整体排版曲面,包括:
将02号列表输入PolyCurve.Curves()函数,将幕墙面边界转化为嵌板创建区间;
基于01号列表的标记点和嵌板创建区间,并根据预设基础数据,创建嵌板创建区间内能够覆盖的所有嵌板矩形框;
将所有嵌板矩形框输入Surface.ByPatch()函数,输出矩形框边界,完成嵌板整体排版曲面的创建。
所述的幕墙面曲面和嵌板整体排版曲面进行交集运算,形成幕墙面基本嵌板单元曲面,包括:
获取幕墙面曲面和嵌板整体排版曲面的几何交集,将几何交集作为幕墙面基本嵌板单元曲面。
所述的基于分离后的镂空图案,创建镂空柱体模型,包括:
基于03号列表,将Circle的圆曲线转化为圆面,将圆面拉伸转化柱体,创建圆形柱体;
基于04号列表,将PolyCurve的椭圆曲线转化为曲面,将曲面拉伸转化柱体,创建椭圆形柱体;
整合圆形柱体和椭圆形柱体,形成镂空柱体模型;
所述的将幕墙面基本嵌板单元曲面和镂空柱体模型进行交集运算,形成镂空幕墙面基本嵌板单元曲面,包括:
遍历幕墙面基本嵌板单元曲面的每一个基板嵌板单元曲面,将每一个基板嵌板单元曲面与镂空柱体模型进行交集运算,当存在交集时,在基本嵌板单元曲面上减去镂空柱体模型的整体形状,当不存在交集时不做处理,形成镂空幕墙面基本嵌板单元曲面。
还包括:
对应预设的幕墙表面模型,对镂空石材幕墙嵌板进行空间定位和转换,得到转换后的镂空石材幕墙嵌板实体;
为镂空石材幕墙嵌板实体编码命名,并创建镂空石材幕墙嵌板实体的族实例。
还包括:
将镂空石材幕墙嵌板实体转化为SAT格式文件,调用Revit平台API,再由SAT格式文件转化为Revit的rfa文件,嵌板编码进行族命名。
本发明技术方案,具有如下优点:
1、本发明基于Revit平台,导入镂空石材幕墙设计数据,通过Dynamo工具提取设计数据,并分离出幕墙面边界、镂空图案、嵌板排版基准标记,通过分析,在幕墙面边界范围内,参考嵌板排版基准标记进行幕墙嵌板的排布和图形创建,同时,根据排布方案编制幕墙嵌板编码,结合镂空图案,对幕墙嵌板图形进行镂空设计,调用Revit平台接口,将幕墙嵌板图形转化为Revit族,以幕墙嵌板编码作为族的名称,同时对幕墙嵌板进行原材量、尺寸、面积等参数的赋值,完成镂空石材幕墙的自动建模及编码。解决了传统镂空石材幕墙建模及编码中,工作量巨大、耗时长、空间位置不准确、斜面及曲面幕墙难定位、嵌板编码易混淆等问题。
2、相比较传统的石材幕墙BIM建模工作,Dynamo工具提取CAD图纸线元素,通过程序自动分析嵌板的几何数据,准确创建包含镂空图案在内的幕墙嵌板模型,并且基于设计图纸、幕墙表面模型的幕墙面完成空间定位,设计编码逻辑,结合石材幕墙嵌板的排布规则,制定相应编码,将其作为构件名称自动创建幕墙嵌板,本发明采用的方法,创建镂空石材幕墙耗时短,准确率高,自动化程度高,适用性强。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明镂空石材幕墙的结构示意图;
图2为本发明其中一面幕墙的结构示意图;
图3为本发明嵌板排版基准标记的示意图;
图4为本发明嵌板排版基准的标记点的示意图;
图5为本发明幕墙嵌板在X、Y轴方向的创建区间的示意图;
图6为本发明创建区间内所能容纳的幕墙嵌板行数的示意图;
图7为本发明幕墙嵌板隔排错缝设置的示意图;
图8为本发明嵌板整体排版曲面的示意图;
图9为本发明幕墙嵌板在幕墙面边界内的范围的示意图;
图10为本发明镂空柱体模型的示意图;
图11为本发明镂空幕墙面基本嵌板单元曲面的示意图;
图12为本发明镂空石材幕墙嵌板的示意图;
图13为本发明空间转换后的镂空石材幕墙嵌板的示意图;
图14为本发明实施例二的流程框图。
附图标记说明:
100.建筑外幕墙面;101.A幕墙面设计图;102.B幕墙面设计图;
201.嵌板排版基准标记; 202.镂空图案; 203.幕墙面边界;
301.A标记线; 302.B标记线;
501.幕墙面边界; 502.创建区间。
具体实施方式
下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
实施例1
一种镂空石材幕墙的BIM自动建模方法,包括:
整理、编辑镂空石材幕墙的设计数据,设计数据包括幕墙面边界、镂空图案、嵌板排版基准标记;
将设计数据导入Revit平台,使用Dynamo工具对幕墙面边界、镂空图案、嵌板排版基准标记进行分离;
基于分离后的幕墙面边界,创建幕墙面曲面,基于分离后的嵌板排版基准标记,创建嵌板整体排版曲面,幕墙面曲面和嵌板整体排版曲面进行交集运算,形成幕墙面基本嵌板单元曲面;
基于分离后的镂空图案,创建镂空柱体模型;
将幕墙面基本嵌板单元曲面和镂空柱体模型进行交集运算,形成镂空幕墙面基本嵌板单元曲面;
将镂空幕墙面基本嵌板单元曲面拉伸转化,完成镂空石材幕墙嵌板的建模。
整理、编辑镂空石材幕墙的设计数据时所述设计数据分层独立存储,并进行元素分解,闭合多段线为独立元素。
进一步的,设计数据还包括嵌板预设基础数据,包括嵌板长、高、间隙数值。
进一步的,将设计数据导入Revit平台,使用Dynamo工具对幕墙面边界、镂空图案、嵌板排版基准标记进行分离,包括:
使用Dynamo工具拾取设计数据,对幕墙面边界、镂空图案、嵌板排版基准标记输出子列表;
对子列表进行循环遍历,通过len()函数判断子列表的成员数量;
当数量为1时,通过PolyCurve.Curves()函数判断复合曲线中Curve曲线的数量:
当数量与嵌板排版基准标记的线元素数量一致时,判定该子列表对应嵌板排版基准标记,获取嵌板排版基准标记对应的标记点,作为01号列表输出;
当数量与幕墙面边界的线元素数量一致时,则判定该子列表对应幕墙面边界,作为02号列表输出;
当数量不为1时,通过try()函数获取NumberOfCurves属性:
当不存在该属性时,判断为Circle,作为03号列表输出;
当存在属性时,判断为PolyCurve,作为04号列表输出。
进一步的,所述的基于分离后的幕墙面边界,创建幕墙面曲面,包括:
将02号列表输入Surface.ByPatch()函数,输出边界框,完成幕墙面曲面的创建。
进一步的,所述的基于分离后的嵌板排版基准标记,创建嵌板整体排版曲面,包括:
将02号列表输入PolyCurve.Curves()函数,将幕墙面边界转化为嵌板创建区间;
基于01号列表的标记点和嵌板创建区间,并根据预设基础数据,创建嵌板创建区间内能够覆盖的所有嵌板矩形框;
将所有嵌板矩形框输入Surface.ByPatch()函数,输出矩形框边界,完成嵌板整体排版曲面的创建。
进一步的,所述的幕墙面曲面和嵌板整体排版曲面进行交集运算,形成幕墙面基本嵌板单元曲面,包括:
获取幕墙面曲面和嵌板整体排版曲面的几何交集,将几何交集作为幕墙面基本嵌板单元曲面。
进一步的,所述的基于分离后的镂空图案,创建镂空柱体模型,包括:
基于03号列表,将Circle的圆曲线转化为圆面,将圆面拉伸转化柱体,创建圆形柱体;
基于04号列表,将PolyCurve的椭圆曲线转化为曲面,将曲面拉伸转化柱体,创建椭圆形柱体;
整合圆形柱体和椭圆形柱体,形成镂空柱体模型。
进一步的,所述的将幕墙面基本嵌板单元曲面和镂空柱体模型进行交集运算,形成镂空幕墙面基本嵌板单元曲面,包括:
遍历幕墙面基本嵌板单元曲面的每一个基板嵌板单元曲面,将每一个基板嵌板单元曲面与镂空柱体模型进行交集运算,当存在交集时,在基本嵌板单元曲面上减去镂空柱体模型的整体形状,当不存在交集时不做处理,形成镂空幕墙面基本嵌板单元曲面。
进一步的,还包括:
对应预设的幕墙表面模型,对镂空石材幕墙嵌板进行空间定位和转换,得到转换后的镂空石材幕墙嵌板实体;
为镂空石材幕墙嵌板实体编码命名,并创建镂空石材幕墙嵌板实体的族实例。
实施例2
为了更加清楚的描述本发明技术方案,本实施例中对镂空石材幕墙的BIM自动建模方法进行具体实践,包括以下步骤:
S1、整理、编辑设计数据;
以镂空石材幕墙的CAD设计图作为设计数据,整理、编辑镂空石材幕墙的CAD设计图,将每一面幕墙的CAD设计图进行分离存储,每一面幕墙的图纸分别作为单独的CAD文件,如图1所示。在镂空石材幕墙的CAD设计图中,当存在组、块等对象,需要进行分解,保证线元素以直线段、曲线段、复合曲线的形式存在,闭合多段线为独立元素。并且,保留幕墙面边界、镂空图案、嵌板排版基准标记,且三部分分别基于不同的CAD图层存储,如图2所示。其中,嵌板排版基准标记应当为其中一块幕墙嵌板的边角点,且支持推算出幕墙嵌板的排布方向,采用两条相交直线段标识,分别为A标记线、B标记线,将其中A标记线与幕墙嵌板的横排方向一致,如图3所示。
S2、Dynamo提取设计数据:
基于Revit平台立面高度为0的标高平面,旋转调整其中A标记线至水平状态,将整理、编辑后的镂空石材幕墙的CAD设计图导入Revit平台。使用Dynamo工具新建工作空间,创建“Select Model Element”节点拾取导入的CAD设计图,设计Python Script节点,读取CAD文件的所有Geometry数据列表,遍历所有列表成员,对列表成员使用“GetInstanceGeometry()”方法获取到列表成员的几何实例对象,如果列表成员几何实例对象的类型为“Autodesk.Revit.DB.PolyLine”,则需要提取复合线的点,重新创建为Dynamo可识别的PolyCurve,其次,判断列表成员的图层,并根据图层进行分列表存储,Python Script节点输出的列表包含3个子列表,具体对应幕墙面边界、镂空图案和嵌板排版基准标记。
S3、分离幕墙面边界、镂空图案和嵌板排版基准标记:
针对上述Python Script节点输出的3个子列表,需要进行判断,将子列表具体对应上幕墙面边界、镂空图案和嵌板排版基准标记。
再次创建Python Script节点,输入端连接S2步骤中的Python Script节点输出端,设计节点内部Python程序,建立循环遍历程序,通过“len()”函数,判断子列表的成员数量。
当数量为1时,进一步通过“PolyCurve.Curves()”方法判断复合曲线中Curve曲线的数量,当数量与嵌板排版基准标记的线元素数量一致时,即等于2时,则判定该子列表对应嵌板排版基准标记,此时,使用“Geometry.Intersect”方法,获取2条标记线的交点,添加到该Python Script节点的输出列表,作为01号列表;当数量与幕墙面边界的线元素数量一致时,则判定该子列表对应幕墙面边界,将子列表的唯一一项PolyCurve添加到该PythonScript节点的输出列表,作为02号列表。
当数量不为1时,则表示该子列表对应镂空图案,子列表中的成员由PolyCurve、Circle组成,为后续几何图形创建提供便利,需要将两种不同类型加以区分,在try函数中,尝试获取成员的“NumberOfCurves”属性,当存在该属性是,则为PolyCurve(此处为椭圆),当不存在该属性时,则为Circle(此处为圆)。将所有Circle添加至该Python Script节点的输出列表,作为03号列表。将所有PolyCurve添加至该Python Script节点的输出列表,作为04号列表。
将上述01至04号列表组合输出,完成幕墙面边界、镂空图案和嵌板排版基准标记的分离。建立“Code Block”代码块节点,分别使用“Datas[0]”、“Datas[1]”、“Datas[2]”、“Datas[3]”,将上述01至04号列表进行引出,便于后续程序计算引用。
S4、创建幕墙面基本嵌板单元曲面:
幕墙面曲面,基于分离后的嵌板排版基准标记,创建嵌板整体排版曲面,幕墙面曲面和嵌板整体排版曲面进行交集运算,形成幕墙面基本嵌板单元曲面。
获取嵌板预设基础数据:在Dynamo环境下创建“Code Block”代码块节点,创建一维列表,列表由3个数值成员组成,分别代表幕墙嵌板的长、高、和间隙尺寸,数值单位与当前Revit项目单位一致。
嵌板整体排版曲面计算:创建Python Script节点,设置节点输入端为3个,“IN[0]”输入端连接嵌板预设基础数据,“IN[1]”输入端连接S3步骤输出的01号列表,即嵌板排版基准的标记点,记为P_mark,此处作为设计图中幕墙嵌板的右下角点,如图4所示,取P_mark点的X坐标为Xmark,取标记点的Y坐标为Ymark,“IN[2]”输入端连接S3步骤输出的02号列表。
设计Python Script节点内部程序,主要包含内容:针对上述“IN[2]”端口引入的幕墙面边界对象,采用“PolyCurve.Curves()”方法分解为多条直线段,并且读取所有直线段的起点的X、Y坐标值,取其中X、Y的最小最大值,分别记为Xmin、Xmax、Ymin、Ymax,以此作为幕墙嵌板在X、Y轴方向的创建区间,如图5所示。根据P_mark坐标值,并结合幕墙嵌板长、高、间隙数值,分别记为RecL、RecH、RecS,向上计算包含本行的允许创建排数,记为Ynuma:
Ynuma = math.ceil((Ymax - Ymark)/(RecH + RecS))
向下计算允许创建排数,记为Ynumb :
Ynumb = math.ceil((Ymark - Ymin)/(RecH + RecS))
所以在创建区间范围内需要创建的行数为:Ynuma + Ynumb。
间距及数量关系如图6所示。
当幕墙嵌板隔排错缝设置时,需要计算错位排基准标记点,记为P_mark2,该点X坐标值Xmark2为Xmark-(RecL+RecS)/2,Y坐标值Ymark2则为Ymark-(RecH+RecS),对应关系如图7所示。
根据P_mark、P_mark2两个点,分别计算两类错位排相对于该点左右侧的列数。其中,P_mark标记点所处行中,向P_mark标记点左侧计算包含本列的允许创建列数,记为Xnuma:
Xnuma = math.ceil((Xmark - Xmin)/(RecL + RecS))
向P_mark标记点右侧计算允许创建列数,记为Xnumb:
Xnumb = math.ceil((Xmax - Xmark)/(RecL + RecS))
所以在创建区间范围内,P_mark所在行及错位行,需要创建的列数为:Xnuma +Xnumb。
P_mark2标记点所处行中,向P_mark2标记点左侧计算包含本列的允许创建列数,记为Xnuma2:
Xnuma2 = math.ceil((Xmark2 - Xmin)/(RecL + RecS))
向P_mark2标记点右侧计算允许创建列数,记为Xnumb2:
Xnumb2 = math.ceil((Xmax - Xmark2)/(RecL + RecS))
所以在创建区间范围内,P_mark2所在行及错位行,需要创建的列数为:Xnuma2 +Xnumb2。
自上而下,从左向右,根据每一块幕墙嵌板右下角标记点创建矩形框,创建顺序如图8所示。针对所有的矩形框,采用“Surface.ByPatch()”方法,将矩形框作为边界创建曲面,记为嵌板整体排版曲面。
幕墙面曲面的计算:将“IN[2]”端口引入的幕墙面边界对象,同样采用“Surface.ByPatch()”方法,将边界框作为边界,创建曲面,记为幕墙面曲面。
交集运算:通过“Geometry.Intersect()”方法,获取嵌板整体排版曲面与幕墙面曲面的几何交集,当存在交集时,将该交集作为当前幕墙嵌板在幕墙面边界内的范围,添加该交集至本“Python Script”节点的输出列表,预览效果如图9所示。
S5、镂空石材幕墙嵌板的获取:
石材幕墙嵌板的镂空部位形状包括椭圆形简化、椭圆形柱体创建、圆形柱体创建、镂空石材幕墙嵌板创建。
椭圆形简化:为优化Dynamo环境图形引擎计算效率,减轻软件计算负荷,由CAD文件中读取到的椭圆形PolyCurve中包含的Curve曲线的数量,通常大于150,容易造成创建的三维形状曲面过多,因此,可以通过设计,在不降低镂空图形准确度的前提下,降低Curve曲线的数量。
椭圆形柱体创建:创建“Surface.ByPatch”节点,“closedCurve”输入端连接上述“Python Script”节点输出端,将椭圆曲线转化为曲面。创建“Code Block”代码块节点,创建1项数值、1项布尔值,其次创建“Surface.Thicken”节点,“surface”输入端连接上述“Surface.ByPatch”节点输出端,“thickness”输入端连接上述“Code Block”节点的数值,“both_sides”输入端连接上述“Code Block”节点的布尔值,可以将曲面进一步转化为拉伸的柱体,当布尔值为“true”时,椭圆柱体向两侧均进行拉伸,当布尔值为“false”时,椭圆柱体向一侧均进行拉伸。
圆形柱体创建:创建“Surface.ByPatch”节点,“closedCurve”输入端连接S3步骤输出的03号列表,将圆转化为面。创建“Code Block”代码块节点,创建1项数值、1项布尔值,其次创建“Surface.Thicken”节点,“surface”输入端连接上述“Surface.ByPatch”节点输出端,“thickness”输入端连接上述“Code Block”节点的数值,“both_sides”输入端连接上述“Code Block”节点的布尔值,可以将面进一步转化为拉伸的柱体,当布尔值为“true”时,圆柱体向两侧均进行拉伸,当布尔值为“false”时,椭圆柱体向一侧均进行拉伸。
镂空柱体模型创建:创建“List.Join”节点,设置输入端口数量为2,分别连接上述“椭圆形柱体创建”输出端、“圆形柱体创建”输出端,再使用“Solid.ByUnion”节点,将所有镂空柱体合并为1个Solid,实现将当前幕墙面所有镂空形状整合为一个整体。镂空柱体模型预览如图10所示。
镂空幕墙面基本嵌板单元曲面计算:创建“Surface.SubtractFrom”节点,其中“Surface”输入端连接S4步骤“Python Script”节点输出端,“trimmingEntity”输入端连接上述“Solid.ByUnion”节点输出端,该节点的应用目的为,针对每一个基本嵌板单元曲面,当基本嵌板单元曲面与镂空柱体模型合并形状存在交集时,为基本嵌板单元曲面减去镂空柱体的整体形状,当基本嵌板单元曲面与镂空柱体合并形状不存在交集时,维持基本嵌板单元曲面原样,形成镂空幕墙面基本嵌板单元曲面,如图11所示。
镂空石材幕墙嵌板创建:创建“Code Block”代码块节点,创建1项数值、1项布尔值,创建“Surface.Thicken”节点,“surface”输入端连接上述“Surface.SubtractFrom”节点输出端,“thickness”输入端连接上述“Code Block”节点的数值,“both_sides”输入端连接上述“Code Block”节点的布尔值。实现将镂空幕墙面基本嵌板单元曲面进一步转化为拉伸的实体,完成镂空石材幕墙嵌板的创建,镂空石材幕墙嵌板预览如图12所示。
S6、镂空石材幕墙嵌板进行空间定位和转换:
幕墙表面模型创建:采用Revit体量、族、内建模型等方式创建预设的幕墙表面模型,或采用导入的方式,将其他Revit支持的预设幕墙表面模型格式文件导入到Revit项目中,调整至项目的准确位置。
镂空石材幕墙嵌板的空间定位:镂空石材幕墙嵌板空间定位的依据是CAD设计图中幕墙面边界、幕墙表面模型中墙面的边界,并获取上述两个边界组成线的列表,通过直线段的特征及线的长度,进行匹配,选择同一位置处,采用相同的方法创建空间坐标系,基于两项空间坐标系为基准,对镂空石材幕墙嵌板模型进行空间转换。
其中,针对CAD设计图中幕墙面边界,通过创建“PolyCurve.Curves”节点,“polyCurve”输入端连接S3步骤中的02号列表(幕墙面边界),实现将PolyCurve拆解为Curve曲线列表,记为幕墙面边界线列表,选择列表中的1号Curve成员记为1号Curve,取1号Curve的起点作为原点记为原点1,以1号Curve起点指向终点创建向量,记为向量1,同样,选择列表中的尾号Curve成员记为-1号Curve,以终点指向起点创建向量,记为向量2。采用“CoordinateSystem.ByOriginVectors(原点1,向量1,向量2)”方法,以原点1作为“origin”参数,以向量1作为“xAxis”参数,以向量2作为“yAxis”参数,创建空间坐标系,记为空间坐标系1,其中空间坐标系1的原点与原点1一致,空间坐标系1的X轴与向量1的单位向量一致,空间坐标系1的Y轴与向量2大致保持同方向,空间坐标系1的Z轴垂直XY平面。
其中,针对幕墙表面模型中墙面的边界,采用“Select Face”节点,拾取幕墙表面模型中的墙面,要求与当前导入的镂空石材幕墙CAD设计图的幕墙面一致,创建“Surface.PerimeterCurves”节点,读取该幕墙表面模型曲面的所有边界曲线,记为幕墙表面模型墙面曲线边界列表。逐一取列表的Curve成员与上述1号Curve比较Length长度属性,当两者相等时,记当前Curve为1’号Curve,取当前Curve成员的前一项Curve成员,与上述-1号Curve比较Length长度属性,如果一致,则前一项Curve成员记为-1’号Curve,此时,取1’号Curve的起点作为原点,记为原点1’,以1’号Curve起点指向终点创建向量,记为向量1’,前一项Curve成员记为-1号Curve,以终点指向起点创建向量,记为向量2’。
如果当前Curve成员的前一项Curve成员,与上述-1号Curve的Length长度属性不一致,则取当前Curve成员的后一项Curve成员,与上述-1号Curve比较Length长度属性,如果一致,则后一项Curve成员记为-1’号Curve,此时,取1’号Curve的终点作为原点,记为原点1’,以1’号Curve终点指向起点创建向量,记为向量1’,后一项Curve成员,记为-1号Curve,以起点指向终点创建向量,记为向量2’。
如果后一项Curve成员与上述-1号Curve的Length长度也不一致,则表示两者匹配不成功。
当匹配成功时,采用“CoordinateSystem.ByOriginVectors(原点1’,向量1’,向量2’)”方法,以原点1’作为“origin”参数,以向量1’作为“xAxis”参数,以向量2’作为“yAxis”参数,创建空间坐标系记为空间坐标系2,其中空间坐标系2的原点与原点1’一致,空间坐标系2的X轴与向量1’的单位向量一致,空间坐标系2的Y轴与向量2’大致保持同方向。
创建“Geometry.Transform”节点,基于两项空间坐标系执行几何形状的空间转换,“geometry”输入端连接S5步骤输出的镂空石材幕墙嵌板,“fromCoordinateSystem”输入端连接上述空间坐标系1,“contextCoordinateSystem”输入端连接上述空间坐标系2,完成镂空石材幕墙嵌板的空间转换,转换后的镂空石材幕墙嵌板如图13所示。
S7、镂空石材幕墙嵌板编码及镂空石材幕墙嵌板族创建:
镂空石材幕墙嵌板采用读取上述S6步骤输出的转换后的镂空石材幕墙嵌板列表数据,该列表为二维列表,创建“Python Script”节点,通过循环遍历程序为所有镂空石材幕墙嵌板匹配编码命名。其次,创建“File Path”节点,选择Revit族样板,创建“CodeBlock”代码块节点,创建编码前缀字符串,使用“Springs.FamilyInstance.ByGeometry”节点,经过“Geometry.ExportToSAT()”方法,将镂空石材幕墙嵌板转化为SAT格式文件,调用Revit平台API,再由SAT格式文件转化为Revit的rfa族文件,rfa族文件名称采用嵌板编码进行命名,同时,读取当前项目环境中镂空石材幕墙嵌板的空间位置,使用DocumentManager.Instance.CurrentDBDocument.Create.NewFamilyInstance()方法创建族实例,完成族实例的创建。整个流程如图14所示。
显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明创造的保护范围之中。
Claims (4)
1.一种镂空石材幕墙的BIM自动建模方法,其特征在于,包括:
整理、编辑镂空石材幕墙的设计数据,设计数据包括幕墙面边界、镂空图案、嵌板排版基准标记;
将设计数据导入Revit平台,使用Dynamo工具对幕墙面边界、镂空图案、嵌板排版基准标记进行分离;
基于分离后的幕墙面边界,创建幕墙面曲面,基于分离后的嵌板排版基准标记,创建嵌板整体排版曲面,幕墙面曲面和嵌板整体排版曲面进行交集运算,形成幕墙面基本嵌板单元曲面;
基于分离后的镂空图案,创建镂空柱体模型;
将幕墙面基本嵌板单元曲面和镂空柱体模型进行交集运算,形成镂空幕墙面基本嵌板单元曲面;
将镂空幕墙面基本嵌板单元曲面拉伸转化,完成镂空石材幕墙嵌板的建模;
所述的将设计数据导入Revit平台,使用Dynamo工具对幕墙面边界、镂空图案、嵌板排版基准标记进行分离,包括:
使用Dynamo工具拾取设计数据,对幕墙面边界、镂空图案、嵌板排版基准标记输出子列表;
对子列表进行循环遍历,通过len()函数判断子列表的成员数量;
当数量为1时,通过PolyCurve.Curves()函数判断复合曲线中Curve曲线的数量:
当Curve曲线的数量与嵌板排版基准标记的线元素数量一致时,判定该子列表对应嵌板排版基准标记,获取嵌板排版基准标记对应的标记点,作为01号列表输出;
当Curve曲线的数量与幕墙面边界的线元素数量一致时,则判定该子列表对应幕墙面边界,作为02号列表输出;
当数量不为1时,通过try()函数获取NumberOfCurves属性:
当不存在该属性时,判断为Circle,作为03号列表输出;
当存在属性时,判断为PolyCurve,作为04号列表输出;
所述的基于分离后的幕墙面边界,创建幕墙面曲面,包括:
将02号列表输入Surface.ByPatch()函数,输出边界框,完成幕墙面曲面的创建;
所述的基于分离后的嵌板排版基准标记,创建嵌板整体排版曲面,包括:
将02号列表输入PolyCurve.Curves()函数,将幕墙面边界转化为嵌板创建区间;
基于01号列表的标记点和嵌板创建区间,并根据预设基础数据,创建嵌板创建区间内能够覆盖的所有嵌板矩形框;
将所有嵌板矩形框输入Surface.ByPatch()函数,输出矩形框边界,完成嵌板整体排版曲面的创建;
所述的幕墙面曲面和嵌板整体排版曲面进行交集运算,形成幕墙面基本嵌板单元曲面,包括:
获取幕墙面曲面和嵌板整体排版曲面的几何交集,将几何交集作为幕墙面基本嵌板单元曲面;
所述的基于分离后的镂空图案,创建镂空柱体模型,包括:
基于03号列表,将Circle的圆曲线转化为圆面,将圆面拉伸转化柱体,创建圆形柱体;
基于04号列表,将PolyCurve的椭圆曲线转化为曲面,将曲面拉伸转化柱体,创建椭圆形柱体;
整合圆形柱体和椭圆形柱体,形成镂空柱体模型;
所述的将幕墙面基本嵌板单元曲面和镂空柱体模型进行交集运算,形成镂空幕墙面基本嵌板单元曲面,包括:
遍历幕墙面基本嵌板单元曲面的每一个基板嵌板单元曲面,将每一个基板嵌板单元曲面与镂空柱体模型进行交集运算,当存在交集时,在基本嵌板单元曲面上减去镂空柱体模型的整体形状,当不存在交集时不做处理,形成镂空幕墙面基本嵌板单元曲面。
2.根据权利要求1所述的镂空石材幕墙的BIM自动建模方法,其特征在于,整理、编辑镂空石材幕墙的设计数据时所述设计数据分层独立存储,并进行元素分解,闭合多段线为独立元素。
3.根据权利要求1所述的镂空石材幕墙的BIM自动建模方法,其特征在于,还包括:
对应预设的幕墙表面模型,对镂空石材幕墙嵌板进行空间定位和转换,得到转换后的镂空石材幕墙嵌板实体;
为镂空石材幕墙嵌板实体编码命名,并创建镂空石材幕墙嵌板实体的族实例。
4.根据权利要求3所述的镂空石材幕墙的BIM自动建模方法,其特征在于,还包括:
将镂空石材幕墙嵌板实体转化为SAT格式文件,调用Revit平台API,再由SAT格式文件转化为Revit的rfa文件,嵌板编码进行族命名。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210777854.5A CN114840909B (zh) | 2022-07-04 | 2022-07-04 | 一种镂空石材幕墙的bim自动建模方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210777854.5A CN114840909B (zh) | 2022-07-04 | 2022-07-04 | 一种镂空石材幕墙的bim自动建模方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114840909A CN114840909A (zh) | 2022-08-02 |
CN114840909B true CN114840909B (zh) | 2022-09-02 |
Family
ID=82574460
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210777854.5A Active CN114840909B (zh) | 2022-07-04 | 2022-07-04 | 一种镂空石材幕墙的bim自动建模方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114840909B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110158818A (zh) * | 2019-05-28 | 2019-08-23 | 中建七局建筑装饰工程有限公司 | 一种基于bim模型的平面幕墙的快速建造方法 |
CN110807214A (zh) * | 2019-09-16 | 2020-02-18 | 重庆长厦安基建筑设计有限公司 | 一种基于bim的多轴曲面幕墙的使用方法 |
CN112287553A (zh) * | 2020-10-30 | 2021-01-29 | 金刚幕墙集团有限公司 | 一种基于bim的幕墙标准化设计方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI731400B (zh) * | 2019-08-30 | 2021-06-21 | 潤弘精密工程事業股份有限公司 | 建築資訊模型資料處理方法及系統 |
-
2022
- 2022-07-04 CN CN202210777854.5A patent/CN114840909B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110158818A (zh) * | 2019-05-28 | 2019-08-23 | 中建七局建筑装饰工程有限公司 | 一种基于bim模型的平面幕墙的快速建造方法 |
CN110807214A (zh) * | 2019-09-16 | 2020-02-18 | 重庆长厦安基建筑设计有限公司 | 一种基于bim的多轴曲面幕墙的使用方法 |
CN112287553A (zh) * | 2020-10-30 | 2021-01-29 | 金刚幕墙集团有限公司 | 一种基于bim的幕墙标准化设计方法 |
Non-Patent Citations (2)
Title |
---|
BIM技术在复杂外形建筑深化设计中的应用;冯友平;《建筑施工》;20200625(第06期);全文 * |
Dynamo在曲面幕墙建模中的应用研究;吴开兴等;《现代信息科技》;20200710(第13期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114840909A (zh) | 2022-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4933865A (en) | Apparatus for recognition of drawn shapes or view types for automatic drawing input in CAD system | |
US20060242630A1 (en) | Process for preparing design procedure document and apparatus for the same | |
CN103389683A (zh) | 大功率厚板数控激光切割机cam系统及方法 | |
US20020118229A1 (en) | Information processing apparatus and method | |
KR101425576B1 (ko) | 정밀한 광역 축척 모형 제작을 위한 3차원 데이터 획득 및 가공 방법 | |
JP4322615B2 (ja) | 三次元配置調整cadシステムを備えた部品情報処理装置、部品情報処理方法および部品情報処理プログラム | |
JP2000155859A (ja) | 数値解析用メッシュ生成方法およびメッシュ生成装置 | |
CN113779670B (zh) | 一种基于Dynamo实现Revit桩基双控建模的方法及系统 | |
JP2002024306A (ja) | 解析モデルデータ作成方法及び装置並びに解析モデルデータ作成用プログラムを記録した記録媒体。 | |
CN114840909B (zh) | 一种镂空石材幕墙的bim自动建模方法 | |
CN109859308A (zh) | 基于城市矢量数据的房屋简单三维模型构建方法 | |
CN113901539A (zh) | 一种建筑与结构cad图纸的轴网的自动识别及应用方法 | |
CN115688232A (zh) | 基于revit的木工翻样出图方法 | |
CN116051771A (zh) | 一种基于无人机倾斜摄影模型的光伏bim屋顶自动建模方法 | |
CN113505411B (zh) | 一种结构施工图数字化形成方法 | |
JPS62251905A (ja) | 対話形グラフイツク入力システム | |
JP2006240183A (ja) | 金型作成方法及び装置 | |
CN116883609B (zh) | 基于dynamo的cad结构平面快速转三维模型方法 | |
JP2001265834A (ja) | 板金製造設備全体にわたって設計製造情報を管理し分配する装置及び方法 | |
Piepereit et al. | Towards automatic processing of virtual city models for simulations | |
CN114529705B (zh) | 一种三维引擎编辑器的界面布局处理方法 | |
CN117216836B (zh) | 一种基于Dynamo的闸门设备批量建模方法 | |
CN116502318B (zh) | 一种提取铁路站场相交设备空间信息的方法 | |
CN101739496B (zh) | 用于三维船舶建模零件定位分析中的球扁钢重心规格法 | |
CN118036143A (zh) | 一种基于cad和倾斜模型的建筑物自动化建模方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |