APP下载

桥梁墩柱钢模板的SolidWorks参数化建模及出图方法

2022-11-30胡延平殷宝连吴城玉王鑫磊

关键词:钢模板工程图视图

胡延平, 殷宝连, 吴城玉, 王鑫磊

(合肥工业大学 机械工程学院,安徽 合肥 230009)

随着我国建设步伐的加快,工程桥梁在城市交通中的作用日益凸显。钢模板作为建筑工程中不可或缺的重要施工工具,被广泛应用在城市交通、公路、铁路等各个重要工程中[1]。由于钢模板属于订制产品,同种类型钢模板存在不同规格尺寸的结构特征,因此,对钢模板的设计可采用参数化设计[2],以加快图纸的设计速度,提高钢模板的设计效率。

近年来各领域很多学者借助不同的商业软件进行参数化设计研究,相继取得了一定的研究成果,如文献[3]将HyperWorks软件应用于参数化有限元分析平台的研究。但目前国内外大多数学者对钢模板的参数化设计建模与出图的研究很少涉及,对其建模与出图的方法更是缺少详细的说明。基于此,本文将Visual Studio 2010作为开发平台,借助C++开发语言,在SolidWorks软件二次开发的基础上,对桥梁墩柱钢模板参数化建模过程与自动出图方法进行研究,并以桥梁圆墩钢模板为实例进行具体演示,详细说明改变参数完成零件参数化建模和自动出图的方法及关键技术,实现桥梁墩柱钢模板的参数化建模与工程图纸生成。

1 桥梁墩柱钢模板参数化建模

基于Solidworks的参数化建模主要有2种设计方式:一种是完全编程技术,由设计者根据实际需求,通过程序代码编译生成符合用户要求的零件模型,模型完全由编写的程序驱动生成,此技术每输入一次模型参数,程序就要重新驱动建立相应的模型,严重降低开发效率;另一种是将零件制成三维模型模板,通过更改模板相应的尺寸,在保证零件结构不发生变化的前提下,利用软件提供的应用程度界面(application programming interface,API)编程接口来驱动该模板,称为尺寸驱动技术[4],但是该技术只适用于固定零件特征,对特征随型变化的模型无效。

基于此,本文结合2种技术的优缺点,首先利用尺寸驱动技术思路将事先建立的模板保存并将保存路径输入到SolidWorks函数的打开文件函数OpenDoc6中,以实现模板文件的调用;然后借助于编程技术控制模板模型特征随型生成;最后通过尺寸驱动模型尺寸参数完成建模。打开函数OpenDoc6各参数的含义见表1所列。

表1 SldWorks->OpenDoc6各参数说明

1.1 模板的创建

模型模板质量的好坏直接影响整个参数化设计的结果,因此,创建符合参数化设计要求的钢模板就显得尤为重要。

由于钢模板结构存在多个重复特征(如三角肋、法兰孔、纬(经)肋等),在创建这些特征时,需要先创建首个特征,再依据该特征阵列生成多个特征(下文将此类特征称作源特征)。然而,随着模型参数的变化,源特征的位置不能随之动态调整,致使肋板和特征孔不能依次对称排布,造成部分特征的丢失,进而引发应力集中或者因强度不足发生断裂的问题。因此以纬肋为例,采取如图1a、图1b所示的创建方案来确定源特征排布方式,即在钢模板高度的1/2处,按纬肋个数奇、偶数分别创建源特征;然后创建钢模板其余特征,并选定初始模板参数完成对钢模板模型的创建操作。

图1 肋板设计排布图

1.2 模板的预处理

为了保证参数化设计后模型的合理性,应对模板进行预处理操作。模板预处理主要是对钢模板模型中需要修改的相关尺寸进行约束和参数关联[5],即在建模时充分考虑添加合理的约束,实现参数的全约束,以保证尺寸改变后模型的联动效果。实现参数化钢模板模型参数全约束不仅要求所建草图完全定义,还要确保各个独立的尺寸参数之间建立必要的关联,可以通过软件中的方程式功能完成尺寸关联,方程式形如“因变量”=“自变量”。

以圆墩钢模板为例,在添加方程式前,应对圆墩钢模板结构进行仔细分析,充分考虑面板、横(圆)法兰、竖法兰、三角肋、纬肋与经肋之间相互配合关系,以保证相关尺寸发生改变时对应钢模板模型不会发生重建错误。

1.3 特征随型智能排布设计

不同于其他零件结构,桥梁墩柱钢模板随着尺寸参数变化,零件模型不再是简单的尺寸更替,随之变化的还有零件特征在数量上的增加或减少。为此,研究出一种特征随型智能排布设计的方法。以圆墩钢模板为例,圆法兰上的特征排布可按照定角度阵列排布实现,此处不作赘述。本节重点研究竖法兰上特征的随型智能排布法。

该特征随型智能排布方法基于方程式、模型、代码程序三者展开设计。将经过模型预处理得到的模板通过特征压缩函数EditSuppress2与特征解压函数EditUnsuppress2实现单一控制奇、偶纬肋源特征的压缩与解压,以达到随着圆墩高度改变特征随型变化的“开关效果”;运用SolidWorks中的定距阵列功能在钢模板高度的H/2处左右阵列源特征,记录阵列数,再通过程序控制阵列数即可控制排布特征的个数,阵列数的具体数值可通过程序代码智能计算得出;最后在竖法兰上最靠近圆法兰的孔、三角肋、纬肋之间或三者与圆法兰之间发生干涉的情况设置条件控制,编写防干涉代码。至此,整个模型搭建完成,当用户在交互界面输入模型参数后,系统会智能识别用户输入的数据,对模板初始参数自动更新,并将这些数据写入控制对应特征的程序中,进一步控制特征按照指定的尺寸参数智能排布模型特征,完成特征随型智能排布设计。

特征随型智能排布设计具体流程如图2所示。

图2 特征随型智能排布设计流程

1.4 交互接口技术

为了满足用户对软件二次开发的需求,SolidWorks软件公司提供了强大的API应用程序开发接口,接口中的函数为开发者直接访问软件带来极大的便利。开发者通过该接口支持的开发工具(如VC++、VBA、VB等)对SolidWorks函数进行调取使用,进而拓展软件的功能。软件二次开发有2种开发模式:一种是使用OLE方式开发,借助生成的*.exe文件调用软件中的功能,然而这种技术无法集成到软件系统中去;另一种模式是生成动态链接库(dynamic link library,DLL)文件,加载和调用这个DLL文件就可以实现软件的二次开发,即以插件的形式进行开发。第2种模式实现方式可以与原开发对象程序共享同一个进程,大大节省了内存[6-8]。因此,本文选用以生成插件的形式进行二次开发。

采用第2种模式进行二次开发之前,需要先将该技术与软件的开发接口完成搭建。搭建方法主要有工程向导、ATL对象向导等。由于工程向导搭建方法已经被淘汰,本文主要阐述ATL对象向导。随着VS版本的不断升级,目前以采用由ATL向导开发的SolidWorks COM Addin向导来搭建接口用户只需安装SolidWorks API SDK工具包即可完成接口搭建,至此可对软件进行二次开发[9]。编好程序代码后,对该项目进行编译生成“.dll”文件,在SolidWorks 2019中加载即可进行参数化设计。

1.5 尺寸参数的设计与修改

模板要实现参数化建模,零件的主要尺寸参数就必须可供用户修改,因此,调用软件中的API函数并设计人机交互界面来完成。编程方法可以通过在配置中设置钢模板的各个参数来更改零件的尺寸值,以实现钢模板的参数化设计功能。具体方法是将钢模板中需要用户提供的可变化的尺寸参数包含到配置管理器中,通过软件的二次开发接口,对配置管理二次开发,完成整个模型的参数化建模设计[7]。

本文通过调用ISetConfigurationParams函数来设置配置中的参数值,该函数的各参数说明见表2所列。

表2 ConfigurationManager->ISetConfigurationParams参数说明

2 自动生成工程图

2.1 自动生成工程图方法

自动生成工程图的方法有2种:一种是通过调用软件的API函数生成对应工程视图,再对工程图进行尺寸标注等操作,该方法程序编程量很大且要求开发人员能熟悉调用软件中的API函数;另一种是借助软件提供的全相关性,借助零件模板建立工程图模板,当三维模型零件更改时,自动更新工程图尺寸,完成自动出图操作[4]。基于此,本文选择用第2种方法。然而在创建时因为软件中自带的一些国标模板的图纸格式常不符合用户的图纸要求,所以在建立工程图模板前通过对图层设置、图纸属性等操作自行设计工程图图纸格式并保存,使图纸模板达到工程实际要求。选择保存的工程图纸,从三维模型中创建工程图模板即可。

2.2 工程图纸的优化

由于软件是借助建立好的零件模板生成工程图,当模型零件的尺寸参数发生改变时,相应的工程图也会随之发生改变,使得模型出现视图比例不合理、尺寸混乱等现象。基于此,本文针对此类现象作进一步研究。

2.2.1 视图比例调整

智能调整视图比例的主要思路是将变化后的包络线框的对角线长度等于变化前的长度,借助粒子群算法,仿照鸟群觅食的行为,使得群体达到最优的方法,进而获得最优的视图比例值。确定适应度函数为:

(1)

其中:n为工程视图的数量;Dk、Dk′分别为尺寸变化前、后的对角线长度值;c、c′分别为图纸更新前、后的视图比例。适应度函数F(c′)越大,尺寸变化前、后包络线对角线长度越接近,由此调整视图比例转化为求解函数F(c′)最大值问题。

具体方法是:先调用GetOutline函数得到视图包络线框对角线的2个顶点,借助程序计算该对角线的长度;接着确定粒子群的规模为5个粒子,区间范围在1~100,定义粒子的位置和速度;通过(1)式评价每个粒子的适应度,获得个体和群体历史最优解;不满足条件时,通过更新粒子位置和速度来更新种群,继续返回算法中。更新粒子的公式[10]为:

Vi=ωVi+c1r1(pbesti-Xi)+

c2r2(gbest-Xi)

(2)

Xi=Xi+Vi

(3)

其中:Xi、Vi分别为第i个粒子的位置和速度;ω为惯性权重;c1、c2为学习因子;r1、r2为[0,1]区间的随机数;pbesti为第i个粒子的历史最优位置;gbest为粒子种群最优位置。智能视图比例调整流程如图3所示。判断所用算法是否满足最大迭代次数或适应值阈值来进行继续或终止的操作,进而得到最优解,最后通过调用ScaleRatio函数设置计算得来的最优视图比例。

图3 视图比例调整流程

2.2.2 尺寸智能标注

由于SolidWorks软件是借助建立好的三维模型投影生成工程图,可以先通过调用AddDimension2函数在零件模板的对应模型特征上标注相应尺寸,设置选项“为工程图标注”,并合理设置尺寸标注的位置参数。尺寸标注完成后,系统通过在工程图中识别对应特征,借助InsertModelAnnotations3函数自动将模型尺寸从零件中插入到工程视图中的相应位置,此方法很好地规避了尺寸不随型和尺寸导入凌乱的问题,从而得到正确的工程图纸。

2.2.3 注释的优化调整

模型完成建模后,在工程图中标注符合企业图纸标准的注释是非常必要的。注释主要是对技术要求、焊接符号等进行注解说明。目前对注释位置调整主要是先利用DAT文件保存工程图模板中的注释信息,再将这些信息进行计算,提取出注释的相对位置信息,最后将注释对应在合理的位置上。但该操作较为复杂且易出错,因此,通过标注约束元的方法将注释与零件的边线添加约束,使其位置相对于零件边线保持固定不变。

具体操作是在一个新建图层中添加草图点,并使其完全约束,再在其附近添加注释,设置相关属性,添加两者之间的约束即可。对于焊接符号的约束元,则是由箭头所指的零件边线,当焊接符号指向零件边线时,约束完全定位,从而达到注释位置不会随模型变化而改变的效果。

3 实 例

以桥梁墩柱的圆墩钢模板为例,具体阐述零件实现参数化建模与自动出图的全过程。圆墩钢模板的三维模型(初始化尺寸)如图4所示。

图4 圆墩钢模板三维模型

为方便程序更好地控制零件对应的尺寸参数,通过软件自带的方程式查看并编著需要修改的尺寸参数对象的名称,如“圆墩半径@草图1”,以便后面查询与修改。在进行二次开发前,应确保SolidWorks已经与Visual Studio 2010完成环境的搭建操作。首先,在项目中创建一个非模态对话框,以便用户可以在当前对话框时与其他窗口之间进行切换;然后编辑对话框中的内容,根据用户提供的模型尺寸参数,向对话框添加相应的控件,并添加对应的字符串变量。对话框界面效果如图5所示。

最后添加事件响应函数按钮,将按钮名称改为“生成三维模型”,并在该函数内部添加控制尺寸变量的代码。代码编写结束后,用户编辑框中输入相关参数值,点击“生成三维模型”按钮即可完成对圆墩钢模板的三维参数化建模。实现修改尺寸零件参数化建模功能的部分代码如下。

CComBSTR fileName(-T("C:\***\圆墩参数化模板.SLDPRT"));//定义文件名

iSwApp-dlg->OpenDoc6(filename,swDocPART,Options,NULL,&Errors,&Warnings,&swDoc)//打开文件

CComBSTR Name(-T("默认"));//定义配置名

long paramCount=25;//定义修改尺寸参数个数

BSTR *paramNames=new BSTR[25];//初始化

BSTR *paramValues=new BSTR[25];//初始化

CString a0="圆墩直径@草图1";//定义参数名

CString a1="圆墩高度@拉伸-薄壁1";//定义参数名

pConfigurationManger->ISetConfigurationPara-ms(Name,paramCount,paramNames,paramValues,&retval);//设置参数值

m-iModelDoc->ViewZoomtofit();//调整视图全屏显示

pConfigurationManger.Release();//释放配置器

swDoc=NULL;//释放ModelDoc对象

图5 对话框设计效果图

零件修改尺寸参数的程序搭建完成后,只需对零件中随参数变化而改变的特征添加关键代码即可控制零件特征合理排布及正确显示。对该类模型特征数量或距离定义参数名,形如特征数量定义“int num0=0”、特征距离定义“double numM=0.0”,以便用代码设置条件加以控制特征的生成。特征智能排布设计部分关键代码如下:

//判断肋板个数及识别肋板奇偶数代码

int cnt;//肋板个数

intk=(int)(h-2 *t2);//h为圆墩高度t2为圆法兰厚度

if (k% 400 !=0)//肋板间距定为400 mm

{

cnt=(int)(k/400.0);

}else{

cnt=k/400-1;

}

if (cnt % 2==0)//如果纬肋个数为偶数

{//压缩奇数肋,解压偶数肋

swDocExt->SelectByID2("旋转4",L"BODYFEATURE",0.0,0.0,0.0,VARIANT-FA-LSE,0,NULL,swSelectOptionDefault,&bRetval);//选中奇数肋特征“旋转4”

swDoc->EditSuppress2(&bRetval);//对特征“旋转4”压缩

//压缩偶数三角肋,解压奇数三角肋

}

//特征防干涉部分代码(以阵列孔为例,阵列孔数量参数名为num3)

If (h/2 000.0-0.1-0.2*(num3-1)≤0.05)

{

num3-=1;//阵列孔与尾孔发生干涉减少1个阵列孔

}

点击“生成工程图”按钮,系统自动调取工程图模板,通过智能识别交互界面的模型参数,完成自动更新,模板图纸自动完成工程图出图,图纸效果如图6所示。

图6 工程图出图效果

自动出图及优化部分代码如下。

//打开工程图关键代码

CComBSTR fileName(-T("C:\***\圆墩参数化模板.SLDDRW"));//定义文件名

iSwApp-dlg->OpenDoc6(fileName,3,0,L"",&Errors,&Warnings,&m-iModelDoc);//打开工程图模板

//调整视图比例几个关键代码

pDraw->ActivateView (-T("工程图视图1"),&retval);//激活工程视图

pDraw->get-IActiveDrawingView(&pView);//获取工程视图

pView->IGetOutline(outline);//获取包络线框数组

pView->get-IScaleRatio(scal);//获取当前图纸比例

pView->put-IScaleRatio(scal);//设置图纸比例

4 结 论

本文介绍了一种以Visual studio 2010为开发环境、C++为开发语言、SolidWorks 2019为特征建模软件,针对工程桥梁墩柱钢模板设计的参数化建模及出图方法。通过对桥梁圆墩钢模板实例的具体演示,详细阐述了修改参数实现特征随型参数化建模与自动出图的方法及关键技术。通过该方法设计的参数化建模平台能够实现根据用户输入自动更新模型参数、智能排布,能够自动生成二维工程图纸,使得同类型钢模板的设计难度降低,大大缩短设计周期,提高了系列化三维桥梁墩柱钢模板的设计效率,具有一定的研究与借鉴意义。

猜你喜欢

钢模板工程图视图
仰斜式挡墙单侧钢模板安装工艺探究
建筑工程中的玻璃钢模板施工研究
“3+4”人才培养模式下本科阶段“工程图学”课程的优化设计
超高大截面矩形独立柱组合钢模的应用
面向工程认证的机制专业工程图学(一)课程教学探索
分析三维CAD建模技术在工程图学中的应用
钢底模在沉箱预制中的应用
5.3 视图与投影
视图
Y—20重型运输机多视图