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下包含梁、长桁、肋等元件的实体造型。先在草图平面绘制元件的截面形状,然后生成实体,其方法如下