CATIA二次开发(CAA)技术基础之零件设计
更新时间:2024-04-04 00:35:01 阅读量: 综合文库 文档下载
第五章 零件设计
5.1 零件设计环境
图 5.1 零件设计环境
零件设计环境中,MyPart1 中包含参考平面(包括 XY 平面、YZ 平面、ZX 平面)、轴系、 参数、几何图形集、有序几何图形集、零件几何体、几何体、集合中的几何体等节点。
几何图形集是无序建模,一般全曲面建模就是他比较管用;有序几何图形集,他里面可以 包含集合中的几何体,几何图形集,几何特征,但建模方式是有序的;几何体是直接插入零件 环境下,他里面可以包含几何图形集,有序几何图形,几何特征,但建模方式是有序的;集合 中的几何体在插入前会询问用户,他可以放在树的根目录下也可以放在有序几何图形集里面,
还可以在插入的同时把有序几何图形集里的特征集合到(集合中的几何体)里面。
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
spDescendantsOnPart = spPrtPart;
CATListValCATISpecObject_var spSpecObjects;
piDescendantsOnPart->GetAllChildren(\TISpecObject\ spSpecObjects); 方法二:利用 CATContainer 中的 ListMembersHere 方法 SEQUENCE(CATBaseUnknown_ptr) ListObj;
long NbObj = piRootContainer->ListMembersHere(\TISpecObject\ for(int j=0;j 注意:\表示将所有的节点列出,如果想要只列出某种元素,可以将该 参数设置为相应的接口,例如\表示所有的点。 5.2.4 获得参考平面 参考平面包括 XY 平面、YZ 平面、ZX 平面,参考代码如下: CATListValCATISpecObject_var spReferencePlanes; spReferencePlanes = spPrtPart->GetReferencePlanes(); 注意:spReferencePlanes 为包含三个元素的数组,数组元素依次为 xy 平面, yz 平面和 zx 平 面。 如果要使用 yz 平面,则参考代码如下: CATISpecObject_var 5.2.5 获得轴系 参考代码如下: spyzPlane = spReferencePlanes[2]; CATIMf3DAxisSystemManager_var spAxisSystem = NULL_var; spPrtPart->QueryInterface(IID_ CATIMf3DAxisSystemManager,(void**)& spAxisSystem); //得到的所有轴系 CATLISTV(CATIMf3DAxisSystem_var) oAxisSystemList; spAxisSystem ->GetAxisSystems(oAxisSystemList); 5.2.6 获得参数 方法一:利用 CATIDescendants 接口 CATIDescendants_var spDescendantsOnPart = spPrtPart; CATListValCATISpecObject_var spSpecObjects; piDescendantsOnPart->GetAllChildren(\TICkeParm\ spSpecObjects); 方法二:利用 CATIParmPublisher 中接口 CATIParmPublisher_var spParmPublisher = spPrtPart; CATListValCATISpecObject_var ListFound; spParmPublisher->GetAllChildren(\TICkeParm\ 方法三:利用 CATContainer 中的 ListMembersHere 方法 SEQUENCE(CATBaseUnknown_ptr) ListObj; long NbObj = spContainer ->ListMembersHere(\TICkeParm\ 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 =\ ; rc = pIPartRequest->GetSolidBodies(ViewContext,ListBodies); } 例 2:获得零件中的所有有序几何图形集的代码如下。 CATIDescendants_var spDescendantsOnPart = spPrtPart; CATListValCATISpecObject_var spSpecOGSs;//所有有序几何图形集 piDescendantsOnPart->GetAllChildren(\TIMmiOrderedGeometricalSet\ 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(\ 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(\ CATICkeParm_var spParam2 = spParmFactory->CreateLength(\长度单位为米 CATICkeParm_var spParam3 = spParmFactory->CreateLength(\创建长度参数 // CATIParmPublisher 与 CATICkeFunctionFactory 功能为将所有参数显示在结构树中 CATIParmPublisher_var spParmPublisher = 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_var spFormula1 = spParmFactory->CreateFormula(\ spParam3, pList, \ 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 int iPosition=-1 ) = 0 ; 函数说明如下表 5.1 所示: & oGeomSet, 表 5.1 函数说明 iDestination 为零件节点 几何图形集位于零件最后 iPosition = -1 几何图形集位于零件最后 iPosition = 0 几何图形集位于零件中 0 < iPosition <= iDestination 的大小 iPosition +1 处 E_FAIL Otherwise //创建有序的几何图形集 iDestination 为其他节点 几何图形集与 iDestination 在同一父节点 下,且在 iDestination 节点后 几何图形集位于 iDestination 中的最后 几何图形集位于 iDestination 中的 iPosition +1 处 E_FAIL virtual HRESULT CreateOrderedGeometricalSet (const CATUnicodeString& iUserName, const CATISpecObject_var& iDestination, CATISpecObject_var 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) ; & oOrderedGeomSet, 5.2.11 创建实体特征 实体特征主要包括凸台、槽、旋转体、孔、盒体、倒圆、倒角和厚曲面等特征,创建实体 特征采用 CATIPrtFactory 工厂中的方法,相应的方法如下表所示。 表 5.2 创建实体特征的方法 目标 凸台 槽 旋转体 孔 盒体 倒圆 倒角 厚曲面 方法 CreatePad CreatePocket CreateRotate CreateHole CreateShell CreateFillet CreateChamfer CreateThickness 现举创建孔的例子如下: 1.常用的创建孔的方法包括三种,依次如下。 public virtual CATISpecObject_var CreateHole( const CATISpecObject_var ihSurface, const CATISpecObject_var ihDirection) = 0 参数介绍:ihSurface 指支持孔的平面或曲面;ihDirection 指孔的特征方向,特征方向可用 CATIGSMFactory 中的 CreateDirection 创建,孔方向若为 NULL_var,则按照曲面的法向创建孔。 public virtual CATISpecObject_var CreateHole( const CATISpecObject_var ihPoint, const CATISpecObject_var const CATISpecObject_var ihSurface, ihDirection, 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_var const CATISpecObject_var ihSurface, ihDirection, 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& const CATUnicodeString& int orientation = 1, int sheetWithoutFile = 0 ); 函数说明:iRelationName 为设计表的名字,iComment 为设计表的说明,iFilePath 为创建 表的路径。 创建零件族的步骤如下: 1.创建参数 CATICkeParm_var spPp1 = spFact->CreateInteger (\ CATICkeParm_var spPp2 = spFact->CreateReal (\ CATICkeParm_var spPp3 = spFact->CreateString (\ CATICkeParm_var spPp4 = spFact->CreateBoolean (\TCke::True); CATICkeParm_var spPp5 = spFact->CreateLength (\ CATICkeParm_var spPp6 = spFact->CreateAngle (\ 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); iComment, iFilePath,
正在阅读:
【最新】XX钢铁企业信息化战略规划和设计建设可行性研究方案04-06
LED屏幕广告牌的系统设计与发展现状06-03
吉林省人民政府办公厅关于切实提高省级专项资金精准性和有效性的意见09-30
2017年普通高等学校招生全国统一考试上海语文试卷及参考答案10-24
在海边作文400字07-09
海淀区智慧教育中长期发展规划(2014-2020年)11-19
七五普法考试试题和答案100卷08-27
六中物理学生成果207-01
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 零件
- 基础
- 开发
- 设计
- CATIA
- 技术
- CAA