创建和修改机械设计特征
使用机械设计工厂和零件设计接口
摘要
T他的文章讨论了CAAPriCreateModify用例。本用例说明如何创建和修改机械设计特征。
- 您将从这个案例中学到什么
- CAAPriCreateModify案例
- CAAPriCreateModify实现了什么
- 如何启动CAAPriCreateModify
- 在哪可以找到CAAPriCreateModify代码
- 步骤
- 总之
- 引用
您将从这个用例中学到什么
本用例旨在帮助您在编程CATIA零件设计[1]时迈出第一步。其主要目的是创建机械设计特征。
CAAPriCreateModify 案例
CAAPriCreateModify是http://caPartInterfaces.edu说明PartInterfaces框架功能的框架。
CAAPriCreateModify实现了什么
CAAPriCreateModify用例的目标是展示如何使用机械设计工厂来实例化机械设计特征,以及如何使用零件设计的接口来修改机械设计特征。我们通过创建和修改pad特性来说明这一点。创建的零件和修改的零件保存在两个不同的文档中。更准确地说,CAAPriCreateModify:
- 创建空的 CATPart 文档
- 创建矩形草图
- 基于草图创建凸台,并定义两个偏移限制值
- 将凸台保存在CATPart文档中,该文档的路径是启动CAAPriCreateModify时传递的第一个参数
- 修改拉伸方向并设置对称延伸特性
- 更新凸台
- 将修改后的凸台保存在另一个CATPart文档中,该文档的路径在启动CAAPriCreateModify时作为第二个参数传递。
如何启动 CAAPriCreateModify
要启动CAAPriCreateModify,您需要设置构建时环境,然后编译CAAPriCreateModify及其先决条件,设置运行时环境,然后执行用例[2]。
启动用例,如下所示:
- 在Windows中
e:>CAAPriCreateModify outputDirectoryPartCM1.CATPart outputDirectoryPartCM2.CATPart
- 在UNIX中
$ CAAPriCreateModify outputDirectory/PartCM1.CATPart outputDirectory/PartCM2.CATPart
其中:
outputDirectory
将PartCM1.CATPart和 PartCM2.CATPart 存储到的目录
PartCM1.CATPart
包含创建的凸台的文件
PartCM2.CATPart
修改后包含凸台的文件
在哪可以找到CAAPriCreateModify代码
CAAPriCreateModify用例由一个名为CAAPriCreateModify的类组成,该类位于http://CAAPartInterfaces.edu框架:
Windows
InstallRootDirectoryhttp://CAAPartInterfaces.eduCAAPriCreateModify.m
Unix
InstallRootDirectory/http://CAAPartInterfaces.edu/CAAPriCreateModify.m/
其中 InstallRootDirectory 是安装 CAA CD-ROM 的目录。
步骤
在CAACreateModify中有七个主要步骤:
1. 序言
2. 检索草图工厂和参考平面列表
3. 创建草图
4. 创建凸台
5. 检查和保存创建的凸台
6. 修改创建的凸台
7. 保存修改后的凸台和退出
现在,我们将通过查看代码来注释这些部分的每个部分。
[Top]
序言
CAAPriCreateModify 首先检查命令行是否包含三个参数。 然后,它创建一个会话,并创建一个新的 CATPart 文档,重新访问到指向名为 pDoc的CATDocument类的指针,以及指向名为 spiInitOnDoc的CATInit接口的智能指针。这是创建 CATIA 文档的通常顺序 [3]
[Top]
检索草图工厂和参考平面列表
...
// 检索草图工厂以实例化对象
CATISketchFactory_var spSketchFactOnPrtCont(piPrtCont);
// 创建草图平面
// 检索零件的参考平面
CATIPrtPart_var spPart = piPrtCont->GetPart();
CATListValCATISpecObject_var spListRefPlanes = spPart->GetReferencePlanes();
...
使用指向CATInit的智能指针,由于GetRootContainer方法作为CATIPrtContainer接口指针,可以检索文档的根容器。根容器实现创建草图对象所需的工厂接口,并允许访问文档的参照平面。
CATISketchFactory 草图对象工厂拉口
[Top]
创建草图
...
// 将 xy 平面定义为第一个草图平面
CATISpecObject_var spSketchPlane = spListRefPlanes[1];
// 使用平面实例化草图
CATISketch_var spSketch =
spSketchFactOnPrtCont->CreateSketch(spSketchPlane);
// 检索 2D 工厂以创建草图的线条和点
CATI2DWFFactory_var spWF2DFactOnSketch(spSketch);
// 创建草图的元素
double pt1[2] = { 10., 5.},
pt2[2] = {-10., 5.},
pt3[2] = {-10., -5.},
pt4[2] = { 10., -5.};
// 编辑草图并绘制线条和端点。
spSketch->OpenEdition();
CATISpecObject_var spLine1 = spWF2DFactOnSketch->CreateLine(pt1,pt2);
CATISpecObject_var spLine2 = spWF2DFactOnSketch->CreateLine(pt2,pt3);
CATISpecObject_var spLine3 = spWF2DFactOnSketch->CreateLine(pt3,pt4);
CATISpecObject_var spLine4 = spWF2DFactOnSketch->CreateLine(pt4,pt1);
CATI2DCurve_var spCurveOnLine1(spLine1);
spCurveOnLine1->GetStartPoint();
spCurveOnLine1->GetEndPoint();
CATI2DCurve_var spCurveOnLine2(spLine2);
spCurveOnLine2->GetStartPoint();
spCurveOnLine2->GetEndPoint();
CATI2DCurve_var spCurveOnLine3(spLine3);
spCurveOnLine3->GetStartPoint();
spCurveOnLine3->GetEndPoint();
CATI2DCurve_var spCurveOnLine4(spLine4);
spCurveOnLine4->GetStartPoint();
spCurveOnLine4->GetEndPoint();
// 关闭草图编辑器
spSketch->CloseEdition();
...
正如我们稍后将看到的那样,凸台的规格之一是草图。它是一个由位于 3D 空间平面中的曲线和点的 2D 对象。 因此,为了实例化草图,我们使用表示平面 (0,x,y)的spSketchPlane,该平面从CATMathPlane创建,由于 CATIGSMFactory的 CreatePlane方法,它作为CATISpecObject检索。 . 此平面为SketchPlane 标识符。然后使用CATISketchFactory的CreateSketch方法创建草图。草图实现了CATI2DWFFactory 接口,该接口对创建 2D 几何对象的所有方法进行分组,并且为此从草图中检索到此接口的智能指针spWF2DFactOnSketch。, and 使用pt1、pt2、pt3 pt2 pt3pt1和pt4设置坐标的四个点的矩形组成草图。 CATISketch 界面定义了一组编辑草图的方法。任何草图编辑序列都以OpenEdition开始,以CloseEdition结束。 CATI2DWFFactory的CreateLine方法创建线路,CATICurve2D接口上的GetStartPoint 和 GetEndPoint 方法允许创建端点。
[Top]
创建凸台
...
CATMathDirection dirZ(0., 0., 1.); // 凸台的拉伸方向
double firstLimit = 20.;
double secondLimit = 0.;
// 检索机械设计工厂以创建凸台
CATIPrtFactory_var spPrtFactOnPrtCont(piPrtCont);
piPrtCont->Release();
CATISpecObject_var spSpecObj = spPrtFactOnPrtCont->CreatePad(spSketch);
CATIPad_var spPadOnSpecObj(spSpecObj);
spPadOnSpecObj->ModifyDirection(dirZ);
spPadOnSpecObj->ModifyEndType(catOffsetLimit);
spPadOnSpecObj->ModifyEndOffset(firstLimit);
spPadOnSpecObj->ModifyStartType(catOffsetLimit);
spPadOnSpecObj->ModifyStartOffset(secondLimit);
spSpecObj->Update(); //生成凸台
...
现在,将创建凸台所依赖的草图。 凸台的剩余规格是草图的拉伸方向及其两个限制。CATIPrtFactory接口也由根容器实现,现在不再需要根容器。使用CreatePad方法创建键盘,草图作为参数传递给该方法,并使用该板实现自己的 CATIPad接口方法设置其规范:
- ModifyDirection,将焊盘拉伸方向设置到 z 轴。请注意,默认值,即省略调用 ModifyDirection,是要将此方向设置为草图平面的法线
- ModifyEndType,它使用CatLimitMode枚举的catOffsetLimit值设置要使用与草图平面的偏移设置的凸台端
- ModifyEndOffset,用于设置此偏移量,也被命名为凸台编辑器对话框中的第一个限制
- ModifyStartType和ModifyStartOffset,对于凸台第二个限制也是如此。因为firstLimit等于0,所以焊盘从草图平面开始。
Update方法在构建凸台时考虑了这些规范。
[Top]
检查和保存已创建凸台
...
// 检查所创建凸台的限制
if (spPadOnSpecObj->GetEndOffset() != firstLimit ||
spPadOnSpecObj->GetStartOffset() != secondLimit)
return 3;
// 将创建的焊盘保存在第一个输入路径中
char * pNomPart1 = iArgv[1];
CATDocumentServices::SaveAs(*pDoc, pNomPart1);
...
使用GetEndOffset 和 GetStartOffset的方法对凸台的实际偏移量进行简单检查,分别检索第一个限制和第二个限制的值。如果其中一个值与为创建而定义的值不同,则CAAPriCreateModify将以代码3停止,否则启动CAAPriCreateModify时,pad将保存在目录集中的CATPart文档中,作为第一个参数。这是保存文档的常见顺序[3]。
[Top]
下图显示了图形查看器和规格树中的凸台,其中使用其名称Pad.1显示该凸台。它依赖于名为 Sketch.1的草图。
[Top]
修改已创建的凸台
...
// 修改凸台改变拉伸方向并应用符号
CATMathDirection dir2(0., 1., 1.); // 凸台的方向
// 修改第一个限制类型
spPadOnSpecObj->ModifySym(1);
// 修改第一个限制
spPadOnSpecObj->ModifyDirection(dir2);
spSpecObj->Update(); // 生成凸台
...
现在,让我们修改凸台的一个规范: 使用ModifySym方法,我们设置了对称拉伸特性,并使用方法ModifyDirection dir2作为新的拉伸方向来修改方向。
[Top]
保存修改的凸台并退出
...
// 将修改后的凸台保存在第二个输入路径中
char * pNomPart2 = iArgv[2];
CATDocumentServices::SaveAs(*pDoc, pNomPart2);
// 关闭会话
::Delete_Session("SampleSession");
return rc;
}
修改后的凸台保存在存储在文件中的 CATPart 文档中,该文件的路径是启动 CAAPriCreateModify 时传递的第二个参数。下图显示经过修改的凸台,其高度现在是初始高度的两倍,并且拉伸方向不再垂直于草图平面。 然后删除会话。这是保存文档和关闭会话的通常顺序 [ 33]
总之
此用例演示了创建和修改机械特征的方法。
引用
[1]
表单特征和上下文特征概念
[2]
构建和启动 CAA V5 用例
[3]
创建新文档
历史版本
版本: 1 [2000年4月]
创建文档
[Top]
版权所有 © 2000, 达索系统. 保留所有权利.