最新新闻
我要投稿
联系电话:027-87592219/20/21转188
投稿邮箱:tb@e-works.net.cn
您所在的位置:首页 > 智库 > 智能装备

基于CATIA二次开发的翼面结构参数化设计

发布时间:2014-01-10 作者:曲楠 韩庆 钟小平  来源:万方数据
为解决翼面结构参数化设计的问题,研究了翼面结构各组成元件的个数、位置、截面尺寸参数化描述的方法。文章基于这些参数研究如何通过CATIA二次开发方式自动生成翼面结构三维图以及从总体模型获取机翼外形参数。在对翼面结构参数化描述的基础上,应用Visual Studio环境下CATIA二次开发技术,结合VB和C++语言混合编程,实现翼面结构的参数化设计。

  2.2 机翼平面参数及翼型数据的读取

  考虑到某些CATIA的接口函数使用安全数组作为形参,而使用C++语言Automation做二次开发时不清楚如何构造相应的安全数组,且VB语言中安全数组的使用方法实现起来较为简单,故使用VB语言编写可以读取总体模型信息的动态链接库(DLL),使用C++调用的方式实现模型读取功能。

  程序首先利用曲面设计下的AddNewlntersection()函数来剖分修型后的飞机总体模型机翼段,得到能够描述翼型样条曲线的控制点,然后将这些点拆分、重命名,再按名字查找特征并读取点的坐标值。按名字查找特征时不能使用FindObjectByName()函数,它不适用有特征重名的情况,应使用

  CATIA.ActiveDocurnent.Selectio n_Search"Name=obj.1,all"方法。

  获取机翼某段翼肋剖面上点的类型和个数的方法为:

  CATIA.ActiveCbcmnent.Selection.Search

  (PointName)

  NmnOfpointsSelected=selectionPoint.Count2

  Set selectedElementl=selectionPoint.Item2(1)

  DetectPointType=selectedElementl.Type()

  用TheSPAWorkbench.GetMeasurable方法获取前缘后掠角

  获取机翼某段翼肋剖面上的HbridShapePointCoord类型点坐标的方法为:

  Set SelectedPbint(i)=CATIA.ActiveDocument.

  Selection.Item2(i+1).Value

  SelectedPoint(i).GetCoordimtes CoordTmp

  2.3 翼面结构模型的参数化创建

  创建CATIA应用的代码如下

  HRESULT hr=S_OK;

  Hr=m _CATIA.GetActiveObject("CATIA.Application");

   if(FAILED (hr)){

   hr=m CATIA.CreateInstance("CATIA.Application");

    )

   建立CATIA绘图环境,新建Part,启用混合设计的过程是:

   DocumentsPtr documents_WStru;

   documents_WStru=m_CATIA→GetDocuments();

   BSTR AddPart=_com_util::ConvertStringToBSTR("Part_WStru");

   PartDocumentPtr partDocument_WStru;

  partDocument_WStru=documents_WStru→CatiaAdd(&AddPart);

   PartPtr WingStru=partDocument_WStru→GetPart();

   WingStru→CatiaUpdateObject(hybridBodySkin);

   将绘制翼面结构的梁、长桁、蒙皮、翼肋所用到的点、线、面几何特征分别放在相应几何图形集下,例如蒙皮几何图形集的创建方法为:

   HybridBodiesPtr hybridBodiesSkin=WingStru→HybridBodies;

   HybridBodyPtr hybridBodySkin=hybridBodiesSkin→CatiaAdd();

   BSTR SkinName=_com_util::ConvertStringToBSTR ("SkinDatum");

   hybridBodySkin→PutName(&SkinName);

   WingStru→CatiaUpdateObject(hybridBodySkin);

   需要说明的是,在草图平面创建样条线时需要创建安全数组。在安全数组中存储控制点类型的指针,然后用CreateSpline()函数创建样条线,再用InsertControl-PointAfter()方法把ControlPoint2D类型的点附加到样条上。还可以用AddNewSpine()方法直接创建空间曲线。利用这两种方法生成的样条曲线都能通过loft命令生成代表蒙皮的厚曲面,蒙皮可沿展向分段变厚度。

   模型树的PartBody下包含梁、长桁、肋等元件的实体造型。先在草图平面绘制元件的截面形状,然后生成实体,其方法如下

本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。