Catia CAA 二次开发----batch program
来源:互联网 发布:淘宝店铺装修百度视频 编辑:程序博客网 时间:2024/04/19 12:24
View Code
#include <iostream.h>#include <math.h>//System#include "CATUnicodeString.h"//ObjectModelerBase#include "CATDocumentServices.h"#include "CATSession.h" #include "CATSessionServices.h" #include "CATDocument.h"#include "CATIContainer.h"//ObjectSpecsModeler#include "CATISpecObject.h"//PartInterfaces#include "CATIShaft.h"#include "CATIPad.h"#include "CATIPrtFactory.h"//SketcherInterfaces#include "CATISketch.h"#include "CATI2DWFFactory.h"#include "CATISketchFactory.h"//MecModInterfaces#include "CATIContainerOfDocument.h"//Mathematics#include "CATMath.h"int main(int argc, char ** argv) { //-------------------------------------------------------------------- // Check Argument //-------------------------------------------------------------------- cout << " -- Check Argument --" << endl << flush; if ( argc < 2) { cout << " ERROR : Pass file name as argument" << endl; return 1; } else cout << " Argument Checked OK." << endl << flush; //-------------------------------------------------------------------- // Variable declarations //-------------------------------------------------------------------- //char *pFileName = "TSTScrewResult"; char *pFileName = argv[1]; //------------------ // Create a Session //------------------ cout << " -- Create a Session --" << endl; char *sessionName = "TSTScrewSession"; CATSession *pSession = NULL; HRESULT hr = ::Create_Session(sessionName, pSession); if ((FAILED(hr)) || (NULL == pSession)) { cout << "ERROR in creating session" << endl << flush; return 2; } //------------------ // Create a Document //------------------ CATDocument *pDocument = NULL; hr = CATDocumentServices::New("Part", pDocument); if( (FAILED(hr)) || (pDocument == NULL) ) { cout << "ERROR in Create New Document" << endl; return 3; } else { cout << "---->OK" << endl; } //---------------------------------------------// // 1 - Retrieve Specification container // //---------------------------------------------// cout << " -- Retrieve Specification container --" << endl; //retrieve a CATIContainerOfDocument interface on the CATPart document CATIContainerOfDocument * piContainerOfDoc = NULL; hr = pDocument->QueryInterface(IID_CATIContainerOfDocument, (void**) &piContainerOfDoc); if (FAILED(hr) || (piContainerOfDoc == NULL)) { cout<< "Cannot find interface CATIContainerOfDocument on CATPart" <<endl; return 4; } //with this interface, retrieve the specification container //Note: the specification container (CATPrtCont), contains the mechanical features // of a document CATIContainer *piSpecContainer = NULL; hr = piContainerOfDoc->GetSpecContainer(piSpecContainer); if (FAILED(hr) || (piSpecContainer == NULL)) { cout<< "Cannot retrieve Specification container " <<endl; return 5; } piContainerOfDoc->Release();piContainerOfDoc=NULL; //----------------------------------// // 2 - Retrieve Factories // //----------------------------------// cout << " -- Retrieve Factories --" << endl; // a - Retrieve the Sketcher Factory // this factory allow us to create sketch feature CATISketchFactory *piSketchFactory = NULL; hr = piSpecContainer->QueryInterface (IID_CATISketchFactory, (void **) &piSketchFactory ); if (FAILED(hr) || (NULL == piSketchFactory)) { cout<<"failed to get interface CATISketchFactory from spec. container"<<endl; return 5; } // b - Retrieve the Part Factory CATIPrtFactory *piPrtFactory = NULL; hr = piSpecContainer->QueryInterface(IID_CATIPrtFactory, (void**) &piPrtFactory); if (FAILED(hr) || (NULL == piPrtFactory)) { cout<<"failed to get interface CATIPrtFactory from spec. container"<<endl; return 6; } piSpecContainer->Release();piSpecContainer=NULL; //----------------------------------// // 3 - Create Sketch for Rod // //----------------------------------// cout << " -- Create Sketch for Rod --" << endl; double HeadHeight = 11; double HeadRadius = 10; // a - Create Head Sketch // Define Origine and main vector double origin[3] = {0,0,0}; double xAxis[3] = {1,0,0}; double yAxis[3] = {0,1,0}; double zAxis[3] = {0,0,1}; CATISpecObject_var spSpecOnSketch = piSketchFactory->CreateSketch(origin, xAxis, yAxis); if (NULL_var == spSpecOnSketch) { cout<<"failed to create Sketch feature"<<endl; return 7; } // b - Open Edition CATISketch *piSketch = NULL; hr = spSpecOnSketch->QueryInterface(IID_CATISketch, (void **)&piSketch); if (FAILED(hr) || (NULL == piSketch)) { cout <<"failed to get interface CATISketch on sketch" <<endl; return 8; } piSketch->OpenEdition(); // c - Retrieve 2DFactory CATI2DWFFactory *piFactoryOnSketch = NULL; hr = spSpecOnSketch->QueryInterface(IID_CATI2DWFFactory, (void **)&piFactoryOnSketch); if (FAILED(hr) || (NULL == piFactoryOnSketch)) { cout <<"failed to get interface CATI2DWFFactory on sketch" <<endl; return 9; } // d - Create element double P1[3] = {HeadRadius, 0, 0}; double P2[3] = {HeadRadius/2., HeadRadius*CATSqrt(3.)/2.,0}; double P3[3] = {-HeadRadius/2., HeadRadius*CATSqrt(3.)/2.,0}; double P4[3] = {-HeadRadius, 0, 0}; double P5[3] = {-HeadRadius/2.,-HeadRadius*CATSqrt(3.)/2.,0}; double P6[3] = {HeadRadius/2., -HeadRadius*CATSqrt(3.)/2.,0}; piFactoryOnSketch->CreateLine(P1, P2); piFactoryOnSketch->CreateLine(P2, P3); piFactoryOnSketch->CreateLine(P3, P4); piFactoryOnSketch->CreateLine(P4, P5); piFactoryOnSketch->CreateLine(P5, P6); piFactoryOnSketch->CreateLine(P6, P1); // e - close Edition piSketch->CloseEdition(); //----------------------------------// // 4 - Create a Pad // //----------------------------------// cout << " -- Create a Pad --" << endl; // a - Create a Pad CATISpecObject_var spSpecOnPad = piPrtFactory->CreatePad(spSpecOnSketch); if (NULL_var == spSpecOnPad) { cout<<"failed to create Pad feature"<<endl; return 10; } // b - Modify Parameter CATIPad *piPad = NULL; hr = spSpecOnPad->QueryInterface(IID_CATIPad, (void **)&piPad); if (FAILED(hr) || (NULL == piPad)) { cout<<"failed to get interface CATIPad from spSpecOnPad"<<endl; return 11; } piPad->ModifyEndOffset(HeadHeight); piPad->ReverseDirection(); // c - Update spSpecOnPad->Update(); //releases piSketch->Release();piSketch=NULL; piFactoryOnSketch->Release();piFactoryOnSketch=NULL; piPad->Release();piPad=NULL; //----------------------------------// // 5 - Create a Sketch for Head // //----------------------------------// cout << " -- Create a Sketch for Head --" << endl; double RodRadius = 5; double RodLength = 45; // a - Create a Sketch CATISpecObject_var spSpecOnSketchForShaft = piSketchFactory->CreateSketch(origin, zAxis, xAxis); if (NULL_var == spSpecOnSketchForShaft) { cout<<"failed to create Sketch feature"<<endl; return 11; } // b - Open Edition CATISketch_var spiSketch = spSpecOnSketchForShaft; if (NULL_var == spiSketch) { cout <<"failed to get interface CATISketch on sketch" <<endl; return 12; } spiSketch->OpenEdition(); // c - Retrieve 2DFactory CATI2DWFFactory_var spiFactoryOnSketch = spSpecOnSketchForShaft; if (NULL_var == spiFactoryOnSketch) { cout <<"failed to get interface CATI2DWFFactory on sketch" <<endl; return 13; } // d - Create element double M1[3] = {0, 0, 0}; double M2[3] = {0, RodRadius, 0}; double M3[3] = {RodLength, RodRadius, 0}; double M4[3] = {RodLength, 0, 0}; spiFactoryOnSketch->CreateLine(M1,M2); spiFactoryOnSketch->CreateLine(M2,M3); spiFactoryOnSketch->CreateLine(M3,M4); spiFactoryOnSketch->CreateLine(M4,M1); spiFactoryOnSketch->CreateCenterLine(M1,M4); //轴线 // e - close Edition spiSketch->CloseEdition(); //----------------------------------// // 6 - Create a Shaft // //----------------------------------// cout << " -- Create a Shaft --" << endl; CATISpecObject_var spSpecOnShaft = piPrtFactory->CreateShaft(spSpecOnSketchForShaft); if (NULL_var == spSpecOnShaft) { cout<<"failed to create Shaft feature"<<endl; return 14; } // b - Modify Parameter CATIShaft_var spiShaft = spSpecOnShaft; if (NULL_var == spiShaft) { cout <<"failed to get interface CATIShaft on the shaft" <<endl; return 15; } spiShaft->ModifyEndAngle(360.); spiShaft->ModifyStartAngle(0.); // c - Update spSpecOnShaft->Update(); // Release pointers piSketchFactory->Release(); piSketchFactory=NULL; piPrtFactory->Release(); piPrtFactory=NULL; //------------------ // Save a Document //------------------ cout << " -- Save document --" << endl; // Write the document under the path specified by pFileName hr = CATDocumentServices::SaveAs(*pDocument, pFileName); if( (FAILED(hr)) || (pDocument == NULL) ) { cout << "ERROR in saving Document" << endl; return 4; } else { cout << "---->OK" << endl; } //---------------- // Delete Session //---------------- cout << " -- Delete the Session --" << endl; pSession->Delete_Session(sessionName); return 0;}
需要在Framework->Module中使用,导入相应的CAT模块。
代码说明:
1.Create a Session
use the global function :: Create_Session
2.Create a Document
use the static method CATDocumentServices:New
3.Create sketches, a pad and a shaft
4.Save the Document
5.Delete the session
- Catia CAA 二次开发----batch program
- Catia CAA二次开发系列一
- Catia CAA二次开发系列二
- CATIA二次开发:CAA实现状态机
- CATIA二次开发CAA实现树形控件的方法
- CATIA二次开发CAA实现ActiveX插件(以Windows Media Player为例)的方法
- 想入门CATIA二次开发CAA的盆友看过来(谈谈开发经验,或许对你有帮助!)
- caa二次开发的安装
- VS2012配置CATIA R2016 CAA RADE
- Catia 二次开发 资料
- CATIA二次开发资源汇总
- Catia 二次开发 资料
- CATIA 二次开发 C#
- Catia二次开发R19安装说明
- Catia二次开发R22安装说明
- 【二次开发】如何使用C#进行CATIA二次开发
- 通过CAA在CATIA中创建自己的工具栏按钮和菜单
- 通过CAA在CATIA中创建自己的工具栏按钮和菜单
- 六边形UI效果
- 初识CAA
- Ubuntu 13.10 64位 ia32-libs未发现软件包 解决办法
- 通过CAA在CATIA中创建自己的工具栏按钮和菜单
- oracle---dual 的用法讲解
- Catia CAA 二次开发----batch program
- maven 编译部署src/main/java下的资源文件
- CATIA Automation 编程初探
- Ubuntu如何修改计算机名称
- 多流向算法gpu并行化
- 求出二叉树中找出和为某一值的所有路径
- Visual Studio2013编译报错,“因为计算机丢失MVSCRR120D.dll”解决办法
- VLC应用开发
- 如何读取shell 管道传输过来的内容