CATIA二次开发CAA技术基础学习知识之零件设计.docx
- 文档编号:18094924
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:23
- 大小:294.66KB
CATIA二次开发CAA技术基础学习知识之零件设计.docx
《CATIA二次开发CAA技术基础学习知识之零件设计.docx》由会员分享,可在线阅读,更多相关《CATIA二次开发CAA技术基础学习知识之零件设计.docx(23页珍藏版)》请在冰点文库上搜索。
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 { 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 技术 基础 学习 知识 零件 设计