基于bim的盾构管片参数化图纸生成方法及系统
技术领域
本发明涉及盾构管片制造
技术领域
,具体而言涉及一种基于BIM的盾构管片参数化图纸生成方法及系统。背景技术
盾构管片是盾构施工中最主要装配构件。它由一定长度的盾构管环沿环向分割成(1+2+n)块弧状板块,形成若干块管片,再由工厂对分割形成的各管片进一步加工而获得。
通常管片是在工厂制作好的预制件,这种预制管片是一种具有复杂构造形式的工程结构,其上分布有各种方向、各种角度和形状各异的凹槽、孔洞等构造。
盾构隧道设计中,各种盾构管片构造结构信息量巨大且参数复杂。以传统的二维图纸表达方式描述上述复杂构造结构参数会在信息应用、传递等方面给工程人员造成很大的困扰,不利于设计及施工的顺利推进。而与此同时,盾构隧道模型的创建受制于盾构管片的独特几何特征及复杂细部构造,精细化的管片模型的创建成为盾构隧道BIM模型创建的难点。
发明内容
本发明针对现有技术的不足,提供一种基于BIM的盾构管片参数化图纸生成方法,本发明综合运用Revit、Inventor软件和Dynamo编程软件,利用BIM软件参数化、精准、快捷的优势建立精细化通用管片模型,可实现通用管片模型的参数化设置,精准建立盾构管片的三维模型,并显著提高二维出图效率。本发明具体采用如下技术方案。
首先,为实现上述目的,提出一种基于BIM的盾构管片参数化图纸生成方法,其步骤包括:第一步,在Dynamo参数化建模程序中按照用户所输入的管片尺寸参数创建对应于管片环结构上下端面以及内外侧面交线的四个椭圆轮廓线,然后通过List.Join节点将其中对应管片环结构上部外侧的第一椭圆轮廓线和对应管片环结构下部外侧的第二椭圆轮廓线组合为第一封闭曲线列表,通过Solid.ByLoft节点根据第一封闭曲线列表创建一个外侧几何体A,通过List.Join节点将其中对应管片环结构上部内侧的第三椭圆轮廓线和对应管片环结构下部内侧的第四椭圆轮廓线组合为第二封闭曲线列表,通过Solid.ByLoft节点根据第二封闭曲线列表创建一个内侧几何体B,通过Solid.Difference节点对外侧几何体A和内侧几何体B进行布尔剪切,从用外侧几何体A中减去内侧外侧两个几何体的公共部分,获得对应于待切割管片环模型的环状几何体C,完成对整个待切割管片环基本形状的三维实体的创建;第二步,按照用户所输入的圆心角、裕度角β以及封顶块上下两端的水平距离L对环状几何体C所表示的待切割管片环基本形状的三维实体进行管片划分,创建分别对应于每一个盾构管片的分界平面,根据分界平面对整个环状几何体C进行分割,获得对应于分割后各个管片的基本形状的集合solids以及各管片划分平面的集合originsurfaces;第三步,以Revit轮廓族承载用户所输入的盾构管片的环缝尺寸参数信息和纵缝尺寸参数信息,在第二步所获得的各盾构管片的分界面处及管片环纵向前后端面分别创建环缝实体和纵缝实体;第四步,以SAT格式的文件承载用户所输入的纵向手孔、环向手孔、注浆孔的形状信息,根据各盾构管片分界面所处位置角度以及管片环中心高度计算获得每一个盾构管片中注浆孔的设置位置,根据各盾构管片分界面所处位置角度、管片环中心高度以及环向手孔中心到管片环中心平面的距离H计算获得各盾构管片中每一个纵向手孔、环向手孔的设置位置与设置角度,获得环向手孔、纵向手孔的几何体及其一维列表;第五步,通过Geometry.DoesIntersect节点计算第四步中各环向手孔、纵向手孔以及注浆孔是否与对应管片的基本形状的集合solids相交;第六步,对相交的各环向手孔、纵向手孔以及注浆孔进行布尔剪切,从管片的基本形状的集合solids中减去与上述各环向手孔、纵向手孔、注浆孔、环缝实体和纵缝实体的公共部分,在盾构管片上形成相应开孔获得完整管片环实体;第七步,将完整管片环实体导出为Revit族文件,并将所述完整管片环实体导出为SAT格式的中间文件;第八步,在Inventor软件中调用SAT格式的中间文件以对其中的盾构管片实体进行特殊角度的转向;或者,针对特殊角度,先在dynamo软件中对完整管片环实体进行转向,然后将转向后的实体导出为SAT格式的中间文件,再在Inventor软件中调用SAT格式的中间文件以对其中的盾构管片实体进行投影或剖切操作,获得相应的投影视图或剖切视图;第九步,对所述投影视图或剖切视图进行标注和注释;第十步,将第九步中标注后的投影视图或剖切视图导出为dwg格式的图纸。
可选的,如上任一所述的基于BIM的盾构管片参数化图纸生成方法,其中,所述第三步具体包括:步骤3-1,采用“公制体量”族样板根据用户所输入的盾构管片的环缝尺寸参数信息和纵缝尺寸参数信息新建纵缝轮廓族和环缝轮廓族,并将该纵缝轮廓族、环缝轮廓族载入到待切割管片环模型的环状几何体C所对应的管片族中;步骤3-2,由对应于各管片划分平面的集合originsurfaces中的端面计算出端面顶部和底部交线的中点;步骤3-3,获得顶部交线的起点,通过Point.ReplaceZ节点将顶部交线的起点沿管片环轴向的坐标改为0,然后再使用Geometry.DistanceTo节点计算顶部交线的起点与管片环中心原点的距离,若距离大于管片环内径的一半则调转顶部交线的方向,否则不调转,此判断过程在PythonScript节点中完成;步骤3-4,计算调用Curve.TangentAtParameter节点、Curve.NormalAtParameter获得顶部交线中点处的切向量、法向量,然后通过Vector.X、Vector.Y、Vector.ByCoordinates和Plane.ByOriginXAxisYAxis节点创建纵缝轮廓族所对应的纵向平面,通过Plane.ToCoordinateSystem节点将纵缝轮廓族所对应的纵向平面转换为对应的空间坐标系;步骤3-5,创建各管片划分平面端面处的纵缝轮廓;步骤3-6,以步骤3-3中顶部交线和底部交线中中点的连线作为纵缝的放样路径,并适当延伸该纵缝的放样路径;步骤3-7,将步骤3-5中的纵缝轮廓沿着步骤3-6中的放样路径进行放样操作,得到所有纵缝实体;步骤3-8,根据管片环结构上部外侧的第一椭圆轮廓线使用Curve.Offset节点和1.4中的上表面外椭圆获取上表面中心椭圆,再用Code Block节点获取各管片划分平面,使用Geometry.Intersect节点计算其与上表面中心椭圆的交点,再以该交点用Surface.NormalAtPoint节点和Plane.ByOriginNormal节点生成一个垂直于管片环轴向的平面,再用Geometry.Rotate节点将此平面绕自身转动180度,再将其用Plane.ToCoordinateSystem节点将其转换为空间坐标系;步骤3-9,使用自定义节点curveGroups.TransformNewCsByFamilyType节点和3.8在所述空间坐标系生成上表面环缝轮廓;步骤3-10,使用Curve.SweepAsSolid节点将步骤3-9所得环缝轮廓沿管片环结构上部外侧的第一椭圆轮廓线进行放样,获得上表面的环缝实体;步骤3-11,使用Plane.Offset节点将沿管片环轴向的坐标为0的水平面偏移管片宽度一半的距离,得到Z=D/2水平面,再用Geometry.Mirror节点将步骤3-10所得上表面的环缝实体以Z=D/2水平面为对称中心,生成镜像对称的下表面环缝实体,其中,该坐标系以管片环轴线为Z轴,以管片环底部椭圆轮廓线的中心为原点。
可选的,如上任一所述的基于BIM的盾构管片参数化图纸生成方法,其中,所述第四步中:每一个盾构管片中注浆孔的设置位置为该盾构管片的中心,各盾构管片中每一个纵向手孔的设置位置分别位于该盾构管片的上下两侧边缘,同一盾构管片中相邻两纵向手孔之间的圆心角的夹角为30°,且每一盾构管片中至少分别在其上下两侧分别设置一对纵向手孔;各盾构管片中每一个环向手孔的设置位置分别位于该盾构管片的上下两侧距离Z=D/2水平面等于H处与管片分界平面内壁的交点位置,每一盾构管片中至少分别在其左右两端分别各设置两对环向手孔。
可选的,如上任一所述的基于BIM的盾构管片参数化图纸生成方法,其中,所述第八步中:生成iam格式保存对应于整个管片环实体,生成ipt格式保存相应各管片的实体。
同时,为实现上述目的,本发明还提供一种基于BIM的盾构管片参数化图纸生成系统,其包括基于Revit平台的以下模块:
待切割管片环模型构建模块,其按照用户所输入的管片尺寸参数创建对应于管片环结构上下端面以及内外侧面交线的四个椭圆轮廓线,然后通过List.Join节点将其中对应管片环结构上部外侧的第一椭圆轮廓线和对应管片环结构下部外侧的第二椭圆轮廓线组合为第一封闭曲线列表,通过Solid.ByLoft节点根据第一封闭曲线列表创建一个外侧几何体A,通过List.Join节点将其中对应管片环结构上部内侧的第三椭圆轮廓线和对应管片环结构下部内侧的第四椭圆轮廓线组合为第二封闭曲线列表,通过Solid.ByLoft节点根据第二封闭曲线列表创建一个内侧几何体B,通过Solid.Difference节点对外侧几何体A和内侧几何体B进行布尔剪切,从用外侧几何体A中减去内侧外侧两个几何体的公共部分后获得对应于待切割管片环模型的环状几何体C,完成对整个待切割管片环基本形状的三维实体的创建;
管片分割模块,其按照用户所输入的圆心角、裕度角β以及封顶块上下两端的水平距离L对环状几何体C所表示的待切割管片环基本形状的三维实体进行管片划分,创建分别对应于每一个盾构管片的分界平面,根据分界平面对整个环状几何体C进行分割,获得对应于分割后各个管片的基本形状的集合solids以及各管片划分平面的集合originsurfaces;
环纵缝模块,其以Revit轮廓族承载用户所输入的盾构管片的环缝尺寸参数信息和纵缝尺寸参数信息,在管片分割模块所获得的各盾构管片的分界面处及管片环纵向前后端面分别创建环缝实体和纵缝实体;
孔洞模块,其以SAT格式的文件承载用户所输入的纵向手孔、环向手孔、注浆孔的形状信息,根据各盾构管片分界面所处位置角度以及管片环中心高度计算获得每一个盾构管片中注浆孔的设置位置,根据各盾构管片分界面所处位置角度、管片环中心高度以及环向手孔中心到管片环中心平面的距离H计算获得各盾构管片中每一个纵向手孔、环向手孔的设置位置与设置角度,获得环向手孔、纵向手孔的几何体及其一维列表;
孔洞匹配模块,其将所有纵向手孔、环向手孔、注浆孔、环缝、纵缝的几何体组合为一个新的列表,分别计算上述各环向手孔、纵向手孔以及注浆孔是否与对应管片的基本形状的集合solids相交;
管片环实体生成模块,其将孔洞匹配模块计算所获得的与管片的基本形状的集合solids相交的各环向手孔、纵向手孔以及注浆孔进行布尔剪切,从管片的基本形状的集合solids中减去与上述各环向手孔、纵向手孔、注浆孔、环缝实体和纵缝实体的公共部分,在盾构管片上形成相应开孔,获得完整管片环实体;
文件导出模块,其将完整管片环实体导出为Revit族文件,并将所述完整管片环实体导出为SAT格式的中间文件,获得完整管片环实体的图纸文件。
可选的,如上任一所述的基于BIM的盾构管片参数化图纸生成系统,其中,还包括基于Inventor平台的以下模块:
图纸生成模块,其调用SAT格式的中间文件以对其中的盾构管片实体进行投影或剖切操作,获得相应的投影视图或剖切视图;
标注模块,用于对图纸生成模块所获得的投影视图或剖切视图进行标注和注释;
图纸导出模块,其用于将标注模块标注后的投影视图或剖切视图导出为dwg格式的图纸。
可选的,如上任一所述的基于BIM的盾构管片参数化图纸生成系统,其中,所述环纵缝模块,具体按照以下步骤在管片分割模块所获得的各盾构管片的分界面处及管片环纵向前后端面分别创建环缝实体和纵缝实体:步骤3-1,采用“公制体量”族样板根据用户所输入的盾构管片的环缝尺寸参数信息和纵缝尺寸参数信息新建纵缝轮廓族和环缝轮廓族,并将该纵缝轮廓族、环缝轮廓族载入到待切割管片环模型的环状几何体C所对应的管片族中;步骤3-2,由对应于各管片划分平面的集合originsurfaces中的端面计算出端面顶部和底部交线的中点;步骤3-3,获得顶部交线的起点,通过Point.ReplaceZ节点将顶部交线的起点沿管片环轴向的坐标改为0,然后再使用Geometry.DistanceTo节点计算顶部交线的起点与管片环中心原点的距离,若距离大于管片环内径的一半则调转顶部交线的方向,否则不调转,此判断过程在Python Script节点中完成;步骤3-4,计算调用Curve.TangentAtParameter节点、Curve.NormalAtParameter获得顶部交线中点处的切向量、法向量,然后通过Vector.X、Vector.Y、Vector.ByCoordinates和Plane.ByOriginXAxisYAxis节点创建纵缝轮廓族所对应的纵向平面,通过Plane.ToCoordinateSystem节点将纵缝轮廓族所对应的纵向平面转换为对应的空间坐标系;步骤3-5,创建各管片划分平面端面处的纵缝轮廓;步骤3-6,以步骤3-3中顶部交线和底部交线中中点的连线作为纵缝的放样路径,并适当延伸该纵缝的放样路径;步骤3-7,将步骤3-5中的纵缝轮廓沿着步骤3-6中的放样路径进行放样操作,得到所有纵缝实体;步骤3-8,根据管片环结构上部外侧的第一椭圆轮廓线使用Curve.Offset节点和1.4中的上表面外椭圆获取上表面中心椭圆,再用Code Block节点获取各管片划分平面,使用Geometry.Intersect节点计算其与上表面中心椭圆的交点,再以该交点用Surface.NormalAtPoint节点和Plane.ByOriginNormal节点生成一个垂直于管片环轴向的平面,再用Geometry.Rotate节点将此平面绕自身转动180度,再将其用Plane.ToCoordinateSystem节点将其转换为空间坐标系;步骤3-9,使用自定义节点curveGroups.TransformNewCsByFamilyType节点和3.8在所述空间坐标系生成上表面环缝轮廓;步骤3-10,使用Curve.SweepAsSolid节点将步骤3-9所得环缝轮廓沿管片环结构上部外侧的第一椭圆轮廓线进行放样,获得上表面的环缝实体;步骤3-11,使用Plane.Offset节点将沿管片环轴向的坐标为0的水平面偏移管片宽度一半的距离,得到Z=D/2水平面,再用Geometry.Mirror节点将步骤3-10所得上表面的环缝实体以Z=D/2水平面为对称中心,生成镜像对称的下表面环缝实体,其中,该坐标系以管片环轴线为Z轴,以管片环底部椭圆轮廓线的中心为原点。
可选的,如上任一所述的基于BIM的盾构管片参数化图纸生成系统,其中,所述孔洞模块中,具体以每一个盾构管片的中心作为该盾构管片中注浆孔的设置位置;各盾构管片中每一个纵向手孔的设置位置分别位于该盾构管片的上下两侧边缘,且同一盾构管片中相邻两纵向手孔之间的圆心角的夹角为30°,每一盾构管片中至少分别在其上下两侧分别设置一对纵向手孔;各盾构管片中每一个环向手孔的设置位置分别位于该盾构管片的上下两侧边缘,距离Z=D/2水平面等于H处与管片分界平面内壁的交点位置,且每一盾构管片中分别在其左右两侧设置两对环向手孔。
可选的,如上任一所述的基于BIM的盾构管片参数化图纸生成系统,其中,所述图纸生成模块中具体生成iam格式保存对应于整个管片环实体,生成ipt格式保存相应各管片的实体。
有益效果
本发明综合运用Revit、Inventor软件和Dynamo编程,利用BIM软件参数化、精准、快捷的优势,通过待切割管片环模块、管片分割模块、环纵缝模块、孔洞模块以及孔洞匹配模块,根据用户输入的参数要求,实现通用管片模型的参数化设置,精准建立盾构管片的三维实体模型。本申请可以根据盾构管片的三维实体模型将其导出为加工所需的投影视图、剖切视图并对相应导出图纸进行标注。本申请能够显著提高盾构管片二维出图效率和准确程度。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,并与本发明的实施例一起,用于解释本发明,并不构成对本发明的限制。在附图中:
图1是本发明的基于BIM的盾构管片参数化图纸生成方法的流程示意图;
图2本发明实施例中所需获得的盾构管片的正视图
图3是构造图2盾构管片所需的待切割管片环的模型示意图;
图4是对图3所示待切割管片环进行划分的示意图;
图5是本发明系统中初步对管片环进行切割的示意图;
图6是本发明的盾构管片所对应的环缝、纵缝轮廓族
图7是本发明的系统中最终切割获得的管片环结构模型;
图8是本发明的系统中利用Inventor软件所获得的切割后管片环结构的平面投影示意图;
图9是本发明中切割后的单个盾构管片在另一视角下的三维投影示图;
图10是本发明中切割后的单个盾构管片的带标注图纸的示意图;
图11是本发明中Solid.SplitByPlanes节点的实现方式示意图;
图12是本发明中Surface.ByPlaneSolid节点的实现方式示意图;
图13是本发明中Surface.Zoom节点的实现方式示意图;
图14是本发明中List.TwoItems节点的实现方式示意图;
图15是本发明运算过程中带有小缺口的环状几何体的示意图;
图16是本发明中Geometry.DistanceToAnother节点的实现方式示意图;
图17是本发明中Geometry.SplitByOthers节点的实现方式示意图;
图18是本发明中curveGroups.TransformNewCsByFamilyType节点的实现方式示意图;
图19是本发明中“筛选闭合多边形”节点的实现方式示意图;
图20是本发明中步骤3-3Python Script节点的实现方式示意图。
具体实施方式
为使本发明实施例的目的和技术方案更加清楚,下面将结合本发明实施例的附图,对本发明实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于所描述的本发明的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
本发明中所述的“或”的含义指的是各自单独存在或两者同时存在的情况均包括在内。本发明中所述的“内、外”的含义指的是相对于管片环或盾构管片本身而言,由其底面中心点指向其外部轮廓线的方向为外,反之为内;而非对本发明的装置机构的特定限定。本发明中所述的“连接”的含义可以是部件之间的直接连接也可以是部件间通过其它部件的间接连接。本发明中所述的“上、下”的含义指的是使用者正对盾构管片时,由盾构管片的底面中心点指向其顶面中心点的方向即为上,反之即为下,而非对本发明的装置机构的特定限定。
图1为根据本发明的一种基于BIM的盾构管片参数化图纸生成方法,其首先在Revit平台中利用Dynamo可视化编程,通过待切割管片环模型构建模块在Revit族文件中对待切割管片环进行大样建模,然后通过管片分割模块依据用户所输入的圆心角、裕度角β以及封顶块上下两端的水平距离L等分块参数对创建好的管环进行分割,创建出各类管片实体,再分别在各管片实体上通过环纵缝模块、孔洞模块、孔洞匹配模块等构建相应的环缝实体、纵缝实体、环向手孔、纵向手孔、注浆孔,最终将各完整管片实体通过文件导出模块配合于管片环实体生成模块导出获得包含有完整盾构管片结构信息的SAT格式的中间文件。由此,本申请可以进一步的利用Inventor软件读取SAT格式的中间文件,以获得与Revit族文件中完全一致的管片实体,再从各个方向通过图纸生成模块获取相应管片实体的投影视图和剖切视图,并通过标注模块对各视图进行相应的标注和注释,以最终由图纸导出模块获得严格按照设计参数要求能够直接指导施工的二维图纸。
下面以图7所示的1+2+3块弧状盾构管片的制图过程说明上述方法的实际运行过程:
第一步,首先在Revit初始界面新建族,选择“自适应公制常规模型”样板,将其保存为“管片族.rfa”。然后打开“Dynamo”,创建Dynamo参数化建模程序,在Dynamo建模程序中输入管片尺寸参数,包括管片内外径、宽度、楔形量,创建管片环的上、下、内、外共四个轮廓线,再根据轮廓线创建整个管片环的基本形状。
第一步中,管片类型为双面楔形通用管片,其形状如图2及图3所示,该管片环所在坐标系中,以管片环轴线方向为z轴,以管片环底面中心点为坐标系圆点,对应管片环结构上下端面以及内外侧面交线的上下内外四个轮廓线均为椭圆曲线,椭圆曲线所在平面与水平面夹角Θ=Math.Atan(d/R),其构建过程如下:
步骤1.2首先确定底面中心点为原点origin(0,0,0),此设置可直接由Point.Origin节点获得,然后根据管片宽度D和Point.ByCoordinates节点获得管片环顶面的中心点为(0,0,D)。
步骤1.3接着计算上部和下部轮廓线所在平面,由Plane.ByOriginNormal节点构造中心为顶面中心点(0,0,D)、法向量为(0,0,1)的平面,由Plane.XAxis获得其x轴方向向量,使用Geometry.Rotate节点将该平面绕其自身的x轴方向和顶面中心转动-Θ的角度,获得顶部平面;由Plane.ByOriginNormal节点构造中心为底面中心点(0,0,0)、法向量为(0,0,1)的平面,由Plane.XAxis获得其x轴方向向量,使用Geometry.Rotate节点将该平面绕其自身的x轴方向和顶面中心转动Θ的角度,获得底部平面。
步骤1.4,将上下表面外部椭圆曲线的x半轴长度设置为R/2,则其对应的y半轴长度为R/(2*Math.Cos(Θ)),将上下表面内部椭圆曲线的x半轴长度设置为r/2,则其对应的y半轴长度为r/(2*Math.Cos(Θ))。通过Ellipse.ByPlaneRadii节点,使用x半轴长度、y半轴长度及顶部平面、底部平面分别创建上下内外四个椭圆曲线轮廓。
步骤1.5通过List.Join节点将上下两个外部椭圆轮廓组合为一个封闭曲线的列表,通过Solid.ByLoft节点根据该第一封闭曲线列表创建一个外侧几何体A;通过List.Join节点将上下两个内部椭圆轮廓组合为一个封闭曲线的列表,通过Solid.ByLoft节点根据该第二封闭曲线列表创建一个内侧几何体B,通过Solid.Difference节点对A和B进行布尔剪切,用A减去A、B的公共部分,获得待切割管片环的几何体C。
第二步,将上述管片环划分为如图4所示的封顶块、邻接块以及标准块,其中,封顶块K的圆心角为α1、邻接块B1和B2的圆心角α2、标准块A2的圆心角α3,计算出标准块A1和A3的圆心角为α4=180°-α2-(α1+α3)/2,此外包含裕度角β、封顶块上下两端水平距离L共同创建各管片之间的分界平面,利用自定义功能节点,实现分界平面对整个管片环的分割,将管片环分割为1+2+3个管片(包括1个封顶块、2个邻接块和3个标准块),获得对应于分割后各个管片的基本形状的集合solids以及各管片划分平面的集合originsurfaces
该第二步的具体实现过程如下:
步骤2.1首先计算各原始分界平面在Z=0水平面上的投影位置,以各平面投影与x轴的夹角表示,角度按逆时针方向增大,其中:
Θ1表示plane1与x轴的夹角,Θ1=90°-α1
Θ2表示plane2与x轴的夹角,Θ2=90°+α1
Θ3表示plane3与x轴的夹角,Θ3=Θ2+α2
Θ4表示plane4与x轴的夹角,Θ4=Θ3+α4
Θ5表示plane5与x轴的夹角,Θ5=Θ4+α3
Θ6表示plane6与x轴的夹角,Θ6=Θ5+α4
步骤2.2由此可计算出各平面在Z=100(不为零即可)的水平面上的投影线分别与半径为r、圆心为(0,0,100)的圆相交于以下各点:
pt1(x1,y1)=(r*Math.Cos(Θ1),r*Math.Sin(Θ1),100),
pt2(x2,y2)=(r*Math.Cos(Θ2),r*Math.Sin(Θ2),100)
pt3(x3,y3)=(r*Math.Cos(Θ3),r*Math.Sin(Θ3),100)
pt4(x4,y4)=(r*Math.Cos(Θ4),r*Math.Sin(Θ4),100)
pt5(x5,y5)=(r*Math.Cos(Θ5),r*Math.Sin(Θ5),100)
pt6(x6,y6)=(r*Math.Cos(Θ6),r*Math.Sin(Θ6),100)
步骤2.3再由向以上各点的x、y轴分量和Vector.ByCoordinates节点,计算出各平面水平投影线的方向向量如下:
vec1=(r*Math.Cos(Θ1),r*Math.Sin(Θ1))
vec2=(r*Math.Cos(Θ2),r*Math.Sin(Θ2))
vec3=(r*Math.Cos(Θ3),r*Math.Sin(Θ3))
vec4=(r*Math.Cos(Θ4),r*Math.Sin(Θ4))
vec5=(r*Math.Cos(Θ5),r*Math.Sin(Θ5))
vec6=(r*Math.Cos(Θ6),r*Math.Sin(Θ6))
步骤2.4再由以上各方向向量、原点坐标、内径r和Line.ByStartPointDirectionLength节点创建对应直线,以备后续创建各原始分界平面:
line1=Line.ByStartPointDirectionLength(origin,vec1,r)
line2=Line.ByStartPointDirectionLength(origin,vec2,r)
line3=Line.ByStartPointDirectionLength(origin,vec3,r)
line4=Line.ByStartPointDirectionLength(origin,vec4,r)
line5=Line.ByStartPointDirectionLength(origin,vec5,r)
line6=Line.ByStartPointDirectionLength(origin,vec6,r)
步骤2.5再由以上各直线和pt1~pt6和Plane.ByLineAndPoint节点创建各原始分界平面:
plane1=Plane.ByLineAndPoint(line1,pt1)
plane2=Plane.ByLineAndPoint(line2,pt2)
plane3=Plane.ByLineAndPoint(line3,pt3)
plane4=Plane.ByLineAndPoint(line4,pt4)
plane5=Plane.ByLineAndPoint(line5,pt5)
plane6=Plane.ByLineAndPoint(line6,pt6)
步骤2.6再由上述平面和List.Join节点创建包含plane1~plane6的列表planes
步骤2.7再由planes、待切割几何体C、端面加宽值d和自定义节点Solid.SplitByPlanes创建planes和几何体C的相交面集合surfaces。其中,端面加宽值为Solid.SplitByPlanes节点的局部变量,为确保能正确求得相交面集合surfaces而设置,该Solid.SplitByPlanes节点的具体设计可参考图11所示,包括如下2.7.1至的2.7.7步骤:
步骤2.7.1首先通过图12所示的自定义节点Surface.ByPlaneSolid计算plane与solid的相交面,包括:先,关于Surface.ByPlaneSolid节点,首先使用Plane.Origin节点获取plane的原点,再使用Geometry.Intersect节点计算solid与plane的相交部分,因为管片环状的几何体与无限大的plane有两个相交面surface,所以需要筛选出正确的分界面。然后,通过Geometry.DistanceTo节点计算plane的原点到两个surface的距离。由此,通过List.SortByKey节点根据距离排序,再使用Code Block节点获得距离最近的surface。
步骤2.7.2再通过图13所示的自定义节点Surface.Zoom将所有相交面放大,确保可以完整切割管片环的几何体,包括:1首先通过Surface.PerimeterCurves节点获取surface的所有轮廓线,再通过PolyCurve.ByJoinedCurves节点将所有轮廓线组成首尾相连的封闭曲线;然后,通过Curve.Offset节点将其向外扩大指定尺寸,最后用Surface.ByPatch节点输出封闭曲线所围成的surface。
步骤2.7.3通过图14所示的自定义节点List.TwoItems,将列表中所有项左移一项,再通过List Create节点将其与原列表组合为一个新列表,再通过List.Transpose节点将新列表的行列转置,得到一个新列表,即为一个列表的所有相邻两项的组合,获得所有相邻的项。
步骤2.7.4通过List.SetDifference节点和List.FirstItem节点获得相邻分界面之外的一个分界面,再使用Surface.Thicken节点将其指定一定厚度,生成一个薄片状几何体,再用Solid.Difference节点将其与管片环状几何体进行布尔运算,得到一个带有小缺口的环状几何体,如图15所示。
步骤2.7.5再通过图17所示的自定义节点Geometry.SplitByOthers用相邻分界面分割2.7.4缺口几何体,得到三段几何体。其具体分割过程如下:
先通过Geometry.Split节点用plane拆分缺口几何体,再使用List.Flatten节点获取拆分后几何体的一维列表,使用List.Count节点获得列表项的数量,再使用List.Combinations节点将列表中的几何体按列表项的数量任意组合,使用List.Deconstruct节点去除该列表组合中的第一项,使用List.FirstItem节点获得该列表组合中的第一项,再使用Geometry.IntersectAll节点获得它们的重叠部分。
然后,使用List.Flatten节点将以上重叠部分的列表变为一维列表,再使用Object.Type节点返回其类型,再用Code Block节点判断其类型是否为"Autodesk.DesignScript.Geometry.Solid",最后使用List.FilterByBoolMask节点筛选出所有重叠部分的几何体。
步骤2.7.6,使用图16所示的自定义节点Geometry.DistanceToAnother计算重叠部分几何体与相邻分界面的距离,但其“连缀”设置为“叉积”。
步骤2.7.7通过Math.Sum节点计算重叠部分几何体与相邻分界面的距离之和,如果距离之和为0,则该几何体在相邻分界面之间,再通过List.FilterByBoolMask节点将其筛选出来,最后通过List.Flatten节点将其变为一维列表。
步骤2.8再由x1、y1、向量(0,0,1)及Plane.ByOriginNormal节点创baseplane;由List.FirstItem获得surfaces集合的第一项surface1,由surface1、baseplane、裕度角β及Geometry.Rotate节点将surface1绕baseplane转动β角度,通过Surface.NormalAtParameter节点获得转动后的surface1的法向量,再通过Geometry.Translate节点将surface1沿该法向量方向移动L/2的距离,通过Geometry.Intersect节点求得surface1和几何体C的相交面,再通过Surface.PerimeterCurves节点获得该相交面的轮廓线,通过Curve.PointAtParameter节点和Point.Z节点获得各轮廓线的中点Z坐标,再通过List.SortByKey节点根据Z坐标大小将各轮廓线排序,再通过List.LastItem获得上部轮廓线;类似的方法可以获得下部轮廓线,此时上部轮廓线和下部轮廓线的水平距离为L。再通过Curve.StartPoint节点、Curve.EndPoint节点和Line.ByStartPointEndPoint节点将上部轮廓线转换为直线,通过Curve.PointAtParameter节点获得下部轮廓线的中点,再通过Plane.ByLineAndPoint节点、上部轮廓线、下部轮廓线的中点创建平面,这个平面是plane1的最终位置。接着通过Geometry.Mirror节点和Plane.YZ节点将plane1镜像生成一个平面,这个平面是plane2的最终位置。
步骤2.9通过List.DropItems节点剔除planes集合中的前两项,再通过List.Join节点将最终位置的plane1、plane2和剔除前两项的planes组成新的planes集合,这个集合包含所有最终位置的分界平面。再通过Solid.SplitByPlanes节点、planes对几何体C进行划分,获得图5所示的各管片的基本形状的集合solids和管片划分平面的集合originsurfaces。
第三步,输入由Revit轮廓族承载的环缝、纵缝信息,在各分界面处及管片环纵向前后端面创建环缝和纵缝实体。
该第三步的具体实现过程如下:
步骤3.1用“公制体量”族样板新建纵缝和环缝轮廓族,保存为“纵缝、环缝轮廓族”,根据尺寸参数绘制图6所示轮廓,并将轮廓族载入到管片族中。
步骤3.2由集合originsurfaces中的端面计算出端面顶部和底部交线的中点,原理与步骤2.8相同。
步骤3.3为确保端面顶部交线的方向由内向外,需要进行判断调整。使用Curve.StartPoint节点获得顶部交线的起点,再用Point.ReplaceZ节点将其Z坐标改为0,再使用Geometry.DistanceTo节点计算其与原点的距离。再与r/2比较大小,如果距离大于r/2,就将顶部交线的方向反转,实现代码在图20所示的Python Script节点中完成。
步骤3.4计算上表面平面,这些平面是纵缝轮廓所在平面。使用Curve.TangentAtParameter节点、Curve.NormalAtParameter获得上部交线中点处的切向量、法向量,再由Vector.X、Vector.Y、Vector.ByCoordinates和Plane.ByOriginXAxisYAxis节点创建纵缝轮廓所在平面,最后用Plane.ToCoordinateSystem节点将这些平面转换为对应的空间坐标系。
步骤3.5使用自定义节点curveGroups.TransformNewCsByFamilyType和FamilyTypes节点创建各平面处的纵缝轮廓,其中Family Types节点中的族设置为“纵缝、环缝轮廓族”。参考图18,自定义节点curveGroups.TransformNewCsByFamilyType可设置为具体按照以下方式运行:
步骤3.5.1,首先通过FamilyInstance.ByPoint节点将轮廓族放置在原点处,再通过Element.Curves节点获取轮廓族中的所有轮廓线。
步骤3.5.2,再通过自定义节点“筛选闭合多边形”以图19所示方式配合PolyCurve.ByJoinedCurves节点将所有轮廓线组成首尾相连的封闭曲线。
步骤3.5.3,再通过CoordinateSystem.ByOrigin节点和原点创建原始坐标系,再通过Geometry.Transform节点将封闭曲线从原始坐标系转换到目标坐标系。
步骤3.6,将步骤3.3中的顶部和底部交线的中点连线作为纵缝的放样路径,使用Line.ByStartPointEndPoint节点创建这些路径,为确保所有纵缝能完整切割管片环,使用Curve.ExtendStart节点和Curve.ExtendEnd节点适当延伸纵缝放样路径。
步骤3.7,使用Curve.SweepAsSolid节点将步骤3.5中的纵缝轮廓沿着步骤3.6中的放样路径进行放样操作,得到所有纵缝实体。
步骤3.8,使用Curve.Offset节点和步骤1.4中的上表面外椭圆获取上表面中心椭圆,再用Code Block节点获取步骤2.7surfaces集合中的第四项surface,使用Geometry.Intersect节点计算其与上表面中心椭圆的交点,再用Surface.NormalAtPoint节点和Plane.ByOriginNormal节点生成一个平面,再用Geometry.Rotate节点将此平面绕自身转动180度,再用Plane.ToCoordinateSystem节点将其转换为空间坐标系。
步骤3.9,使用自定义节点curveGroups.TransformNewCsByFamilyType节点和步骤3.8中空间坐标系生成上表面环缝轮廓
步骤3.10,使用Curve.SweepAsSolid节点将步骤3.9中的环缝轮廓沿着步骤1.4中的上表面外椭圆进行放样,获得上表面的环缝实体
步骤3.11,使用Plane.Offset节点将Z=0平面偏移D/2的距离,得到Z=D/2水平面,再用Geometry.Mirror节点将步骤3.10上表面环缝实体关于Z=D/2平面对称,生成下表面环缝实体。
第四步,输入纵向手孔、环向手孔、注浆孔的形状信息(形状信息包含在sat格式的文件中)、数量和位置,自动计算出各手孔和注浆孔的具体位置。
该第四步的具体实现过程如下:
步骤4.1,根据步骤2.1中的Θ1~Θ6计算注浆孔位置,注浆孔位于管片中心高度Z=(D+d)/2半径为r/2的圆环上,同时与x轴的夹角分别为(Θ1+Θ2)/2、(Θ2+Θ3)/2、(Θ3+Θ4)/2、(Θ4+Θ5)/2、(Θ5+Θ6)/2、(Θ6+Θ1+360°)/2,则绕Z=0平面转动角度为以上角度减去90°。
步骤4.2,使用File Path节点打开包含注浆孔几何信息的sat文件,再使用Geometry.ImportFromSAT节点创建注浆孔几何体,使用Geometry.Translate节点将注浆孔几何体偏移到Z=(D+d)/2的位置,再使用Geometry.Rotate节点将注浆孔几何体按4.1的转动角度绕Z=0平面转动,获得注浆孔的所有位置。
步骤4.3,使用File Path节点打开包含纵向手孔几何信息的sat文件,再使用Geometry.ImportFromSAT节点创建纵向手孔几何体,使用Geometry.Rotate节点将其绕Z=0平面依次旋转0°、30°、60°、90°、120°、150°、180°、210°、240°、270°、300°、330°,生成下半部分的纵向手孔几何体,再使用Geometry.Translate节点将下半部分纵向手孔偏移到Z=D+d的高度,创建上半部分的纵向手孔,再使用List.Join节点组合上下所有纵向手孔为新的集合。
步骤4.4,环向手孔中心与中心平面间的距离为H,使用File Path节点打开包含环向几何信息的sat文件,再使用Geometry.ImportFromSAT节点创建环向手孔几何体,再使用Geometry.Translate节点将环向手孔移动至Z=(D+d)/2±H处。
步骤4.5,计算环向手孔中心所在的内圆曲线,Circle.ByCenterPointRadius节点创建圆心为原点,半径为r/2的圆,再使用Geometry.Translate将其移动至Z=(D+d)/2±H处。
步骤4.6,使用Geometry.Intersect节点计算步骤2.9中originsurfaces与4.5中环向手孔所在圆曲线的交点,使用Point.ReplaceZ将其Z坐标设置为0,使用Line.ByStartPointEndPoint节点创建由原点指向这些点的直线,由Line.Direction节点获得这些直线的方向向量,再通过Vector.AngleAboutAxis节点计算这些方向向量绕Z轴与Y轴的夹角。
步骤4.7,使用Geometry.Rotate节点将步骤4.4中的Z=(D+d)/2±H处的环向手孔绕Z轴转动步骤4.6中的夹角,获得所有环向手孔的几何体,再使用List.Flatten节点获得这些几何体的一维列表。
第五步,判断各管片与所有手孔、注浆孔、环缝和纵缝是否存在空间上的重叠,对具有重叠关系的管片和手孔、注浆孔、环缝和纵缝进行匹配。
该第五步的具体实现过程如下:
使用List.Join节点将所有纵向手孔、环向手孔、注浆孔、环缝、纵缝的几何体组合为一个新的列表,使用Geometry.DoesIntersect节点判断他们和2.9中的solids是否相交,用List.FilterByBoolMask节点筛选出与solids具有相交关系的所有纵向手孔、环向手孔、注浆孔、环缝、纵缝的的组合。
第六步,对匹配的管片和手孔、注浆孔、环缝和纵缝进行布尔运算,实现各管片的开孔,完成图7以及图8所示整个管片环的创建。
该第六步的具体实现过程如下:
使用Solid.DifferenceAll节点,将步骤2.9中的solids与5.1中具有相交关系的所有纵向手孔、环向手孔、注浆孔、环缝、纵缝的的组合进行布尔运算,用solids减去与这些纵向手孔、环向手孔、注浆孔、环缝、纵缝的公共部分,得到最终的各个管片。
第七步,将管片环实体导出到Revit族文件,供后续拼装隧道区间使用,同时将其导出SAT格式的中间文件。
该第七步中具体使用ImportInstance.ByGeometry节点导出第六步中的管片几何体,保存“管片族.rfa”,同时使用Geometry.ExportToSAT节点将管片几何体导出为“管片数据.sat”的文件,供后续在Inventor中出图使用。
第八步,在Inventor软件中打开上述“管片数据.sat”文件,可选择任意管片或整个管片环进行投影和剖切操作,以创建投影视图和剖切视图。此外,对于个别特殊视角的投影视图,可通过Dynamo程序将管片环调整到合适角度,再重复7、8两步操作即可。
该第八步的具体实现过程如下:
步骤8.1从“文件”选项卡下拉选择“打开”,选择“导入CAD文件”,在新窗口中选择“管片数据.sat”文件后打开,可观察到与Dynamo中一致的管片实体
步骤8.2从“文件”选项卡下拉选择“新建”,选择“工程图”,生成iam格式保存对应于整个管片环实体,生成ipt格式保存相应各管片的实体。
步骤8.3点击“投影视图”即可创建基础视图的各方向投影视图,如图8或图9。
第九步,在各投影视图和剖切视图可在Inventor中标注和注释,获得图10。
第十步,将上述视图导出为dwg格式的图纸,可在AutoCad中进一步调整线型、图层等设置,获得完整二维图纸。
由此,本发明通过Revit、Dynamo及自定义节点和Inventor软件进行参数化设计,能够根据设计参数构建复杂模型,保证各类型盾构管片均能够满足盾构隧道结构的实际变化,并精准表达设计思路和意图。本发明利用BIM技术的参数化和正向设计优势,相较于传统二维设计方式,本发明这种基于BIM的盾构管片参数化设计方法可以更为迅速、准确地获得精确的盾构管片二维图,有效提高出图效率和准确程度。
以上仅为本发明的实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些均属于本发明的保护范围。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:一种整车轮胎匹配方法及装置