admin 发表于 2017-12-22 13:44:56

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();//退出草图环境

      

admin 发表于 2017-12-22 13:45:19

有两种方式可以创建草图:
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();


cwp86 发表于 2018-3-25 10:10:36

在设计产品是不可能只选择XY,XZ,YZ这三个参九参考面,哪么问题就来了,例如用户选择实体上某个平面特征为参考面,进行下步的设计,这个在产品设计过程中经常使用,CAA二次开发如何实现呀


页: [1]
查看完整版本: CATIA二次开发入门教程---20 创建草图