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

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

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

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

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

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

 

第五章零件设计

 

5.1零件设计环境

 

图5.1零件设计环境

零件设计环境中,MyPart1中包含参考平面(包括XY平面、YZ平面、ZX平面)、轴系、

参数、几何图形集、有序几何图形集、零件几何体、几何体、集合中的几何体等节点。

几何图形集是无序建模,一般全曲面建模就是他比较管用;有序几何图形集,他里面可以

包含集合中的几何体,几何图形集,几何特征,但建模方式是有序的;几何体是直接插入零件

环境下,他里面可以包含几何图形集,有序几何图形,几何特征,但建模方式是有序的;集合

中的几何体在插入前会询问用户,他可以放在树的根目录下也可以放在有序几何图形集里面,

 

...

 

还可以在插入的同时把有序几何图形集里的特征集合到(集合中的几何体)里面。

 

5.2零件设计接口介绍

 

5.2.1操纵零件的一般步骤

 

...

 

图5.2操纵零件的主要接口及步骤

 

5.2.2获得CATIPrtPart

 

参考代码如下:

CATIPrtContainer_varspPrtContainer=spContainer;

CATIPrtPart_varspPrtPart=spPrtContainer->GetPart();

 

5.2.3获得零件下所有节点

 

方法一:

利用CATIDescendants接口

CATIDescendants_varspDescendantsOnPart=spPrtPart;

CATListValCATISpecObject_varspSpecObjects;

piDescendantsOnPart->GetAllChildren("CATISpecObject",spSpecObjects);

方法二:

利用CATContainer中的ListMembersHere方法

SEQUENCE(CATBaseUnknown_ptr)ListObj;

longNbObj=piRootContainer->ListMembersHere("CATISpecObject",ListObj);

for(intj=0;j

{}

注意:

"CATISpecObject"表示将所有的节点列出,如果想要只列出某种元素,可以将该

参数设置为相应的接口,例如"CATPoint"表示所有的点。

 

5.2.4获得参考平面

 

参考平面包括XY平面、YZ平面、ZX平面,参考代码如下:

CATListValCATISpecObject_varspReferencePlanes;

spReferencePlanes=spPrtPart->GetReferencePlanes();

注意:

spReferencePlanes为包含三个元素的数组,数组元素依次为xy平面,yz平面

和zx平

面。

如果要使用yz平面,则参考代码如下:

CATISpecObject_varspyzPlane=spReferencePlanes[2];

 

5.2.5获得轴系

 

参考代码如下:

CATIMf3DAxisSystemManager_varspAxisSystem=NULL_var;

spPrtPart->QueryInterface(IID_CATIMf3DAxisSystemManager,(void**)&spAxisSystem);

 

...

 

//得到的所有轴系

CATLISTV(CATIMf3DAxisSystem_var)oAxisSystemList;

spAxisSystem->GetAxisSystems(oAxisSystemList);

 

5.2.6获得参数

 

方法一:

利用CATIDescendants接口

CATIDescendants_varspDescendantsOnPart=spPrtPart;

CATListValCATISpecObject_varspSpecObjects;

piDescendantsOnPart->GetAllChildren("CATICkeParm",spSpecObjects);

方法二:

利用CATIParmPublisher中接口

CATIParmPublisher_varspParmPublisher=spPrtPart;

CATListValCATISpecObject_varListFound;

spParmPublisher->GetAllChildren("CATICkeParm",ListFound);

方法三:

利用CATContainer中的ListMembersHere方法

SEQUENCE(CATBaseUnknown_ptr)ListObj;

longNbObj=spContainer->ListMembersHere("CATICkeParm",ListObj);

for(intj=0;j

{

CATIAlias_varspAlias=ListObj[j];

cout<GetAlias()<

}

 

5.2.7获得几何图形集等节点

 

该节主要介绍获得几何图形集、有序几何图形集、零件几何体、几何体、集合中的几何体

等节点的方法,主要方法流程图如图5.3所示。

 

...

 

获得CATIPrtPart

 

获得CATIPartRequest

 

GetAllBodies

 

GetSurfBodiesGetSolidBodies

 

GetMainBody

 

几何图形集有序几何图形集零件几何体集合中几何体

的几何体

 

CATIMmiNonOrderedGeometricalSetCATIMmiOrderedGeometricalSet

 

CATIGSMToolCATIMechanicalTool

 

获得CATIBodyRequest

 

CATBody

 

图5.3流程图

 

例1:

获得零件中的所有几何体的代码如下。

CATIPartRequest*pIPartRequest=NULL;

HRESULTrc=spPart->QueryInterface(IID_CATIPartRequest,

(void**)&pIPartRequest);

if(SUCCEEDED(rc))

{

CATLISTV(CATBaseUnknow_var)ListBodies;//所有几何体

CATUnicodeStringViewContext="MfDefault3DView";

rc=pIPartRequest->GetSolidBodies(ViewContext,ListBodies);

}

例2:

获得零件中的所有有序几何图形集的代码如下。

CATIDescendants_varspDescendantsOnPart=spPrtPart;

CATListValCATISpecObject_varspSpecOGSs;//所有有序几何图形集

piDescendantsOnPart->GetAllChildren("CATIMmiOrderedGeometricalSet",spSpecOGSs);

例3:

获得零件几何体的代码如下。

CATBaseUnknow_varspMainBody;//零件几何体

 

...

 

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(inti=1;i<=ListResult.Size();i++)

{

CATBaseUnknown_varspResult=ListResult[i];

spResult->QueryInterface(IID_CATIGeometricalElement,(void**)&pIGeometricalElement

);

CATBody_varspBodyResult=pIGeometricalElement->GetBodyResult();

}

 

5.2.8创建轴系

 

//首先初始化工厂

CATIMf3DAxisSystemFactory*pIMf3DAxisSystemFactoryOnFeatCont=spContainer;

CATMathPointOrigin(150.0,.0,.0);

CATMathVectorX(1.0,.0,.0);

CATMathVectorY(0.0,1.0,.0);

CATIMf3DAxisSystem_varNewAxisSystemStd;//创建的轴系pIMf3DAxisSystemFactoryOnFeatCont->CreateAxisSystem(Origin,X,Y,NewAxisSystemStd);

//对轴系的X、Y方向进行修改

NewAxisSystemStd->SetAxisDirection(CATAxisSystemXNumber,pVectorX);

NewAxisSystemStd->SetAxisDirection(CATAxisSystemYNumber,pVectorY);

 

5.2.9创建参数和公式

 

1.创建参数

//初始化CATICkeParmFactory工厂

CATICkeParmFactory_varspParmFactory=spContainer;

CATICkeParm_varspParam1=spParmFactory->CreateLength("Base",0.1);

CATICkeParm_varspParam2=spParmFactory->CreateLength("Width",0.15);//长度单位为

 

...

 

CATICkeParm_varspParam3=spParmFactory->CreateLength("Height",0.2);//创建长度参

 

...

 

//CATIParmPublisher与CATICkeFunctionFactory功能为将所有参数显示在结构树中

CATIParmPublisher_varspParmPublisher=NULL_var;

CATICkeFunctionFactory_varspFuncFactory=CATCkeGlobalFunctions:

:

GetFunctionFactor

y();

spParmPublisher=

spFuncFactory->GetCurrentSet(CATICkeFunctionFactory:

:

Parameter,spPrtPart,CATCke:

:

Tru

e);

spParmPublisher.Append(spParam1);

spParmPublisher.Append(spParam2);

spParmPublisher.Append(spParam3);

2.创建公式

//创建参数列表

CATCkeListOfParmpList;

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_varspMechanicalRootFactory=spContainer;

//创建几何图形集

virtualHRESULTCreateGeometricalSet(constCATUnicodeString&iUserName,

constCATISpecObject_var&iDestination,

CATISpecObject_var&oGeomSet,

intiPosition=-1)=0;

函数说明如下表5.1所示:

 

...

 

表5.1

函数说明

iDestination

为零件节点iDestination

为其他节点

iPosition

=

-1

几何图形集位于零件最后

几何图形集与

iDestination

在同一父节

iPosition

=

0

几何图形集位于零件最后

几何图形集位于

iDestination

中的最后

几何图形集位于零件中

几何图形集位

0

<=

iDestinatio

+1处

于iDestination

n

的大小

iPosition

中的

Otherwise

E_FAIL

E_FAIL

//创建有序的几何图形集

virtual

HRESULTCreateOrderedGeometricalSet

(const

CATUnicodeString&

iUserName,

constCATISpecObject_var&iDestination,

CATISpecObject_var&oOrderedGeomSet,

intiPosition=-1)=0;

//创建几何体

virtualCATISpecObject_varCreatePRTTool(constCATUnicodeString&iUserName,

constCATISpecObject_var&iDestination);

virtualCATISpecObject_varCreatePRTTool(constCATUnicodeString&iUserName,

constCATISpecObject_var&iDestination

intiPosition=-1);

 

5.2.11创建实体特征

 

实体特征主要包括凸台、槽、旋转体、孔、盒体、倒圆、倒角和厚曲面等特征,创建实体

特征采用CATIPrtFactory工厂中的方法,相应的方法如下表所示。

表5.2创建实体特征的方法

目标方法

凸台CreatePad

槽CreatePocket

旋转体CreateRotate

孔CreateHole

盒体CreateShell

倒圆CreateFillet

倒角CreateChamfer

厚曲面CreateThickness

 

...

 

现举创建孔的例子如下:

1.常用的创建孔的方法包括三种,依次如下。

publicvirtualCATISpecObject_varCreateHole(constCATISpecObject_vari

hSurface,

constCATISpecObject_varihDirection)=0

参数介绍:

ihSurface指支持孔的平面或曲面;ihDirection指孔的特征方向,特征方向可用

CATIGSMFactory中的CreateDirection创建,孔方向若为NULL_var,则按照曲面的法向创建孔。

 

publicvirtualCATISpecObject_varCreateHole(constCATISpecObject_vari

hPoint,

constCATISpecObject_varihSurface,

constCATISpecObject_varihDirection,

constintIsPointOnSurface)=

0

参数介绍:

ihPoint指在支持面上的特征点;ihSurface指支持孔的平面或曲面;ihDirection

指孔的特征方向,孔方向若为NULL_var,则按照曲面的法向创建孔;IsPointOnSurface的值如

果为0,说明ihPoint不在ihSurface上,若为0,则说明ihPoint在ihSurface上。

 

public

virtual

CATISpecObject_var

CreateHole(

constCATMathPoint

iMathPo

int,

const

CATISpecObject_varihSurface,

const

CATISpecObject_varihDirection,

const

int

IsPointOnSurface)

=0

参数介绍:

iMathPoin指在支持面上的数学点;ihSurface指支持孔的平面或曲面;ihDirection

指孔的方向,孔方向若为NULL_var,则按照曲面的法向创建孔;IsPointOnSurface的值如果为

0,说明ihPoint不在ihSurface上,若为0,则说明ihPoint在ihSurface上。

2.设置孔的参数

CATISpecObject_varspHole=spPrtFactory->CreateHole();

CATINewHole_varspNewHole=spHole;

spNewHole->SetHoleType

(1);//设置孔类型为简单孔

spNewHole->SetBottomType

(1);//设置孔底面类型为平底

spNewHole->SetDiameter(5)//设置直径

spNewHole->SetLimit

(1)//设置为盲孔

CATIHoleLimit_varspHoleLimit=spHole;

 

...

 

spHoleLimit->SetOffset(5);//设置孔的深度

3.将孔添加在结构树中

 

...

 

spHole->Update();

CATIGSMProceduralView_varispProcView=spHole;

if(NULL_var!

=ispProcView){HResultrc=ispProcView->InsertInProcedura

lView();}

 

5.2.12创建零件设计表

 

//初始化CATICkeParmFactory工厂

CATICkeParmFactory_varspParmFactory=spContainer;

//创建设计表的函数如下

CATIDesignTable_varCreateDesignTable(constCATUnicodeString&iRelationNam

e,

constCATUnicodeString&iComment,

constCATUnicodeString&iFilePath,

intorientation=1,

intsheetWithoutFile=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_varspPrtCont=spContainer;CATIParmPublisher_varspPubroot=spPrtCont->GetPart();

CATICkeFunctionFactory_varfact=CATCkeGlobalFunctions:

:

GetFunctionFactory();CATISpecObject_varspParameterSet=NULL_var;spParameterSet=

fact->GetCurrentSet(C

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

当前位置:首页 > 初中教育 > 语文

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

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