CATIA二次开发入门教程---20 创建草图
CATIA二次开发入门教程---20 创建草图////////获得Editor、Document、Container、设置GSMFactory
CATFrmEditor* pEditor = CATFrmEditor::GetCurrentEditor();
CATDocument *pDoc = pEditor->GetDocument();
CATIContainerOfDocument_var spConODocs = pDoc;
CATIContainer* pContainer; //Container
CATIPrtContainer* pPrtContainer;//PartContainer
CATIGSMFactory_var spGSMFactory; //GSM工厂
CATIPrtPart_var spPrt ;//
HRESULT hr = spConODocs->GetSpecContainer(pContainer);//获取Container
hr =pContainer->QueryInterface(IID_CATIPrtContainer,(void **)&pPrtContainer);//获取PrtContainer
spPrt = pPrtContainer->GetPart();
CATListValCATISpecObject_var spListRefPlanes = spPrt->GetReferencePlanes();//获取3个参考平面
CATISpecObject_var spSketchPlane = spListRefPlanes;//第三个平面
CATISketchFactory_var spSketchFactOnPrtCont(pPrtContainer);//草图工厂
CATISketch_var spSketch = spSketchFactOnPrtCont->CreateSketch( spSketchPlane ); //创建草图
CATI2DWFFactory_var spWF2DFactOnSketch(spSketch);
spSketch->OpenEdition(); //进入草图开始绘图
spSketch->CloseEdition();//退出草图环境
有两种方式可以创建草图:
1)通过参考平面创建
首先获取一个CATIPrtPart变量:
CATIPrtPart_var spPart(pIPrtContOnDocument->GetPart());
pIPrtContOnDocument->Release();
有了CATIPrtPart变量就可以利用其方法GetReferencePlanes(),获取参考平面
CATLISTV(CATISpecObject_var) spRefPlanes = spPart->GetReferencePlanes();
然后创建XY plane (spRefPlanes)
CATISketchFactory_var spSketchFactory(pSpecContainer);
if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);
CATISketch_var spSketch(spSketchFactory->CreateSketch(spRefPlanes));
if ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);
spSketch->OpenEdition();
2) 通过原点和两个矢量方向
该方法是通过定义一个原点和两个方向pH、pV进行创建。
定义原点和方向:
double origin={0.0,0.0,10.0};
double x_dir={1.0,0.0,0.0};
double y_dir={0.0,1.0,0.0};
CATISketchFactory_var spSketchFactory(pSpecContainer);
if ( NULL_var == spSketchFactory ) return (CATStatusChangeRCCompleted);
CATISketch_var spSketch(spSketchFactory->CreateSketch(origin,x_dir,y_dir));
if ( NULL_var == spSketch ) return (CATStatusChangeRCCompleted);
spSketch->OpenEdition();
到这里,你已经创建了一个Sketch,你可以在上面创建任意的草图了。
创建好记住要将其关闭:
spSketch->CloseEdition();
在设计产品是不可能只选择XY,XZ,YZ这三个参九参考面,哪么问题就来了,例如用户选择实体上某个平面特征为参考面,进行下步的设计,这个在产品设计过程中经常使用,CAA二次开发如何实现呀
页:
[1]