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

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

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

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

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〈NbObj;j++)//注意从 0 开始

{}

注意:

”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,spPubroot,CATCke:

:

True);

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

当前位置:首页 > 人文社科 > 教育学心理学

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

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