CATIA二次开发CAA技术基础学习知识之零件设计.docx

上传人:b****5 文档编号:30254092 上传时间:2023-08-13 格式:DOCX 页数:23 大小:294.66KB
下载 相关 举报
CATIA二次开发CAA技术基础学习知识之零件设计.docx_第1页
第1页 / 共23页
CATIA二次开发CAA技术基础学习知识之零件设计.docx_第2页
第2页 / 共23页
CATIA二次开发CAA技术基础学习知识之零件设计.docx_第3页
第3页 / 共23页
CATIA二次开发CAA技术基础学习知识之零件设计.docx_第4页
第4页 / 共23页
CATIA二次开发CAA技术基础学习知识之零件设计.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

CATIA二次开发CAA技术基础学习知识之零件设计.docx

《CATIA二次开发CAA技术基础学习知识之零件设计.docx》由会员分享,可在线阅读,更多相关《CATIA二次开发CAA技术基础学习知识之零件设计.docx(23页珍藏版)》请在冰豆网上搜索。

CATIA二次开发CAA技术基础学习知识之零件设计.docx

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<GetAlias()<

}

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 生物学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1