Creating a Nozzle Shape Thanks to Shape Design Features-使用外形设计工厂创建点、直线、平面、圆、分割、扫掠以及放样特征
摘要
- 通过本示例你将学到的内容
- 与 CATGsiToolkit 相关的几个重要概念
- CAAGsiNozzle 示例
- CAAGsiNozzle 的功能
- 如何运行 CAAGsiNozzle
- 在哪里可以找到 CAAGsiNozzle 代码
- 分步实现
- 小结
- 参考文献
通过本示例你将学到什么
与 CATGsiUserTools 相关的重要概念
CAAGsiNozzle 示例
CAAGsiNozzle 的功能

如何运行 CAAGsiNozzle
e:>CAAGsiNozzle 输出目录\CAAGsiNozzle.CATPart
在 UNIX 系统下
$ CAAGsiNozzle 输出目录/CAAGsiNozzle.CATPart
- outputDirectory:保存 CAAGsiNozzle.CATPart 文件的目录
- CAAGsiNozzle.CATPart:包含最终生成喷嘴形状的零件文件
在哪里可以找到 CAAGsiNozzle 代码
-
Windows 系统路径
InstallRootDirectory/CAAGSMInterfaces.edu/CAAGsiNozzle.m/-
UNIX 系统路径
InstallRootDirectory/CAAGSMInterfaces.edu/CAAGsiNozzle.m/
其中 InstallRootDirectory 为 CATIA CAA 安装光盘的安装根目录。
分步操作
- 初始化准备
- 创建点特征
- 创建平面与直线特征
- 创建圆特征
- 创建分割与样条线特征
- 创建扫掠与放样特征
初始化准备
int main(int argc, char **argv, char **envp)
{
HRESULT rc = S_OK;
char* pSessionName = "CAA2SampleSession";
rc = CAAGsiObjTool.Init( pSessionName);
if (FAILED(rc)) return 1;
int setAsCurrent = 1;
CATIGSMTool_var spTool = CAAGsiObjTool.CreateGSMTool("Nozzle",setAsCurrent);
...
随后,我们创建一个开放几何体(Open Body),用于在其中插入创成式外形设计特征。调用 CreateGSMTool 方法,该方法会返回已创建好的 GSMTool(开放几何体)对象。
创建点特征
如何创建坐标点特征:
...
CATLISTV(CATISpecObject_var) aObjectParameters;
...
CATISpecObject_var spCurrent = NULL_var;
CAAGsiObjTool.CreateLength("X", 17.0, spCurrent);
aObjectParameters.Append(spCurrent);
CAAGsiObjTool.CreateLength("Y", 0.0, spCurrent);
aObjectParameters.Append(spCurrent);
CAAGsiObjTool.CreateLength("Z", 0.0, spCurrent);
aObjectParameters.Append(spCurrent);
CATISpecObject_var spPoint1 = CAAGsiObjTool.CreatePointCoord(aObjectParameters);
aObjectParameters.RemoveAll();
...
spCurrent,再将其添加到输入列表 aObjectParameters 中,该列表用于按顺序存储创建特征所需的参数。最后调用 CreatePointCoord 方法,以 aObjectParameters 为输入,创建出坐标点。如何创建曲线上的点特征:
...
spCurrent = NULL_var;
aObjectParameters.Append(spSplit2);
aObjectParameters.Append(spCurrent);
CAAGsiObjTool.CreateReal("Parm", 0.0, spCurrent);
aObjectParameters.Append(spCurrent);
CATISpecObject_var spPoint14 = CAAGsiObjTool.CreatePointOnCurve(aObjectParameters,TRUE);
aObjectParameters.RemoveAll();
...
本段代码基于 Split.12 特征,在曲线长度为 0 的位置创建一个曲线上的点。实现步骤为:首先获取 spSplit12 的 CATISpecObject 智能指针并加入输入列表;随后将 spCurrent 置空并加入列表,表示曲线长度的参考起点将以 Split.12 特征的起始端点计算;接着调用 CreateReal 方法创建表示曲线长度的实数参数;最后调用对应方法创建曲线上的点特征。
创建平面与直线特征
...
CAAGsiObjTool.CreateLength("A", 0.0, spCurrent);
aObjectParameters.Append(spCurrent);
CAAGsiObjTool.CreateLength("B", 1.0, spCurrent);
aObjectParameters.Append(spCurrent);
CAAGsiObjTool.CreateLength("C", 0.0, spCurrent);
aObjectParameters.Append(spCurrent);
CAAGsiObjTool.CreateLength("D",10.0, spCurrent);
aObjectParameters.Append(spCurrent);
CATISpecObject_var spPlaneY10 = CAAGsiObjTool.CreatePlaneEquation(aObjectParameters);
aObjectParameters.RemoveAll();
...
aObjectParameters 定义平面方程,依次创建代表平面方程系数的四个长度参数,创建完成后调用 CreatePlaneEquation 方法生成平面。我们也可以用类似方式创建直线:
...
aObjectParameters.Append(spPoint3);
aObjectParameters.Append(spPoint5);
CATISpecObject_var spLine3 = CAAGsiObjTool.CreateLinePtPt(aObjectParameters);
aObjectParameters.RemoveAll();
...
我们创建了一条由两点定义的简单直线。分别获取点 3(Point.3)和点 5(Point.5)对应的 CATISpecObject 智能指针 spPoint3 与 spPoint5,并将其存入输入列表 aObjectParameters,再通过 CreateLinePtPt 方法创建两点连线特征。
创建圆特征
如何创建圆:
...
aObjectParameters.Append(spPoint5);
aObjectParameters.Append(spPoint6);
aObjectParameters.Append(spPlaneY15);
CAAGsiObjTool.CreateLength("Radius", 15.0, spCurrent);
aObjectParameters.Append(spCurrent);
CATISpecObject_var spCircle3 = CAAGsiObjTool.CreateCircle2PointsRad(aObjectParameters,FALSE,TRUE);
aObjectParameters.RemoveAll();
...
该圆将经过点 5 和点 6,并以平面 Y=15 作为参考平面。圆 Circle.3 不会是测地线圆,而是保持由输入参数定义的原有方向。最终生成的圆弧段取决于传递给 CreateCircle2PointsRad 方法的方向参数。
创建分割与样条线特征
...
aObjectParameters.Append(spCircle6);
aObjectParameters.Append(spPlaneAngle35);
CATISpecObject_var spSplit1 = CAAGsiObjTool.CreateSplit(aObjectParameters,TRUE);
aObjectParameters.RemoveAll();
...
我们创建一个分割特征,使用 Plane.6 对 Circle.6 进行边界修剪。实现方式为:将 spCircle6 和 spPlaneAngle35 加入输入列表 aObjectParameters,然后调用 CreateSplit 方法创建 Split.1 特征。布尔参数 TRUE 用于选择被分割后的圆弧保留哪一侧。
如何创建样条线特征:
...
aObjectParameters.Append(spPoint15);
aObjectParameters.Append(spPoint16);
CATISpecObject_var spDir1 = CAAGsiObjTool.CreateDirection(spLine7);
CATISpecObject_var spDir2 = CAAGsiObjTool.CreateDirection(spLine8);
CATISpecObject_var spSpline = CAAGsiObjTool.CreateSpline(aObjectParameters,spDir1,FALSE,spDir2,TRUE);
aObjectParameters.RemoveAll();
...
上面创建的两个方向特征不会在结构树(Procedural View)中显示 [3]。因为方向特征属于外形设计模块的内部特征。
创建扫掠与放样特征
...
aObjectParameters.Append(spLine2);
aObjectParameters.Append(spCircle1);
CATISpecObject_var spSweep1 = CAAGsiObjTool.CreateSweepOneGuide(aObjectParameters);
aObjectParameters.RemoveAll();
...
放样特征的创建方法如下:
...
CATLISTV(CATISpecObject_var) aObjectParametersSections;
aObjectParametersSections.Append(spCircle2);
aObjectParametersSections.Append(spCircle3);
aObjectParameters.Append(spLine3);
CATISpecObject_var spUnused = NULL_var;
CATISpecObject_var spLoft1 = CAAGsiObjTool.CreateLoft(aObjectParametersSections,
aObjectParameters,
spUnused);
aObjectParameters.RemoveAll();
aObjectParametersSections.RemoveAll();
...
我们以圆 Circle.2、Circle.3 为截面,直线 Line.3 为引导线,创建一个放样特征。输入列表 aObjectParameters 用于存放引导曲线,截面曲线则存放在专用列表 aObjectParametersSections 中。调用 CreateLoft 方法时,代表脊线的参数 spUnused 设为空变量,这里使用了放样特征自带的自动脊线功能。

浙公网安备 33010602011771号