CATIA二次开发CAA技术基础之零件设计.docx
- 文档编号:17525847
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:24
- 大小:303.29KB
CATIA二次开发CAA技术基础之零件设计.docx
《CATIA二次开发CAA技术基础之零件设计.docx》由会员分享,可在线阅读,更多相关《CATIA二次开发CAA技术基础之零件设计.docx(24页珍藏版)》请在冰点文库上搜索。
CATIA二次开发CAA技术基础之零件设计
第五章 零件设计
5.1 零件设计环境
图 5.1 零件设计环境
零件设计环境中,MyPart1 中包含参考平面(包括 XY 平面、YZ 平面、ZX 平面)、轴系、
参数、几何图形集、有序几何图形集、零件几何体、几何体、集合中的几何体等节点。
几何图形集是无序建模,一般全曲面建模就是他比较管用;有序几何图形集,他里面可以
包含集合中的几何体,几何图形集,几何特征,但建模方式是有序的;几何体是直接插入零件
环境下,他里面可以包含几何图形集,有序几何图形,几何特征,但建模方式是有序的;集合
中的几何体在插入前会询问用户,他可以放在树的根目录下也可以放在有序几何图形集里面,
还可以在插入的同时把有序几何图形集里的特征集合到(集合中的几何体)里面。
5.2 零件设计接口介绍
5。
2。
1 操纵零件的一般步骤
图 5。
2 操纵零件的主要接口及步骤
5。
2。
2 获得 CATIPrtPart
参考代码如下:
CATIPrtContainer_varspPrtContainer = spContainer;
CATIPrtPart_var spPrtPart = spPrtContainer —〉GetPart();
5。
2.3 获得零件下所有节点
方法一:
利用 CATIDescendants 接口
CATIDescendants_varspDescendantsOnPart = spPrtPart;
CATListValCATISpecObject_var spSpecObjects;
piDescendantsOnPart—>GetAllChildren("CATISpecObject", spSpecObjects);
方法二:
利用 CATContainer 中的 ListMembersHere 方法
SEQUENCE(CATBaseUnknown_ptr) ListObj;
long NbObj = piRootContainer—>ListMembersHere("CATISpecObject”,ListObj);
for(int j=0;j {} 注意: ”CATISpecObject”表示将所有的节点列出,如果想要只列出某种元素,可以将该 参数设置为相应的接口,例如”CATPoint”表示所有的点. 5.2。 4 获得参考平面 参考平面包括 XY 平面、YZ 平面、ZX 平面,参考代码如下: CATListValCATISpecObject_var spReferencePlanes; spReferencePlanes = spPrtPart—>GetReferencePlanes(); 注意: spReferencePlanes 为包含三个元素的数组,数组元素依次为 xy 平面, yz 平面和 zx 平 面。 如果要使用 yz 平面,则参考代码如下: CATISpecObject_varspyzPlane = spReferencePlanes[2]; 5.2。 5 获得轴系 参考代码如下: CATIMf3DAxisSystemManager_var spAxisSystem = NULL_var; spPrtPart—〉QueryInterface(IID_ CATIMf3DAxisSystemManager,(void**)& spAxisSystem); //得到的所有轴系 CATLISTV(CATIMf3DAxisSystem_var) oAxisSystemList; spAxisSystem —>GetAxisSystems(oAxisSystemList); 5.2.6 获得参数 方法一: 利用 CATIDescendants 接口 CATIDescendants_varspDescendantsOnPart = spPrtPart; CATListValCATISpecObject_var spSpecObjects; piDescendantsOnPart—〉GetAllChildren(”CATICkeParm”, spSpecObjects); 方法二: 利用 CATIParmPublisher 中接口 CATIParmPublisher_varspParmPublisher = spPrtPart; CATListValCATISpecObject_var ListFound; spParmPublisher—〉GetAllChildren(”CATICkeParm",ListFound); 方法三: 利用 CATContainer 中的 ListMembersHere 方法 SEQUENCE(CATBaseUnknown_ptr) ListObj; long NbObj = spContainer -〉ListMembersHere(”CATICkeParm",ListObj); for(int j=0;j〈NbObj;j++)//注意从 0 开始 { CATIAlias_var spAlias = ListObj[j]; cout〈 } 5。 2。 7 获得几何图形集等节点 该节主要介绍获得几何图形集、有序几何图形集、零件几何体、几何体、集合中的几何体 等节点的方法,主要方法流程图如图 5.3 所示。 获得CATIPrtPart 获得CATIPartRequest GetAllBodies GetSurfBodies 几何图形集有序几何图形集 GetSolidBodies GetMainBody 零件几何体 集合中的几何体 几何体 CATIMmiNonOrderedGeometricalSet CATIMmiOrderedGeometricalSet CATIGSMTool CATIMechanicalTool 获得CATIBodyRequest CATBody 图 5.3 流程图 例 1: 获得零件中的所有几何体的代码如下。 CATIPartRequest *pIPartRequest =NULL ; HRESULT rc = spPart->QueryInterface(IID_CATIPartRequest, (void**)&pIPartRequest ); if ( SUCCEEDED(rc) ) { CATLISTV(CATBaseUnknow_var) ListBodies;//所有几何体 CATUnicodeString ViewContext ="MfDefault3DView" ; rc = pIPartRequest—>GetSolidBodies(ViewContext,ListBodies); } 例 2: 获得零件中的所有有序几何图形集的代码如下。 CATIDescendants_varspDescendantsOnPart = spPrtPart; CATListValCATISpecObject_var spSpecOGSs;//所有有序几何图形集 piDescendantsOnPart—>GetAllChildren(”CATIMmiOrderedGeometricalSet”, spSpecOGSs); 例 3: 获得零件几何体的代码如下。 CATBaseUnknow_var spMainBody;//零件几何体 pIPartRequest-〉GetMainBody(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 ; i〈= ListResult。 Size(); i++) { CATBaseUnknown_var spResult = ListResult[i]; spResult->QueryInterface(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); CATMathVector 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); 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(”Height”,0。 2);//创建长度参数 // CATIParmPublisher 与 CATICkeFunctionFactory 功能为将所有参数显示在结构树中 CATIParmPublisher_varspParmPublisher = NULL_var; CATICkeFunctionFactory_var spFuncFactory =CATCkeGlobalFunctions: : GetFunctionFactory(); spParmPublisher= spFuncFactory->GetCurrentSet(CATICkeFunctionFactory: : Parameter,spPrtPart,CATCke: : True); spParmPublisher.Append(spParam1); spParmPublisher.Append(spParam2); spParmPublisher.Append(spParam3); 2.创建公式 //创建参数列表 CATCkeListOfParm pList; pList-〉Append (spParam1); pList—〉Append (spParam2); pList—>Append (spParam3); //创建公式 Height = Width + Base CATICkeRelation_varspFormula1=spParmFactory->CreateFormula(”Formula”,"”,"", spParam3, pList, ”Width+Base", spParmPublisher, CATCke: : True); spFuncFactory-〉AddToCurrentRelationSet(spFormula1, spParmPublisher); //修改参数进行测试 spParam1->Valuate(0。 5); 5.2.10 创建几何图形集等节点 //初始化 CATIMechanicalRootFactory 工厂 CATIMechanicalRootFactory_var spMechanicalRootFactory = spContainer; //创建几何图形集 virtual HRESULT CreateGeometricalSet(const CATUnicodeString& iUserName, const CATISpecObject_var& iDestination, CATISpecObject_var& oGeomSet, int iPosition=—1 ) = 0 ; 函数说明如下表 5。 1 所示: iDestination 为零件节点 iDestination 为其他节点 iPosition = -1 几何图形集位于零件最后 几何图形集与 iDestination 在同一父节点 下,且在 iDestination 节点后 iPosition = 0 几何图形集位于零件最后 几何图形集位于 iDestination 中的最后 0 < iPosition 〈= iDestination 的大小 几何图形集位于零件中 iPosition +1 处 几何图形集位于 iDestination 中的 iPosition +1 处 Otherwise E_FAIL E_FAIL 目标 方法 凸台 CreatePad 槽 CreatePocket 旋转体 CreateRotate 孔 CreateHole 盒体 CreateShell 倒圆 CreateFillet 倒角 CreateChamfer 厚曲面 CreateThickness 表 5.2 创建实体特征的方法 表 5.1 函数说明 //创建有序的几何图形集 virtual HRESULT CreateOrderedGeometricalSet (const CATUnicodeString& iUserName, const CATISpecObject_var& iDestination, CATISpecObject_var& oOrderedGeomSet, int iPosition=-1 ) = 0 ; //创建几何体 virtual CATISpecObject_var CreatePRTTool( const CATUnicodeString& iUserName, const CATISpecObject_var& iDestination) ; virtual CATISpecObject_var CreatePRTTool( const CATUnicodeString& iUserName, const CATISpecObject_var& iDestination int iPosition=-1) ; 5.2。 11 创建实体特征 实体特征主要包括凸台、槽、旋转体、孔、盒体、倒圆、倒角和厚曲面等特征,创建实体 特征采用 CATIPrtFactory 工厂中的方法,相应的方法如下表所示. 现举创建孔的例子如下: 1.常用的创建孔的方法包括三种,依次如下. public virtual CATISpecObject_var CreateHole( const CATISpecObject_var ihSurface, const CATISpecObject_varihDirection) = 0 参数介绍: ihSurface 指支持孔的平面或曲面;ihDirection 指孔的特征方向,特征方向可用 CATIGSMFactory 中的 CreateDirection 创建,孔方向若为 NULL_var,则按照曲面的法向创建孔。 public virtual CATISpecObject_var CreateHole( const CATISpecObject_var ihPoint, const CATISpecObject_varihSurface, const CATISpecObject_varihDirection, const int IsPointOnSurface) = 0 参数介绍: ihPoint 指在支持面上的特征点;ihSurface 指支持孔的平面或曲面;ihDirection 指孔的特征方向,孔方向若为 NULL_var,则按照曲面的法向创建孔;IsPointOnSurface 的值如 果为 0,说明 ihPoint 不在 ihSurface 上,若为 0,则说明 ihPoint 在 ihSurface 上. public virtual CATISpecObject_var CreateHole( const CATMathPoint iMathPoint, const CATISpecObject_varihSurface, const CATISpecObject_varihDirection, const int IsPointOnSurface) = 0 参数介绍: iMathPoin 指在支持面上的数学点;ihSurface 指支持孔的平面或曲面;ihDirection 指孔的方向,孔方向若为 NULL_var,则按照曲面的法向创建孔;IsPointOnSurface 的值如果为 0,说明 ihPoint 不在 ihSurface 上,若为 0,则说明 ihPoint 在 ihSurface 上。 2.设置孔的参数 CATISpecObject_var spHole = spPrtFactory-〉 CreateHole(); CATINewHole_var spNewHole= spHole; spNewHole—〉 SetHoleType (1);//设置孔类型为简单孔 spNewHole-〉SetBottomType (1) ;//设置孔底面类型为平底 spNewHole—>SetDiameter(5)//设置直径 spNewHole-〉SetLimit (1)//设置为盲孔 CATIHoleLimit_var spHoleLimit = spHole; spHoleLimit ->SetOffset(5);//设置孔的深度 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 CreateDesignTable( const CATUnicodeString& iRelationName, const CATUnicodeString&iComment, const CATUnicodeString&iFilePath, intorientation = 1, int sheetWithoutFile = 0 ); 函数说明: iRelationName 为设计表的名字,iComment 为设计表的说明,iFilePath 为创建 表的路径。 创建零件族的步骤如下: 1.创建参数 CATICkeParm_var spPp1 = spFact—〉CreateInteger (”Column1”,0); CATICkeParm_var spPp2 = spFact-〉CreateReal ("r",0。 0); CATICkeParm_var spPp3 = spFact—>CreateString (”s”,""); CATICkeParm_var spPp4 = spFact->CreateBoolean (”b",CATCke: : True); CATICkeParm_var spPp5 = spFact->CreateLength (”l",0); CATICkeParm_var spPp6 = 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(CATICkeFunctionFactory: : Parameter,spPubroot,CATCke: : True); CATIParmPublisher_var spParmPublisher = spParameterSet; spParmPublisher->Append(spPp1); spParmPublisher—〉Append(spPp2); spParmPublisher—>Append(spPp3); spParmPublisher—>Append(spPp4); spParmPublisher->Append(spPp5); spParmPublisher—〉Append(spPp6); 3。 创建设计表 CATIDesignTable_var spDesignTable = spFact—>CreateDesignTable(); 4。 将设计表显示在结构树上 CATISpecObject_var spRelationSet = fact -〉GetCurrentSet( CATICkeFunctionFactory: : Relation,spPu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CATIA 二次开发 CAA 技术 基础 零件 设计