从图中可以看出,一块典型的横隔板构造由如下几部分构成。
(1)横隔板主体,实腹式,需开主梁顶底板加劲肋的通过孔、人孔且与大横梁拼接板相交位置断开。
(2)T形加劲
肋,用于在较大的横隔板区格提供足够的面外刚度,设置T肋的标准定为:横隔板区格竖向高度大于8m时,需要设置横向T肋;横向宽度大于6m时,需要设置竖向T肋。
(3)普通加劲肋,分为横向和竖向,设置原则是普通加劲肋横、竖向间距均为1m或以下。
(4)大横梁上下翼缘拼接板,如图2所示,一端对接主梁间大横梁的上下翼缘,另一端与横隔板上的加劲肋对接,属于传力构件,需要在与横隔板其他构件相交时保持连续。
(5)人孔加强圈,每个箱室内横隔板均需要开一个人孔,人孔周边需设置局部加劲作用的加强圈。
下面就以上述确定的构造为基础,介绍在CATIA中建立模板和批量实例化的方法。
主梁横隔板的特点使其很适合模板化建模,首先,所有的横隔板有大量公用的生成条件,并且各个横隔板参数的变化有统一的规则。进一步观察发现,横隔板作为一个整体,其生成条件和参数都过于繁多,而将其按照上文所述拆分成为不同的部件,分别建立各个部件的模板,而后将它们像“搭积木”一样组装起来,便能形成一块完整的横隔板。图3中,上图展示了主梁顶板、腹板面和横隔板定位面等前提条件,下图中第一排从左至右依次为大横梁下翼缘拼接板、大横梁上翼缘拼接板、人孔加强圈(含减去体)、横向板肋;第二排为竖向T肋、横向T肋、横隔板主板、竖向板肋。
横隔板各个部件在相交时连续性的优先级不同,出于精细化设计的考虑,在组装横隔板的过程中,不能简单地堆砌相互独立的部件,也不能将所有的部要理清横隔板各部件复杂的相贯关系,需要首先确定它们的连续性优先级。根据上文分析,结合结构受力和构造要求,确定连续性优先级如下:生成条件(主梁各腹板、加劲肋通过孔等)-大横梁上下翼缘拼接板(人孔加强圈同级)-横隔板主体-横向T肋-竖向T肋-横向板肋-竖向板肋。
其次,按照连续性优先级顺序生成一个部件时,若依次减去与之前所有部件的相交部分,操作非常复杂容易出错,且不符合线性的程序化思维。因此,想到建立一个独立于各个部件的“减去体”,每个部件实例化时都对“减去体”进行更新,令“减去体”内包含所有比此步骤实例化部件级别高的所有部件。将上述分析总结成程序化流程如下图5所示,图中横向观察,第一行中间输入条件和参数左右分别为模板以及模板生成的实体,下部的七个横行为各步骤的模板与“减去体”做布尔减运算生成最终结果的过程。纵向观察,第一列为各个模板的判定和生成;第二列为模板做布尔减运算时的减去体,从上到下为减去体依次更新的过程;第一列模板作为被减数,第二列作为减数,通过布尔减运算得到第三列最终的生成结果。件融合成一体,而是要考虑各个部件的组装顺序,真实地反映出部件间的相互关系。
全桥共有三百余块横隔板,若均使用手动实例化组装的方法,带来的工作量是不可接受的,因此需要实现模板自动批量实例化。 CATIA实现模板批量实例化的方法有两类,一是软件自带功能,包括“知识工程顾问(KA)”模块中的Loop循环和“产品知识模板(PKT)”模块中的知识工程阵列;二是使用CATIA的二次开发语言实现,包括基于VBScript的Automation和基于C++的CAA Rade。本工程中使用VBScript实现横隔板的批量实例化。 关于VBScript的语法规范以及CATIA中API的使用方法可以参考相关的书籍资料,或者CATIA自带的Automation帮助文档进行学习。 模板批量实例化的程序总计一千余行,由于篇幅限制,在文中仅粘贴具有代表性的人孔加强圈实例化以及减去体更新的过程作为参考。 '……………省略变量声明和赋值等内容For i = 1 To CountHGBPlane '主循环'…………….省略部分生成过程 '************开始生成人孔加强圈************ Set JiaQiangQuan(i) = bodies1.Add JiaQiangQuan(i).Name = "加强圈" & i '$加强圈实体名称,后续为出图引入统一编号$ part1.Update part1.InWorkObject = JiaQiangQuan(i) '加强圈实体生成 For j = 2 To 11 Set VIntersection(i, j) = hybridShapeFactory1.AddNewIntersection(VIntersection(i, j), ManHoleSurf) part1.Update Next j '将腹板与横隔板面交线生成与人孔高度定位面交点,VIntersection(i, 2)~VIntersection(i, 11)由交线变为交点 For k = 1 To 5 part1.InWorkObject = JiaQiangQuan(i) Set ManHoleLocate(k) = hybridShapeFactory1.AddNewPointBetween(VIntersection(i, 2 * k), VIntersection(i, 2 * k + 1), 0.5, 1) hybridBody2.AppendHybridShape ManHoleLocate(k) ManHoleLocate(k).Name = "人孔定位点" & i & "-" & k part1.Update '加强圈实例化开始 InstanceFac1.BeginInstanceFactory "JiaQiangQuanSolid", "C:\Users\Administrator\Desktop\主梁横隔板\Template\JiaQiangQuanTemplate.CATPart" '$模板地址$ InstanceFac1.BeginInstantiate InstanceFac1.PutInputData "加强圈平面", HGBPlane(i) InstanceFac1.PutInputData "加强圈定位点", ManHoleLocate(k) InstanceFac1.PutInputData "正向点", PositivePoint Set JiaQiangQuanSolid(i, k) = InstanceFac1.Instantiate JiaQiangQuanSolid(i, k).Name = "加强圈" & i & "-" & k InstanceFac1.EndInstantiate InstanceFac1.EndInstanceFactory part1.Update '加强圈生成完成,开始更新减去体*************** part1.InWorkObject = hybridBody2 Set JQQToBeRemoved = JiaQiangQuanSolid(i, k).GetOutputFromPosition(1) Set JQQToBeRemoved = hybridShapeFactory1.AddNewTranslate(JQQToBeRemoved, dirx, 0#) JQQToBeRemoved.VolumeResult = True Set ToBeRemoved = shapeFactory1.AddNewVolumeAdd(ToBeRemoved, JQQToBeRemoved, 4) ToBeRemoved.Name = "减去体" & i & "加加强圈" & k part1.Update Next k'减去体更新完成******************************************…………….’省略其余的实例化过程Next ipart1.UpdateEnd Sub使用上述模板和VBScript最终可以完成所有主梁横隔板的生成
|