CATIA二次开发CAA技术基础之零件设计Word下载.docx
《CATIA二次开发CAA技术基础之零件设计Word下载.docx》由会员分享,可在线阅读,更多相关《CATIA二次开发CAA技术基础之零件设计Word下载.docx(18页珍藏版)》请在冰豆网上搜索。
方法
SEQUENCE(CATBaseUnknown_ptr)
ListObj;
long
NbObj
piRootContainer—〉ListMembersHere(”CATISpecObject"
,ListObj);
for(int
j=0;
j〈NbObj;
j++)//注意从
0
开始
{}
注意:
”CATISpecObject”表示将所有的节点列出,如果想要只列出某种元素,可以将该
参数设置为相应的接口,例如”CATPoint"
表示所有的点。
4
获得参考平面
参考平面包括
平面,参考代码如下:
spReferencePlanes;
spReferencePlanes
spPrtPart—>
GetReferencePlanes();
注意:
为包含三个元素的数组,数组元素依次为
xy
平面,
yz
平面和
zx
平
面。
如果要使用
平面,则参考代码如下:
CATISpecObject_varspyzPlane
spReferencePlanes[2];
5。
2。
5
获得轴系
CATIMf3DAxisSystemManager_var
spAxisSystem
NULL_var;
spPrtPart->
QueryInterface(IID_
CATIMf3DAxisSystemManager,(void**)&
spAxisSystem);
//得到的所有轴系
CATLISTV(CATIMf3DAxisSystem_var)
oAxisSystemList;
->
GetAxisSystems(oAxisSystemList);
5.2.6
获得参数
spPrtPart;
spSpecObjects;
piDescendantsOnPart—〉GetAllChildren(”CATICkeParm”,
CATIParmPublisher
中接口
CATIParmPublisher_varspParmPublisher
ListFound;
spParmPublisher—〉GetAllChildren(”CATICkeParm”,ListFound);
方法三:
ListObj;
spContainer
ListMembersHere(”CATICkeParm"
{
CATIAlias_var
spAlias
ListObj[j];
cout<
<
spAlias-〉GetAlias()〈<
endl;
//输出参数的名字
}
5.2.7
获得几何图形集等节点
该节主要介绍获得几何图形集、有序几何图形集、零件几何体、几何体、集合中的几何体
等节点的方法,主要方法流程图如图
5.3
所示。
获得CATIPrtPart
获得CATIPartRequest
GetAllBodies
GetSurfBodies
几何图形集有序几何图形集
GetSolidBodies
GetMainBody
零件几何体
集合中的几何体
几何体
CATIMmiNonOrderedGeometricalSet
CATIMmiOrderedGeometricalSet
CATIGSMTool
CATIMechanicalTool
获得CATIBodyRequest
CATBody
流程图
例
1:
获得零件中的所有几何体的代码如下。
CATIPartRequest
*pIPartRequest
=NULL
;
HRESULT
rc
spPart-〉QueryInterface(IID_CATIPartRequest,
(void**)&
pIPartRequest
);
if
(
SUCCEEDED(rc)
)
{
CATLISTV(CATBaseUnknow_var)
ListBodies;
//所有几何体
CATUnicodeString
ViewContext
=”MfDefault3DView"
;
pIPartRequest->
GetSolidBodies(ViewContext,ListBodies);
2:
获得零件中的所有有序几何图形集的代码如下。
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**)
&
CATBody_var
spBodyResult
pIGeometricalElement->
GetBodyResult();
}
5.2.8
创建轴系
//首先初始化工厂
CATIMf3DAxisSystemFactory
*
pIMf3DAxisSystemFactoryOnFeatCont
CATMathPoint
Origin
(150。
0,。
0,.0);
CATMathVector
X
(1。
0,。
0,.0);
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);
spParam2
spParmFactory—〉CreateLength(”Width”,0。
15);
//长度单位为米
spParam3
spParmFactory-〉CreateLength("
Height"
0.2);
//创建长度参数
//
与
CATICkeFunctionFactory
功能为将所有参数显示在结构树中
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);
(spParam3);
//创建公式
Height
Width
+
Base
CATICkeRelation_varspFormula1=spParmFactory-〉CreateFormula(”Formula”,””,"
"
,
spParam3,
pList,
Width+Base"
spParmPublisher,
CATCke:
True);
spFuncFactory—>
AddToCurrentRelationSet(spFormula1,
spParmPublisher);
//修改参数进行测试
spParam1—>
Valuate(0.5);
2.10
创建几何图形集等节点
CATIMechanicalRootFactory
CATIMechanicalRootFactory_var
spMechanicalRootFactory
//创建几何图形集
virtual
CreateGeometricalSet(const
CATUnicodeString&
iUserName,
const
CATISpecObject_var&
iDestination,
CATISpecObject_var&
oGeomSet,
int
iPosition=—1
)
函数说明如下表
所示:
iDestination
为零件节点
为其他节点
iPosition
—1
几何图形集位于零件最后
几何图形集与
在同一父节点
下,且在
节点后
几何图形集位于
中的最后
〈
〈=
的大小
几何图形集位于零件中
+1
处
中的
Otherwise
E_FAIL
目标
凸台
CreatePad
槽
CreatePocket
旋转体
CreateRotate
孔
CreateHole
盒体
CreateShell
倒圆
CreateFillet
倒角
CreateChamfer
厚曲面
CreateThickness
表
创建实体特征的方法
函数说明
//创建有序的几何图形集
CreateOrderedGeometricalSet
(const
CATUnicodeString&
CATISpecObject_var&
iDestination,
CATISpecObject_var&
oOrderedGeomSet,
iPosition=-1
//创建几何体
CATISpecObject_var
CreatePRTTool(
iDestination)
iDestination
iPosition=-1)
2.11
创建实体特征
实体特征主要包括凸台、槽、旋转体、孔、盒体、倒圆、倒角和厚曲面等特征,创建实体
特征采用
CATIPrtFactory
工厂中的方法,相应的方法如下表所示.
现举创建孔的例子如下:
1.常用的创建孔的方法包括三种,依次如下。
public
CreateHole(
ihSurface,
CATISpecObject_varihDirection)
参数介绍:
ihSurface
指支持孔的平面或曲面;
ihDirection
指孔的特征方向,特征方向可用
CATIGSMFactory
CreateDirection
创建,孔方向若为
NULL_var,则按照曲面的法向创建孔。
ihPoint,
CATISpecObject_varihSurface,
CATISpecObject_varihDirection,
IsPointOnSurface)
ihPoint
指在支持面上的特征点;
指支持孔的平面或曲面;
ihDirection
指孔的特征方向,孔方向若为
NULL_var,则按照曲面的法向创建孔;
IsPointOnSurface
的值如
果为
0,说明
不在
上,若为
0,则说明
在
上。
iMathPoint,
iMathPoin
指在支持面上的数学点;
指孔的方向,孔方向若为
NULL_var,则按照曲面的法向创建孔;
的值如果为
0,则说明
2.设置孔的参数
spHole
spPrtFactory->
CreateHole();
CATINewHole_var
spNewHole=
spHole;
spNewHole-〉
SetHoleType
(1);
//设置孔类型为简单孔
spNewHole—〉SetBottomType
(1)
//设置孔底面类型为平底
spNewHole->
SetDiameter(5)//设置直径
spNewHole—>
SetLimit
(1)//设置为盲孔
CATIHoleLimit_var
spHoleLimit
—〉SetOffset(5);
//设置孔的深度
3.将孔添加在结构树中
—〉Update();
CATIGSMProceduralView_var
ispProcView
spHole;
(NULL_var
!
{HResult
-〉InsertInProceduralView();
12
创建零件设计表
//创建设计表的函数如下
CATIDesignTable_var
CreateDesignTable(
iRelationName,
CATUnicodeString&iComment,
iFilePath,
intorientation
1,
sheetWithoutFile
);
函数说明:
iRelationName
为设计表的名字,iComment
为设计表的说明,iFilePath
为创建
表的路径。
创建零件族的步骤如下:
1。
创建参数
spPp1
spFact—〉CreateInteger
("
Column1"
,0);
spPp2
spFact-〉CreateReal
r"
0。
0);
spPp3
spFact—〉CreateString
(”s"
””);
spPp4
spFact->
CreateBoolean
(”b"
,CATCke:
:
spPp5
CreateLength
l”,0);
spPp6
CreateAngle
a"
,0);
2.将参数显示在结构树上
CATIPrtContainer_var
spPrtCont
CATIParmPublisher_var
spPubroot
spPrtCont—〉GetPart();
fact
CATCkeGlobalFunctions:
spParameterSet
NULL_var;
spParameterSet=
fact-〉GetCurrentSet(CATICkeFunctionFactory:
Parameter,spPubroot,CATCke:
spParmPublisher
spParameterSet;
spParmPublisher—>
Append(spPp1);
spParmPublisher-〉Append(spPp2);
spParmPublisher-〉Append(spPp3);
spParmPublisher-〉Append(spPp4);
spParmPublisher—〉Append(spPp5);
spParmPublisher-〉Append(spPp6);
3。
创建设计表
spDesignTable
spFact-〉CreateDesignTable();
4.将设计表显示在结构树上
spRelationSet
GetCurrentSet(
CATICkeFunctionFactory:
Relation,spPubroot,CATCke: