1、CATIA二次开发CAA技术基础之零件设计说明docx第五章 零件设计5.1 零件设计环境图 5.1 零件设计环境零件设计环境中, MyPart1 中包含参考平面(包括 XY 平面、 YZ 平面、 ZX 平面)、轴系、参数、几何图形集、有序几何图形集、零件几何体、几何体、集合中的几何体等节点。几何图形集是无序建模,一般全曲面建模就是他比较管用;有序几何图形集,他里面可以包含集合中的几何体,几何图形集,几何特征,但建模方式是有序的;几何体是直接插入零件环境下,他里面可以包含几何图形集,有序几何图形,几何特征,但建模方式是有序的;集合中的几何体在插入前会询问用户,他可以放在树的根目录下也可以放在有
2、序几何图形集里面,. . .还可以在插入的同时把有序几何图形集里的特征集合到(集合中的几何体)里面。5.2 零件设计接口介绍5.2.1 操纵零件的一般步骤. . .图 5.2 操纵零件的主要接口及步骤5.2.2 获得 CATIPrtPart参考代码如下:CATIPrtContainer_var spPrtContainer = spContainer;CATIPrtPart_var spPrtPart = spPrtContainer -GetPart();5.2.3 获得零件下所有节点方法一:利用 CATIDescendants 接口CATIDescendants_var spDescend
3、antsOnPart = spPrtPart;CATListValCATISpecObject_var spSpecObjects;piDescendantsOnPart-GetAllChildren(CATISpecObject, spSpecObjects);方法二:利用 CATContainer 中的 ListMembersHere 方法SEQUENCE(CATBaseUnknown_ptr)ListObj;long NbObj = piRootContainer-ListMembersHere(CATISpecObject,ListObj);for(int j=0;jGetRefere
4、ncePlanes();注意: spReferencePlanes 为包含三个元素的数组,数组元素依次为 xy 平面 , yz 平面和 zx 平面。如果要使用 yz 平面,则参考代码如下:CATISpecObject_var spyzPlane = spReferencePlanes2;5.2.5 获得轴系参考代码如下:CATIMf3DAxisSystemManager_var spAxisSystem = NULL_var;spPrtPart-QueryInterface(IID_ CATIMf3DAxisSystemManager,(void*)& spAxisSystem);. . ./
5、得到的所有轴系CATLISTV(CATIMf3DAxisSystem_var) oAxisSystemList;spAxisSystem -GetAxisSystems(oAxisSystemList);5.2.6 获得参数方法一:利用 CATIDescendants 接口CATIDescendants_var spDescendantsOnPart = spPrtPart;CATListValCATISpecObject_var spSpecObjects;piDescendantsOnPart-GetAllChildren(CATICkeParm, spSpecObjects);方法二:利
6、用 CATIParmPublisher 中接口CATIParmPublisher_var spParmPublisher = spPrtPart;CATListValCATISpecObject_var ListFound;spParmPublisher-GetAllChildren(CATICkeParm,ListFound);方法三:利用 CATContainer 中的 ListMembersHere 方法SEQUENCE(CATBaseUnknown_ptr)ListObj;long NbObj = spContainer -ListMembersHere(CATICkeParm,Lis
7、tObj);for(int j=0;jNbObj;j+)/ 注意从 0 开始CATIAlias_var spAlias = ListObjj;coutGetAlias()QueryInterface(IID_CATIPartRequest,(void*)&pIPartRequest );if ( SUCCEEDED(rc) )CATLISTV(CATBaseUnknow_var) ListBodies;/ 所有几何体CATUnicodeString ViewContext =MfDefault3DView ;rc = pIPartRequest-GetSolidBodies(ViewConte
8、xt,ListBodies);例2:获得零件中的所有有序几何图形集的代码如下。CATIDescendants_var spDescendantsOnPart = spPrtPart;CATListValCATISpecObject_var spSpecOGSs;/ 所有有序几何图形集piDescendantsOnPart-GetAllChildren(CATIMmiOrderedGeometricalSet, spSpecOGSs);例3:获得零件几何体的代码如下。CATBaseUnknow_var spMainBody;/ 零件几何体. . .pIPartRequest-GetMainBod
9、y(ViewContext,spMainBody);例4:获得 CATBody 的代码如下。CATIBodyRequest *pIBodyRequest= NULL;spMainBody -QueryInterface(IID_CATIBodyRequest,(void*) &pIBodyRequest);CATLISTV(CATBaseUnknown_var) ListResult ;pIBodyRequest-GetResults(,ListResult);CATIGeometricalElement * pIGeometricalElement = NULL ;for (int i=1
10、; iQueryInterface(IID_CATIGeometricalElement ,(void*) &pIGeometricalElement);CATBody_var spBodyResult = pIGeometricalElement-GetBodyResult();5.2.8 创建轴系/首先初始化工厂CATIMf3DAxisSystemFactory * pIMf3DAxisSystemFactoryOnFeatCont = spContainer;CATMathPoint Origin (150.0,.0,.0);CATMathVector X (1.0,.0,.0);CAT
11、MathVector Y (0.0,1.0,.0);CATIMf3DAxisSystem_var NewAxisSystemStd;/ 创建的轴系 pIMf3DAxisSystemFactoryOnFeatCont-CreateAxisSystem(Origin,X,Y,NewAxisSystemStd);/对轴系的 X、Y 方向进行修改NewAxisSystemStd-SetAxisDirection(CATAxisSystemXNumber, pVectorX);NewAxisSystemStd-SetAxisDirection(CATAxisSystemYNumber, pVectorY
12、);5.2.9 创建参数和公式1创建参数/ 初始化 CATICkeParmFactory 工厂CATICkeParmFactory_var spParmFactory = spContainer;CATICkeParm_var spParam1 = spParmFactory-CreateLength(Base,0.1);CATICkeParm_var spParam2 = spParmFactory-CreateLength(Width,0.15);/ 长度单位为米. . .CATICkeParm_var spParam3 = spParmFactory-CreateLength(Heigh
13、t,0.2);/ 创建长度参数. . ./CATIParmPublisher 与 CATICkeFunctionFactory功能为将所有参数显示在结构树中CATIParmPublisher_var spParmPublisher = NULL_var;CATICkeFunctionFactory_var spFuncFactory =CATCkeGlobalFunctions:GetFunctionFactory();spParmPublisher=spFuncFactory-GetCurrentSet(CATICkeFunctionFactory:Parameter,spPrtPart,C
14、ATCke:True);spParmPublisher.Append(spParam1);spParmPublisher.Append(spParam2);spParmPublisher.Append(spParam3);2创建公式/创建参数列表CATCkeListOfParm pList;pList-Append (spParam1);pList-Append (spParam2);pList-Append (spParam3);/ 创建公式 Height = Width + BaseCATICkeRelation_var spFormula1 = spParmFactory-CreateF
15、ormula(Formula,spParam3, pList, Width+Base, spParmPublisher, CATCke:True);spFuncFactory-AddToCurrentRelationSet(spFormula1, spParmPublisher);/修改参数进行测试spParam1-Valuate(0.5);5.2.10 创建几何图形集等节点/ 初始化 CATIMechanicalRootFactory 工厂CATIMechanicalRootFactory_var spMechanicalRootFactory = spContainer;/ 创建几何图形集
16、virtual HRESULT CreateGeometricalSet(const CATUnicodeString& iUserName,const CATISpecObject_var& iDestination,CATISpecObject_var & oGeomSet,int iPosition=-1 ) = 0 ;函数说明如下表 5.1 所示:. . .表 5.1函数说明iDestination为零件节点iDestination为其他节点iPosition=-1几何图形集位于零件最后几何图形集与iDestination在同一父节点iPosition=0几何图形集位于零件最后几何图形
17、集位于iDestination中的最后几何图形集位于零件中几何图形集位0 iPosition CreateHole();CATINewHole_var spNewHole= spHole;spNewHole- SetHoleType(1);/ 设置孔类型为简单孔spNewHole-SetBottomType(1) ;/ 设置孔底面类型为平底spNewHole-SetDiameter(5)/ 设置直径spNewHole-SetLimit(1)/ 设置为盲孔CATIHoleLimit_var spHoleLimit = spHole;. . .spHoleLimit -SetOffset(5);/
18、 设置孔的深度3将孔添加在结构树中. . .spHole -Update();CATIGSMProceduralView_var ispProcView = spHole;if (NULL_var != ispProcView ) HResult rc = ispProcView -InsertInProceduralView();5.2.12 创建零件设计表/ 初始化 CATICkeParmFactory 工厂CATICkeParmFactory_var spParmFactory = spContainer;/创建设计表的函数如下CATIDesignTable_var CreateDesi
19、gnTable( const CATUnicodeString& iRelationName,const CATUnicodeString& iComment,const CATUnicodeString& iFilePath,int orientation = 1,int sheetWithoutFile = 0 );函数说明: iRelationName为设计表的名字, iComment为设计表的说明, iFilePath为创建表的路径。创建零件族的步骤如下:1. 创建参数CATICkeParm_varspPp1=spFact-CreateInteger(Column1,0);CATICk
20、eParm_varspPp2=spFact-CreateReal(r,0.0);CATICkeParm_varspPp3=spFact-CreateString(s,);CATICkeParm_varspPp4=spFact-CreateBoolean(b,CATCke:True);CATICkeParm_varspPp5=spFact-CreateLength(l,0);CATICkeParm_varspPp6=spFact-CreateAngle(a,0);2. 将参数显示在结构树上CATIPrtContainer_var spPrtCont = spContainer; CATIParmPublisher_var spPubroot = spPrtCont-GetPart();CATICkeFunctionFactory_var fact = CATCkeGlobalFunctions:GetFunctionFactory(); CATISpecObject_var spParameterSet = NULL_var; spParameterSet=fact-GetCurrentSet(C
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1