掌桥专利:专业的专利平台
掌桥专利
首页

基于Revit和Dynamo生成尾水肘管模型的方法

文献发布时间:2023-06-19 16:04:54



技术领域

本发明涉及尾水肘管模型技术领域,具体来说涉及一种基于Revit和Dynamo生成尾水肘管模型的方法。

背景技术

Revit是Autodesk公司一套系列软件的名称。Revit系列软件是为建筑信息模型(BIM)构建的,可帮助建筑设计师设计、建造和维护质量更好、能效更高的建筑。

由于Revit的强项并不是复杂形体生成,目前在Revit中,较为复杂的尾水肘管模型都是基于3DE转化而来,除了是一个图像外,没有任何信息,技术人员无法调整尾水肘管模型的参数,应用非常受限。

发明内容

本发明旨在解决现有Revit中的尾水肘管模型无法调整参数问题,提出一种基于Revit和Dynamo生成尾水肘管模型的方法。

本发明解决上述技术问题所采用的技术方案是:基于Revit和Dynamo生成尾水肘管模型的方法,包括以下步骤:

步骤1、在Dynamo中创建15个断面,并分别建立每个断面对应的坐标系;

步骤2、针对每个断面,分别在xy平面按对应坐标系的相对坐标,生成对应断面的平面图形;

步骤3、通过节点geometry.transform将所述平面图形转移至对应断面上的对应位置;

步骤4、通过节点solid.byloft生成各断面对应平面图形组成的多截面体,生成尾水肘管模型。

进一步地,第1~12断面对应的坐标系建立方法包括:

获取尾水单线图中的尾水断面数据表,所述尾水断面数据表中包括由12个第一坐标点和对应的12个第二坐标点组成的数组;

通过节点codeblock分别输入所述由12个第一坐标点和12个第二坐标点组成的数组,然后通过geometry.rotate将两组节点绕z轴和原点旋转10.18度,得到对应位置的两组节点;

通过节点vector.bytwopoint分别创建第一坐标点与对应第二坐标点之间12条直线的方向向量;

通过节点line.bystartpointendpoint创建第一坐标点与对应第二坐标点之间12条直线,并通过节点curve.pointatparameter获得各直线的中点;

通过节点coordinatesystem.byoriginvectors得到第1~12断面对应的坐标系组成的列表,节点coordinatesystem.byoriginvectors中,yaxis项的输入为对应直线的方向向量组成的列表,原点origin项的输入为对应直线的中点组成的列表,xaxis项的输入由节点vector.rotate生成,节点vector.rotate中,vector项的输入为vector.yaxis,axis项的输入为vector.zaxis,degrees项的输入为190.18;

第1~12断面对应平面图形组成的多截面体的生成方法包括:

分别将第1~12断面分割为4个弓形以及中间部分的多边形,其中,4个弓形位于四个象限,第1~2断面中间部分的多边形为四边形,第3~5断面中间部分的多边形为六边形,第6~12断面中间部分的多边形为八边形;

分别通过节点solid.byloft生成第1~12断面对应4个弓形组成的多截面体、第1~2断面对应四边形组成的多截面体、第2~5断面构成的多截面体、第5~11断面对应多边形构成的多截面体以及第11~12断面构成的多截面体。

进一步地,第1~12断面对应4个弓形组成的多截面体的生成方法包括:

构造自定义节点bihe.dyf,分别通过自定义节点bihe.dyf在第1~12断面对应的xy平面上构造弓形,该自定义节点bihe.dyf中,center项的输入为对应坐标系圆心点的坐标,radius项的输入为半径;

通过节点list.create将第1~12断面的弓形组成列表,其中,对于位于第一象限的弓形,startangle项和endangle项的输入分别为0和90,对于位于第二象限的弓形,startangle项和endangle项的输入分别为90和180,对于位于第三象限的弓形,startangle项和endangle项的输入分别为180和270,对于位于第四象限的弓形,startangle项和endangle项的输入分别为270和360,其中,第三、四象限的弓形,只限于第1~11断面,第12断面已退化为点;

通过节点geometry.tranfrom将xy平面上的弓形转化到第1~12断面上的对应位置,该节点geometry.tranfrom中,geometry项的输入为弓形组成列表,cs项的输入为第1~12断面对应的坐标系组成的列表,第1~12断面对应的坐标系组成的列表通过节点coordinatesystem.byoriginvectors得到;

通过节点solid.byloft生成第1~12断面对应4个弓形组成的多截面体。

进一步地,第1~2断面对应四边形组成的多截面体的生成方法包括:

在xy平面,分别将第1~2断面对应四边形的4个顶点坐标值按逆时针顺序输入节点code.block,并通过节点list.creat分别将1~2断面的4个顶点组成2个顶点列表;

通过节点polycure.bypoint分别构造第1~2断面对应的四边形,并使用节点list.creat将2个四边形组成列表,该节点polycure.bypoint中,points项的输入为对应的顶点列表,connectlasttofirst项的输入为boolean变量true;

通过节点geometry.transform将xy平面上的四边形转化到第1~2断面上的对应位置,该节点geometry.tranfrom中,geometry项的输入为2个四边形组成的列表,cs项的输入为第1~12断面对应的坐标系组成的列表,第1~12断面对应的坐标系组成的列表通过节点coordinatesystem.byoriginvectors得到;

通过节点solid.byloft生成第1~2断面对应四边形组成的多截面体。

进一步地,第2~5断面构成的多截面体的生成方法包括:

在xy平面,分别将第2~5断面对应多边形的各个顶点坐标值按逆时针顺序输入节点code.block,并通过节点list.creat分别将1~2断面的各顶点组成4个顶点列表;

通过节点polycure.bypoint分别构造第2~5断面对应的多边形,并使用节点list.creat将4个多边形组成列表,该节点polycure.bypoint中,points项的输入为对应的顶点列表,connectlasttofirst项的输入为boolean变量true;

通过节点geometry.transform将xy平面上的多边形转化到第2~5断面上的对应位置,该节点geometry.tranfrom中,geometry项的输入为四个多边形组成列表,cs项的输入为第2~5断面对应的坐标系组成的列表,第2~5断面对应的坐标系使用节点getitematindex(list,index)从坐标系节点中获得,节点getitematindex(list,index)中,list项的输入为第1~12断面对应的坐标系组成的列表,index项的输入分别为1,2,3,4;

生成第2~3断面之间的4条引导线,具体包括以下步骤:在xy平面输入第2断面引导线起点的相对坐标,并通过节点geometry.transform将其转移至第2断面,在xy平面输入第3断面引导线终点的相对坐标,并通过节点geometry.transform将其转移至第3断面,通过节点line.bystartpointendpoint生成第2断面与第3断面之间的引导线,同理生成第2断面与第3断面之间其余3条引导线;

通过节点list.create将第2~3断面之间的4条引导线组成1个引导线列表,并通过节点solid.byloft(crosssections,guidecurves)生成第2~5断面构成的多截面体,该节点solid.byloft(crosssections,guidecurves)中,crosssections项的输入为位于截面对应位置的4个多边形组成的列表,guidecurves项的输入为对应的引导线列表。

进一步地,第5~11断面对应多边形构成的多截面体的生成方法包括:

在xy平面,分别将第5~11断面对应多边形的各个顶点坐标值按逆时针顺序输入节点code.block,并通过节点list.creat分别将5~11断面的各顶点组成7个顶点列表;

通过节点polycure.bypoint分别构造第5~11断面对应的多边形,并使用节点list.creat将7个多边形组成列表,该节点polycure.bypoint中,points项的输入为对应的顶点列表,connectlasttofirst项的输入为boolean变量true;

通过节点geometry.transform将xy平面上的多边形转化到第5~11断面上的对应位置,该节点geometry.tranfrom中,geometry项的输入为七个多边形组成列表,cs项的输入为第5~11断面对应的坐标系组成的列表,第5~11断面对应的坐标系组成的列表使用节点list.dropitem(list,amount)获得,节点list.dropitem(list,amount)中,list项的输入为第1~12断面对应的坐标系组成的列表,amount项的输入4;

生成第5~6断面之间的4条引导线,具体包括以下步骤:使用节点getitematindex(list,index)从坐标系节点中获得5~6断面的相对坐标系,节点getitematindex(list,index)中,list项的输入为第5~11断面对应的坐标系组成的列表,index项的输入分别为0,1;在xy平面输入第5断面引导线起点的相对坐标,并通过节点geometry.transform将其转移至第5断面,在xy平面输入第6断面引导线终点的相对坐标,并通过节点geometry.transform将其转移至第6断面,通过节点line.bystartpointendpoint生成第5断面与第6断面之间的引导线,同理生成第5断面与第6断面之间其余3条引导线;

通过节点list.create将第5~6断面之间的4条引导线组成1个引导线列表,并通过节点solid.byloft(crosssections,guidecurves)生成第5~11断面构成的多截面体,该节点solid.byloft(crosssections,guidecurves)中,crosssections项的输入为位于截面对应位置的7个多边形组成的列表,guidecurves项的输入为对应的引导线列表。

进一步地,第11~12断面构成的多截面体的生成方法包括:

分别将第11~12断面对应的多边形划分为中间的七边形的两侧下方的2个三角形,先生成第11~12断面对应七边形组成的多截面体,再生成第11~12断面对应三角形组成的多截面体;

其中,第11~12断面对应七边形组成的多截面体的生成方法包括:

在xy平面,分别将第11~12断面对应七边形的7个顶点坐标值按逆时针顺序输入节点code.block,并通过节点list.creat分别将11~12断面的7个顶点组成2个顶点列表;

通过节点polycure.bypoint分别构造第11~12断面对应的七边形,并使用节点list.creat将2个七边形组成列表,该节点polycure.bypoint中,points项的输入为对应的顶点列表,connectlasttofirst项的输入为boolean变量true;

通过节点geometry.transform将xy平面上的七边形转化到第11~12断面上的对应位置,该节点geometry.tranfrom中,geometry项的输入为2个七边形组成的列表,cs项的输入为第11~12断面对应的坐标系组成的列表,第11~12断面对应的坐标系使用节点list.getitematindex获得,该节点list.getitematindex中,list项的输入为第1~12断面对应的坐标系组成的列表,index项的输入分别为10,11;

通过节点solid.byloft生成第11~12断面对应七边形组成的多截面体;

第11~12断面对应三角形组成的多截面体的生成方法包括:

在xy平面,分别将第11~12断面对应三角形的3个顶点坐标值输入节点code.block,并通过节点list.creat分别将第11~12断面的3个顶点按相同顺序组成2个顶点列表;

通过节点polycurve.bypoint分别构造第11~12断面的折线,并通过节点polycurve.fillet将第11断面的折线倒圆角后,通过节点polycurve.closewithline封闭第11~12断面的三角区,该节点polycure.bypoint中,points项的输入为对应的顶点列表,connectlasttofirst项的输入为默认布尔向量false;

通过节点polycurve.bypoint构造第11~12断面左下三角区的阴影部分,该节点polycurve.bypoint中,points项的输入为左下三角形顶点坐标构成的顶点列表,connectlasttofirst项的输入为布尔值true;

通过节点geometry.transform将xy平面上的三角区转化到第11~12断面上的对应位置,该节点geometry.tranfrom中,geometry项的输入为2个三角区组成的列表,cs项的输入为第11~12断面对应的坐标系组成的列表;

使用节点list.creat将2个三角区组成列表,并生成第11~12断面之间的2条引导线,具体包括以下步骤:在xy平面输入第11断面引导线起点的相对坐标,并通过节点geometry.transform将其转移至第11断面,在xy平面输入第12断面引导线终点的相对坐标,并通过节点geometry.transform将其转移至第12断面,通过节点line.bystartpointendpoint生成第11断面与第12断面之间的2条引导线;

通过节点list.create将第11~12断面之间的2条引导线组成1个引导线列表,并通过节点solid.byloft(crosssections,guidecurves)生成第11~12断面对应三角形组成的多截面体,该节点solid.byloft(crosssections,guidecurves)中,crosssections项的输入为位于截面对应位置的2个三角区组成的列表,guidecurves项的输入为对应的引导线列表。

进一步地,第12~13断面对应平面图形组成的多截面体的生成方法包括:

分别将第12~13断面对应的平面图形划分为六边形和2个圆形,先通过节点coordinatesystem.byoriginvectors生成第13断面对应的坐标系,再生成第12~13断面对应六边形组成的多截面体,然后生成第12~13断面对应圆形组成的多截面体,最后通过节点list.create将两个多截面体组成列表后,通过节点solid.byunion将两个实体合并,得到第12~13断面对应平面图形组成的多截面体;

其中,第12~13断面对应六边形组成的多截面体的生成方法包括:

在xy平面,分别将第12~13断面对应六边形的6个顶点坐标值按逆时针顺序输入节点code.block,并通过节点list.creat分别将12~13断面的6个顶点组成2个顶点列表;

通过节点polycure.bypoint分别构造第12~13断面对应的六边形,并使用节点list.creat将2个六边形组成列表,该节点polycure.bypoint中,points项的输入为对应的顶点列表,connectlasttofirst项的输入为boolean变量true;

通过节点geometry.transform将xy平面上的六边形转化到第12~13断面上的对应位置,该节点geometry.tranfrom中,geometry项的输入为2个七边形组成的列表,cs项的输入为第12~13断面对应的坐标系组成的列表,第12断面对应的坐标系通过节点list.getitematindex得到,该节点list.getitematindex中,list项的输入为第1~12断面对应的坐标系组成的列表,index项的输入为11;

通过节点solid.byloft生成第12~13断面对应六边形组成的多截面体;

第12~13断面对应圆形组成的多截面体的生成方法包括:

通过节点circle.bycenterpointradius在xy平面画出对应的圆形,并通过节点list.creat将2个圆形组成列表,

通过节点geometry.transform将xy平面上的圆形转化到第12~13断面上的对应位置,该节点geometry.tranfrom中,geometry项的输入为2个圆形组成的列表,cs项的输入为第12~13断面对应的坐标系组成的列表;

通过节点solid.byloft生成第12~13断面对应圆形组成的多截面体。

进一步地,第13~14断面对应平面图形组成的多截面体的生成方法包括:

将第13断面对应平面图形划分为三段曲线组成的闭合图形,第14断面对应平面图形为矩形;

生成第13断面对应闭合图像的三段曲线,具体方法包括:在xy平面,将第一段曲线对应的3个顶点坐标值输入节点code.block,并通过节点list.creat将3个顶点组成顶点列表;通过节点polycurve.bypoint生成3个顶点对应的折线,该节点polycurve.bypoint中,points项的输入为3个顶点组成顶点列表,connectlasttofirst项的输入为boolean变量false;使用相同的方法生成其余两段曲线对应的折线;通过节点polycurve.fillet将所有折线倒圆角;

通过节点list.create将三段曲线按顺序组成列表,通过节点polycurve.byjoinedcurves构造第13断面对应的闭合图形,并通过节点geometry.transform将xy平面上的闭合图形转化到第13断面上的对应位置;

通过节点coordinatesystem.byoriginvectors生成第14断面对应的坐标系;

在xy平面,将第14断面对应矩形的4个顶点坐标值输入节点code.block,通过节点list.creat将4个顶点组成顶点列表,通过节点polycurve.bypoint构造4个顶点对应的矩形,其中,顶点坐标值的输入顺序与第13断面保持一致;

通过节点geometry.transform将xy平面上的矩形转化到第14断面上的对应位置;

通过节点list.creat将第13断面上对应位置的闭合图形和第14断面上对应位置的矩形组成列表;

生成第13~14断面之间的4条引导线,具体包括以下步骤:在xy平面输入第13断面引导线起点的相对坐标,并通过节点geometry.transform将其转移至第13断面,在xy平面输入第14断面引导线终点的相对坐标,通过节点geometry.transform将其转移至第14断面,并通过节点line.bystartpointendpoint生成第13断面与第14断面之间的4条引导线;

通过节点list.create将第13~14断面之间的4条引导线组成1个引导线列表;并通过节点solid.byloft(crosssections,guidecurves)生成第13~14断面对应平面图形组成的多截面体,该节点solid.byloft(crosssections,guidecurves)中,crosssections项的输入为位于截面对应位置的闭合图形和矩形组成的列表,guidecurves项的输入为对应的引导线列表。

进一步地,第14~15断面对应平面图形为矩形,第14~15断面对应平面图形组成的多截面体的生成方法包括:

通过节点coordinatesystem.byoriginvectors生成第15断面对应的坐标系;

在xy平面,分别将第14~15断面对应矩形的4个顶点坐标值输入节点code.block,通过节点list.creat将4个顶点组成顶点列表,通过节点polycurve.bypoint分别构造第14~15断面4个顶点对应的矩形,其中,第14~15断面顶点坐标值的输入顺序保持一致;

通过节点geometry.transform分别将xy平面上的矩形转化到第14~15断面上的对应位置,并通过节点list.create将第14~15断面对应位置上的矩形组成列表;

通过节点solid.byloft生成第14~15断面对应矩形组成的多截面体。

本发明的有益效果是:本发明所述的基于Revit和Dynamo生成尾水肘管模型的方法,通过创建15个断面并创建每个断面对应的坐标系,通过将在坐标系中生成的平面图像转化至对应断面上的对应位置,并生成各断面对应平面图形组成的多截面体,即可生成尾水肘管模型,本发明通过节点构造尾水肘管模型,操作人员可以修改尾水肘管模型的参数来对模型进行修改,并且可以方便将尾水肘管定义为族,以判断尾水肘管模型是否与其他构件相交或干涉。

附图说明

图1为本发明实施例所述的基于Revit和Dynamo生成尾水肘管模型的方法的流程示意图;

图2为本发明实施例所述的第1~12个断面对应的坐标系的位置示意图;

图3为本发明实施例所述的第1~2断面在相对坐标系中的平面示意图;

图4为本发明实施例所述的第3~5断面在相对坐标系中的平面示意图;

图5为本发明实施例所述的第6~12断面在相对坐标系中的平面示意图;

图6为本发明实施例所述的第1~12断面对应4个弓形组成的多截面体的示意图;

图7为本发明实施例所述的位于第2断面的引导线起始点的示意图;

图8为本发明实施例所述的位于第3断面的引导线结束点的示意图;

图9为本发明实施例所述的位于第5断面的引导线起始点的示意图;

图10为本发明实施例所述的位于第6断面的引导线起始点的示意图;

图11为本发明实施例所述的第11~12断面在相对坐标系中的平面示意图;

图12为本发明实施例所述的第12~13断面在相对坐标系中的平面示意图;

图13为本发明实施例所述的第13断面在相对坐标系中的平面示意图;

图14为本发明实施例所述的第14断面在相对坐标系中的平面示意图;

图15为本发明实施例所述的第15断面在相对坐标系中的平面示意图;

图16为本发明实施例所述的尾水肘管模型结构示意图。

具体实施方式

下面将结合附图对本发明的实施方式进行详细描述。

本发明所述的基于Revit和Dynamo生成尾水肘管模型的方法,包括以下步骤:步骤1、在Dynamo中创建15个断面,并分别建立每个断面对应的坐标系;步骤2、针对每个断面,分别在xy平面按对应坐标系的相对坐标,生成对应断面的图形;步骤3、通过节点geometry.transform将所述平面图形转化至对应断面上的对应位置;步骤4、通过节点solid.byloft生成各断面对应平面图形组成的多截面体,生成尾水肘管模型。

具体而言,尾水肘管是一个复杂的三维体形,本发明首先分别在15个断面上建立坐标系,然后在xy平面上通过现有Dynamo的节点生成cad附图的平面图形,并使用节点transfrom(cs)把在xy平面上生成的平面图形,转移到断面上的实际位置,从而生成多截面体,进而完成尾水肘管模型的建立,从而摆脱了依赖于3de模型的导入来完成肘管的创建,且通过这种参数化造形方法生成的尾水肘管可以很方便地定义为族,可判断机电基于Revit生成的管路是否与尾水肘管发生相交或干涉,并且还可以调整参数来修改模型。

实施例

本发明实施例所述的基于Revit和Dynamo生成尾水肘管模型的方法,如图1所示,包括以下步骤:

步骤1、在Dynamo中创建15个断面,并分别建立每个断面对应的坐标系;

步骤2、针对每个断面,分别在xy平面按对应坐标系的相对坐标,生成对应断面的平面图形;

步骤3、通过节点geometry.transform将所述平面图形转化至对应断面上的对应位置;

步骤4、通过节点solid.byloft生成各断面对应平面图形组成的多截面体,生成尾水肘管模型。

图2示出了第1~12个断面的x'y'相对坐标系的x'轴和y'轴的方向和位置,12个坐标系的原点位于每个断面的中心,本实施例中,第1~12断面对应的坐标系建立方法包括:

获取尾水单线图中的尾水断面数据表,所述尾水断面数据表中包括由12个第一坐标点y1和对应的12个第二坐标点y2组成的数组arr={point.bycoordinates,…};

通过节点codeblock分别输入所述由12个第一坐标点y1和对应的12个第二坐标点y2组成的数组arr={point.bycoordinates,…},然后通过geometry.rotate将两组节点绕z轴和原点旋转10.18度,得到对应位置的两组节点;

通过节点vector.bytwopoint分别创建第一坐标点y1与对应第二坐标点y2之间12条直线的方向向量;

通过节点line.bystartpointendpoint创建第一坐标点与对应第二坐标点之间12条直线,并通过节点curve.pointatparameter获得各直线的中点;

通过节点coordinatesystem.byoriginvectors得到第1~12断面对应的坐标系组成的列表,节点coordinatesystem.byoriginvectors中,yaxis项的输入为对应直线的方向向量组成的列表,原点origin项的输入为对应直线的中点组成的列表,xaxis项的输入由节点vector.rotate生成,节点vector.rotate中,vector项的输入为vector.yaxis,axis项的输入为vector.zaxis,degrees项的输入为190.18;

第1~12断面对应平面图形组成的多截面体的生成方法包括:

分别将第1~12断面分割为4个弓形以及中间部分的多边形,其中,4个弓形位于四个象限,如图3所示,第1~2断面中间部分的多边形为四边形,如图4所示,第3~5断面中间部分的多边形为六边形,如图5所示,第6~12断面中间部分的多边形为八边形;

分别通过节点solid.byloft生成第1~12断面对应4个弓形组成的多截面体、第1~2断面对应四边形组成的多截面体、第2~5断面构成的多截面体、第5~11断面对应多边形构成的多截面体以及第11~12断面构成的多截面体。

本实施例中,第1~12断面对应4个弓形组成的多截面体的生成方法包括:

构造自定义节点bihe.dyf,分别通过自定义节点bihe.dyf在第1~12断面对应的xy平面上构造弓形,如图3、图4和图5的阴影部分所示,4个弓形位于四个象限,该自定义节点bihe.dyf中,center项的输入为对应坐标系圆心点的坐标,radius项的输入为半径;

本实施例中,将自定义节点bihe.dyf拷贝到相应目录,该自定义节点bihe.dyf在xy平面通过输入圆心坐标、半径、圆弧的起始角度和结束角度得到一段圆弧,并连接首尾端点,成为闭合的弓形,方法具体包括:

首先通过节点point.bycoordinate(x,y)得到弓形对应的圆心,根据圆心坐标、半径、圆弧的起始角度和结束角度并基于节点arc.bycenterpointradiusangle(center,radius,startangle,endangle,normal)得到圆弧,然后使用节点polycurve.byjoinedcurves(curves)将此圆弧转化成polycurve,节点polycurve.byjoinedcurves(curves)中,curves项的输入为圆弧,最后使用节点polycurve.closewithline(polycurve)得到闭合的弓形。

通过节点list.create将第1~12断面的弓形组成列表,其中,对于位于第一象限的弓形,startangle项和endangle项的输入分别为0和90,对于位于第二象限的弓形,startangle项和endangle项的输入分别为90和180,对于位于第三象限的弓形,startangle项和endangle项的输入分别为180和270,对于位于第四象限的弓形,startangle项和endangle项的输入分别为270和360;

通过节点geometry.tranfrom将xy平面上的弓形转化到第1~12断面上的对应位置,该节点geometry.tranfrom中,geometry项的输入为弓形组成列表,cs项的输入为第1~12断面对应的坐标系组成的列表,第1~12断面对应的坐标系组成的列表通过节点coordinatesystem.byoriginvectors得到;

通过节点solid.byloft生成第1~12断面对应4个弓形组成的多截面体,第1~12断面对应4个弓形组成的多截面体如图6所示,需要注意的是,第12断面弓形退化成点。

本实施例中,第1~2断面中间部分的多边形为四边形,第1~2断面对应四边形组成的多截面体的生成方法包括:

在xy平面,分别将第1~2断面对应四边形的4个顶点坐标值按逆时针顺序输入节点code.block,并通过节点list.creat分别将1~2断面的4个顶点组成2个顶点列表;

通过节点polycure.bypoint分别构造第1~2断面对应的四边形,并使用节点list.creat将2个四边形组成列表,该节点polycure.bypoint中,points项的输入为对应的顶点列表,connectlasttofirst项的输入为boolean变量true;

通过节点geometry.transform将xy平面上的四边形转化到第1~2断面上的对应位置,该节点geometry.tranfrom中,geometry项的输入为2个四边形组成的列表,cs项的输入为第1~12断面对应的坐标系组成的列表,第1~12断面对应的坐标系组成的列表通过节点coordinatesystem.byoriginvectors得到;

通过节点solid.byloft生成第1~2断面对应四边形组成的多截面体。

本实施例中,第2~5断面构成的多截面体的生成方法包括:

在xy平面,分别将第2~5断面对应多边形的各个顶点坐标值按逆时针顺序输入节点code.block,并通过节点list.creat分别将1~2断面的各顶点组成4个顶点列表;

通过节点polycure.bypoint分别构造第2~5断面对应的多边形,并使用节点list.creat将4个多边形组成列表,该节点polycure.bypoint中,points项的输入为对应的顶点列表,connectlasttofirst项的输入为boolean变量true;

通过节点geometry.transform将xy平面上的多边形转化到第2~5断面上的对应位置,该节点geometry.tranfrom中,geometry项的输入为四个多边形组成列表,cs项的输入为第2~5断面对应的坐标系组成的列表,第2~5断面对应的坐标系使用节点getitematindex(list,index)从坐标系节点中获得,节点getitematindex(list,index)中,list项的输入为第1~12断面对应的坐标系组成的列表,index项的输入分别为1,2,3,4;

生成第2~3断面之间的4条引导线,具体包括以下步骤:在xy平面输入第2断面引导线起点的相对坐标,并通过节点geometry.transform将其转移至第2断面,在xy平面输入第3断面引导线终点的相对坐标,并通过节点geometry.transform将其转移至第3断面,通过节点line.bystartpointendpoint生成第2断面与第3断面之间的引导线,同理生成第2断面与第3断面之间其余3条引导线,图9示出了本实施例位于第2断面的引导线起始点(a2、b2)的相对位置,图10示出了本实施例位于第3断面的引导线终点(a3、b3、c3、d3)的相对位置,根据以上方法得到第2~3断面之间的4条引导线(a2a3、a2b3、b2c3、b2d3)。

通过节点list.create将第2~3断面之间的4条引导线组成1个引导线列表,并通过节点solid.byloft(crosssections,guidecurves)生成第2~5断面构成的多截面体,该节点solid.byloft(crosssections,guidecurves)中,crosssections项的输入为位于截面对应位置的4个多边形组成的列表,guidecurves项的输入为对应的引导线列表。

本实施例中,第5~11断面对应多边形构成的多截面体的生成方法包括:

在xy平面,分别将第5~11断面对应多边形的各个顶点坐标值按逆时针顺序输入节点code.block,并通过节点list.creat分别将5~11断面的各顶点组成7个顶点列表;

通过节点polycure.bypoint分别构造第5~11断面对应的多边形,并使用节点list.creat将7个多边形组成列表,该节点polycure.bypoint中,points项的输入为对应的顶点列表,connectlasttofirst项的输入为boolean变量true;

通过节点geometry.transform将xy平面上的多边形转化到第5~11断面上的对应位置,该节点geometry.tranfrom中,geometry项的输入为七个多边形组成列表,cs项的输入为第5~11断面对应的坐标系组成的列表,第5~11断面对应的坐标系组成的列表使用节点list.dropitem(list,amount)获得,节点list.dropitem(list,amount)中,list项的输入为第1~12断面对应的坐标系组成的列表,amount项的输入4;

生成第5~6断面之间的4条引导线,具体包括以下步骤:在xy平面输入第5断面引导线起点的相对坐标,并通过节点geometry.transform将其转移至第5断面,在xy平面输入第6断面引导线终点的相对坐标,并通过节点geometry.transform将其转移至第6断面,通过节点line.bystartpointendpoint生成第5断面与第6断面之间的引导线,同理生成第5断面与第6断面之间其余3条引导线,图9示出了本实施例位于第5断面的引导线起始点(a5、b5)的相对位置,图10示出了本实施例位于第6断面的引导线终点(a6、b6、c6、d6)的相对位置,根据以上方法得到第5~6断面之间的4条引导线(a5a6、a5b6、b5c6、b5d6)。

通过节点list.create将第5~6断面之间的4条引导线组成1个引导线列表,并通过节点solid.byloft(crosssections,guidecurves)生成第5~11断面构成的多截面体,该节点solid.byloft(crosssections,guidecurves)中,crosssections项的输入为位于截面对应位置的7个多边形组成的列表,guidecurves项的输入为对应的引导线列表。

本实施例中,第11~12断面构成的多截面体的生成方法包括:

如图11所示,分别将第11~12断面对应的多边形划分为中间的七边形的两侧下方的2个三角形,先生成第11~12断面对应七边形组成的多截面体,再生成第11~12断面对应三角形组成的多截面体;

其中,第11~12断面对应七边形组成的多截面体的生成方法包括:

在xy平面,分别将第11~12断面对应七边形的7个顶点坐标值按逆时针顺序输入节点code.block,并通过节点list.creat分别将11~12断面的7个顶点组成2个顶点列表;

通过节点polycure.bypoint分别构造第11~12断面对应的七边形,并使用节点list.creat将2个七边形组成列表,该节点polycure.bypoint中,points项的输入为对应的顶点列表,connectlasttofirst项的输入为boolean变量true;

通过节点geometry.transform将xy平面上的七边形转化到第11~12断面上的对应位置,该节点geometry.tranfrom中,geometry项的输入为2个七边形组成的列表,cs项的输入为第11~12断面对应的坐标系组成的列表,第11~12断面对应的坐标系使用节点list.getitematindex获得,该节点list.getitematindex中,list项的输入为第1~12断面对应的坐标系组成的列表,index项的输入分别为10,11;

通过节点solid.byloft生成第11~12断面对应七边形组成的多截面体;

第11~12断面对应三角形组成的多截面体的生成方法包括:

在xy平面,分别将第11~12断面对应三角形的3个顶点坐标值输入节点code.block,并通过节点list.creat分别将第11~12断面的3个顶点按相同顺序组成2个顶点列表;

通过节点polycurve.bypoint分别构造第11~12断面的折线,并通过节点polycurve.fillet将第11断面的折线倒圆角后,通过节点polycurve.closewithline封闭第11~12断面的三角区,该节点polycure.bypoint中,points项的输入为对应的顶点列表,connectlasttofirst项的输入为默认布尔向量false;

通过节点polycurve.bypoint构造第11~12断面左下三角区的阴影部分,该节点polycurve.bypoint中,points项的输入为左下三角形顶点坐标构成的顶点列表(a11,b11,c11),connectlasttofirst项的输入为布尔值true;

通过节点geometry.transform将xy平面上的三角区转化到第11~12断面上的对应位置,该节点geometry.tranfrom中,geometry项的输入为2个三角区组成的列表,cs项的输入为第11~12断面对应的坐标系组成的列表,第11~12断面对应的坐标系使用节点list.getitematindex获得,该节点list.getitematindex中,list项的输入为第1~12断面对应的坐标系组成的列表,index项的输入分别为10,11;

使用节点list.creat将2个三角区组成列表,并生成第11~12断面之间的2条引导线,具体包括以下步骤:在xy平面输入第11断面引导线起点的相对坐标,并通过节点geometry.transform将其转移至第11断面,在xy平面输入第12断面引导线终点的相对坐标,并通过节点geometry.transform将其转移至第12断面,通过节点line.bystartpointendpoint生成第11断面与第12断面之间的2条引导线(t1-b11以及t2-b11);

通过节点list.create将第11~12断面之间的2条引导线组成1个引导线列表,并通过节点solid.byloft(crosssections,guidecurves)生成第11~12断面对应三角形组成的多截面体,该节点solid.byloft(crosssections,guidecurves)中,crosssections项的输入为位于截面对应位置的2个三角区组成的列表,guidecurves项的输入为对应的引导线列表。

本实施例中,第12~13断面对应平面图形组成的多截面体的生成方法包括:

如图12所示,分别将第12~13断面对应的平面图形划分为六边形和2个圆形,先通过节点coordinatesystem.byoriginvectors生成第13断面对应的坐标系,再生成第12~13断面对应六边形组成的多截面体,然后生成第12~13断面对应圆形组成的多截面体,最后通过节点list.create将两个多截面体组成列表后,通过节点solid.byunion将两个实体合并,得到第12~13断面对应平面图形组成的多截面体;

其中,第12~13断面对应六边形组成的多截面体的生成方法包括:

在xy平面,分别将第12~13断面对应六边形的6个顶点坐标值按逆时针顺序输入节点code.block,并通过节点list.creat分别将12~13断面的6个顶点组成2个顶点列表;

通过节点polycure.bypoint分别构造第12~13断面对应的六边形,并使用节点list.creat将2个六边形组成列表,该节点polycure.bypoint中,points项的输入为对应的顶点列表,connectlasttofirst项的输入为boolean变量true;

通过节点geometry.transform将xy平面上的六边形转化到第12~13断面上的对应位置,该节点geometry.tranfrom中,geometry项的输入为2个七边形组成的列表,cs项的输入为第12~13断面对应的坐标系组成的列表,第12断面对应的坐标系通过节点list.getitematindex得到,该节点list.getitematindex中,list项的输入为第1~12断面对应的坐标系组成的列表,index项的输入为11;

通过节点solid.byloft生成第12~13断面对应六边形组成的多截面体;

第12~13断面对应圆形组成的多截面体的生成方法包括:

通过节点circle.bycenterpointradius在xy平面画出对应的圆形,并通过节点list.creat将2个圆形组成列表,

通过节点geometry.transform将xy平面上的圆形转化到第12~13断面上的对应位置,该节点geometry.tranfrom中,geometry项的输入为2个圆形组成的列表,cs项的输入为第12~13断面对应的坐标系组成的列表;

通过节点solid.byloft生成第12~13断面对应圆形组成的多截面体。

本实施例中,第13~14断面对应平面图形组成的多截面体的生成方法包括:

如图13所示,将第13断面对应平面图形划分为三段曲线(a,b,c)组成的闭合图形,如图14所示,第14断面对应平面图形为矩形;

生成第13断面对应闭合图像的三段曲线,具体方法包括:在xy平面,将第一段曲线对应的3个顶点坐标值输入节点code.block,并通过节点list.creat将3个顶点组成顶点列表;通过节点polycurve.bypoint生成3个顶点对应的折线,该节点polycurve.bypoint中,points项的输入为3个顶点组成顶点列表,connectlasttofirst项的输入为boolean变量false;使用相同的方法生成其余两段曲线对应的折线;通过节点polycurve.fillet将所有折线倒圆角;

通过节点list.create将三段曲线按顺序组成列表,通过节点polycurve.byjoinedcurves构造第13断面对应的闭合图形,并通过节点geometry.transform将xy平面上的闭合图形转化到第13断面上的对应位置;

通过节点coordinatesystem.byoriginvectors生成第14断面对应的坐标系;

在xy平面,将第14断面对应矩形的4个顶点坐标值输入节点code.block,通过节点list.creat将4个顶点组成顶点列表,通过节点polycurve.bypoint构造4个顶点对应的矩形,其中,顶点坐标值的输入顺序与第13断面保持一致;

通过节点geometry.transform将xy平面上的矩形转化到第14断面上的对应位置;

通过节点list.creat将第13断面上对应位置的闭合图形和第14断面上对应位置的矩形组成列表;

生成第13~14断面之间的4条引导线,具体包括以下步骤:在xy平面输入第13断面引导线起点的相对坐标,并通过节点geometry.transform将其转移至第13断面,在xy平面输入第14断面引导线终点的相对坐标,通过节点geometry.transform将其转移至第14断面,并通过节点line.bystartpointendpoint生成第13断面与第14断面之间的4条引导线;

通过节点list.create将第13~14断面之间的4条引导线组成1个引导线列表;并通过节点solid.byloft(crosssections,guidecurves)生成第13~14断面对应平面图形组成的多截面体,该节点solid.byloft(crosssections,guidecurves)中,crosssections项的输入为位于截面对应位置的闭合图形和矩形组成的列表,guidecurves项的输入为对应的引导线列表。

如图15所示,本实施例中,第14~15断面对应平面图形为矩形,第14~15断面对应平面图形组成的多截面体的生成方法包括:

通过节点coordinatesystem.byoriginvectors生成第15断面对应的坐标系;

在xy平面,分别将第14~15断面对应矩形的4个顶点坐标值输入节点code.block,通过节点list.creat将4个顶点组成顶点列表,通过节点polycurve.bypoint分别构造第14~15断面4个顶点对应的矩形,其中,第14~15断面顶点坐标值的输入顺序保持一致;

通过节点geometry.transform分别将xy平面上的矩形转化到第14~15断面上的对应位置,并通过节点list.create将第14~15断面对应位置上的矩形组成列表;

通过节点solid.byloft生成第14~15断面对应矩形组成的多截面体。

经过以上步骤就完成了尾水肘管模型的生成,最后将上述步骤生成的第1~2断面、2~5断面和5~12断面对应的多截面体按顺序,通过节点list.create组成列表;使用节点solid.byunion将1~11断面组成整体,节点solid.byunion中,solids的输入项为节点list.create组成的列表;同时使用节点solid.union将11~12断面之间,12~13之间断面的多截面体分别组成整体,以及通过节点solid.union和solid.byunion,将所有几何体组成一个整体。

本实施例通过节点构造尾水肘管模型,操作人员可以修改尾水肘管模型的参数来对模型进行修改,并且可以方便将尾水肘管定义为族,以判断尾水肘管模型是否与其他构件相交或干涉。通过本实施例的方法可以生成正尾水肘管或斜尾水肘管,生成的斜尾水肘管模型如图16所示。

相关技术
  • 基于Revit和Dynamo生成尾水肘管模型的方法
  • 基于Revit API和Dynamo的预制构件BIM模型点云生成方法
技术分类

06120114691754