功能代码

2020-05-08 10:15

在创建任何几何对象之前,必须在激活的函数命令中添加以下代码 //获取editor, the document and the container CATFrmEditor* pEditor = CATFrmEditor::GetCurrentEditor(); if(pEditor == NULL) {

printf(\}

CATDocument *pDoc = pEditor->GetDocument(); CATIContainerOfDocument_var spConODocs = pDoc; CATIContainer* pSpecContainer = NULL;

HRESULT hr = spConODocs->GetSpecContainer(pSpecContainer); if(spConODocs == NULL_var)

{

printf(\}

//设置工厂 CATIGSMFactory_var spGSMFactory = NULL_var; CATIPrtFactory_var spPrtFactory = NULL_var; CATICkeParmFactory_var spParmFactory = NULL_var; spGSMFactory = pSpecContainer;

spPrtFactory = pSpecContainer; spParmFactory = pSpecContainer;

//在这基础上你才可以造型,GSMFactory用于创建底层的

//几何对象比如点、线等。PrtFactory包含创建孔特征、拉伸特征实体等函数。 //ParmFactory 包含设定参数的函数。

//创建一个三维数组(x,y,z)定义点坐标 double Coords[3]; Coords[0] = 0; Coords[1] = 0; Coords[2] = 0;

//创建一个CATIGSMPoint并将其转换为CATISpecObject CATIGSMPoint_var spPoint1 = spGSMFactory->CreatePoint(Coords);

//Creates a point CATISpecObject_var spSpecPoint1 = spPoint1; //Casts the point as a CATISpecObject

//为了在CATIA显示你创建的点,必须将其添加到视图中 spSpecPoint1->Update(); CATIGSMProceduralView_var spPntObj = spSpecPoint1;

spPntObj->InsertInProceduralView();

//利用创建的点创建一条线,并将其转换为CATISpecObject CATISpecObject_var spSupport = NULL_var;

CATIGSMLinePtPt_var spLine1 = spGSMFactory->CreateLine(spSpecPoint 1, spSpecPoint2, spSupport);

CATISpecObject_var spSpecLine1 = spLine1;

//通过参考平面创建草图 CATIPrtPart_var spPart(pIPrtContOnDocument->GetPart());

pIPrtContOnDocument->Release(); //有了CATIPrtPart变量就可以利用其方法GetReferencePlanes(),获取参考 平面

CATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePla nes();

//然后创建XY plane (spRefPlanes[1])

CATISketchFactory_var spSketchFactory(pSpecContainer);

if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCComple ted);

CATISketch_var spSketch(spSketchFactory->CreateSketch(spRefPlanes [1]));

if ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted); spSketch->OpenEdition(); ······//编辑草图 spSketch->CloseEdition();

//通过原点和两个矢量方向 //定义原点和方向:

double origin[3]={0.0,0.0,10.0}; double x_dir[3]={1.0,0.0,0.0}; double y_dir[3]={0.0,1.0,0.0};

CATISketchFactory_var spSketchFactory(pSpecContainer); if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCComple ted);

CATISketch_var spSketch(spSketchFactory->CreateSketch(origin,x_dir, y_dir));

if ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted); spSketch->OpenEdition(); ······//编辑草图 spSketch->CloseEdition();

//通过三点创建一个参考平面,后面进行圆弧倒角时要用到该平面 CATIGSMPlane3Points_var Supportplane = spGSMFactory->CreatePlane(spPo int1, spPoint2,spPoint3); CATISpecObject_var spSupportplane = Supportplane;

//创建倒角半径的参数 CATICkeParm_var Radius1 = NULL_var;

CATICkeMagnitude_var spRadMag = spParamDictionary->FindMagnitude(\GTH\CATUnicodeString name(\

Radius1 = spParmFactory->CreateDimension(spRadMag,name, .01);

//创建倒角 CATIGSMCorner_var Corner1 = spGSMFactory->CreateCorner(spLine1, spLine2, spSupportplane, Radius1,

CATGSMSameOrientation, CATGSMSameOrientation, FALSE); CATISpecObject_var spCorner1 = Corner1;

//裁剪去多余的线和点 CATIGSMSplit_var Split1 = spGSMFactory->CreateSplit(spLine1, spRadius1, CATGSMSameOrientation);

CATISpecObject_var spSplit1 = Split1; CATIGSMSplit_var Split1a = spGSMFactory->CreateSplit(spSplit1, spRadius3, CATGSMInvertOrientation);

CATISpecObject_var spSplit1a = Split1a;

//将线和圆弧依次连接起来,创建一个序列 CATLISTV(CATISpecObject_var) joincurves; joincurves.Append(spSplit1a); joincurves.Append(spSplit2a);

joincurves.Append(spSplit3a); joincurves.Append(spRadius1); joincurves.Append(spRadius2); joincurves.Append(spRadius3);

//在序列连接起来之前,需要创建一个最小的结合距离 CATICkeParm_var Mergedist = NULL_var;

CATICkeMagnitude_var spMergedist = spParamDictionary->FindMagnitude(\LENGTH\CATUnicodeString mergename(\Mergedist = spParmFactory->CreateDimension(spMergedist, mergename, .0001);

//连接起来并插入到视图中

//Now we can join this list of objects into a single shape and insert it into the part. CATIGSMAssemble_var CurveAssy = spGSMFactory->CreateAssemble(joincurv es,

Mergedist, FALSE); CATISpecObject_var spCurveAssy = CurveAssy; spCurveAssy->Update(); CATIGSMProceduralView_var spCurObj = spCurveAssy; spCurObj->InsertInProceduralView();

//创建(Create the new document)

CATDocument* pDoc = NULL; rc = CATDocumentServices::New(\if (NULL != pDoc) {

cout << \} else {

cout << %ush; return 2; }

//打开(Load the document)

CATDocument *pDoc = NULL; rc = CATDocumentServices::Open(argv[1], pDoc);

if (SUCCEEDED(rc) && (NULL != pDoc)) {

cout << \} else {

cout << \l << flush; return 2; }

//获取当前文档 CATFrmEditor * pEditor = GetEditor(); if (NULL != pEditor ) {

cout << \} else {

cout << \ndl << flush; return 1;

} CATDocument *pDoc = pEditor->GetDocument(); if (NULL != pDoc)

{

cout << \} else

{

cout << \< endl << flush; return 2; }

//提取根容器(Retrieving the Document Root Container) CATInit *piInitOnDoc = NULL;

rc = pDoc -> QueryInterface (IID_CATInit, (void**) &piIn


功能代码.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:XX年关于爱国主义教育基地调研报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: