Machining |
3 Axis Surface Machining |
Managing Geometry with User Machining FeaturesCustomize the geometry tab page of a surface machining operation with user machining features |
Use Case |
AbstractThis article discusses the CAASmiUserOperationWithUserMF use case. It explains how to customize the default geometry tab page of a surface machining operation to be able to select geometry through an user machining feature's geometry attribute. This paper accompanies the first scenario of Surface Machining Operation Sample [1]. |
This use case is intended to help you to manage geometry of a surface machining operation with a machining feature geometry attribute.
More specifically, the CAASmiUserOperationWithUserMF Use Case shows how to:
[Top]
CAASmiUserOperationWithUserMF is a use case of the CAASurfaceMachiningItf.edu framework that illustrates Surface Machining capabilities. It is a part of the sample described in the technical article [1].
[Top]
This use case customizes the default geometry tab page of CAASmgOperation.
CAASmgOperation is associated with a new machining feature: CAASmgMachiningFeature.
CAASmgMachiningFeature has a geometry attribute : CAASmgGuide. This parameter can support manufacturing geometries or nc geometry features.
The geometry management is done by several functionalities:
![]() |
Description of functionalities illustrated:
|
[Top]
This use case is a part of Surface Machining Operation Sample [1]. You should build all the modules of this sample at a time to be able to launch it [2].
Don't forget to edit the interface dictionary located in:
Windows | InstallRootDirectory\CAASurfaceMachiningItf.edu\CNext\code\dictionary\ |
Unix | InstallRootDirectory/CAASurfaceMachiningItf.edu/CNext/code/dictionary/ |
where InstallRootDirectory
is the directory where the CAA CD-ROM
is installed, and uncomment the appropriate lines by removing the '#' character.
[Top]
This use case is made of source files located in the CAASmiUserOperationGeomUI.m module of the CAASurfaceMachiningItf.edu framework :
Windows | InstallRootDirectory\CAASurfaceMachiningItf.edu\CAASmiUserOperationGeomUI.m |
Unix | InstallRootDirectory/CAASurfaceMachiningItf.edu/CAASmiUserOperationGeomUI.m |
where InstallRootDirectory
is the directory where the CAA CD-ROM
is installed.
[Top]
CAASmiUserOperationWithUserMF is divided into the following steps:
We now comment each of those sections by looking at the code.
[Top]
To overload the geometry tab page, we should create an extension class that will implement CATIMfgGeometryActivity:
... // Tie the implementation to its interface #include "TIE_CATIMfgGeometryActivity.h" TIE_CATIMfgGeometryActivity( CAAESmiUserOperationGeometryEditor); ... |
[Top]
In GetMainPanelEditor, we create a new CAASmgMachiningFeature and we associate it with CAASmgOperation. Then we call the geometry dialog frame described below.
... // Associates a machining feature CATIMfgActivity * pActivity = NULL; oRC = QueryInterface(IID_CATIMfgActivity, (void**) &pActivity); if (SUCCEEDED(oRC)) { spMachFeature = pActivity->GetFeature(); if (NULL_var == spMachFeature) { // Create a user machining feature oRC = CreateCAAMachiningFeature(spMachFeature); if (SUCCEEDED(oRC)) { // Link the machining feature to the activity pActivity->SetFeature(spMachFeature); } } pActivity->Release(); pActivity = NULL; } // Creates the frame oFrame = new CAASmiUserOperationGeometryPanel(iFather,spMachFeature); ... |
[Top]
The CreateCAAMachiningFeature method is used to create CAASmgMachiningFeature.
At first, we retrieve the startup of CAASmgMachiningFeature from the catalog generated by CAASmiUserMachFeatureCatalog.m module.
... // Loads catalog CATUnicodeString CatalogFeature ("CAAUserMachiningFeatures.CATfct"); CATUnicodeString ClientID ("CAAManufacturing"); CATICatalog * pCatalogCont = NULL; oRC = ::AccessCatalog (&CatalogFeature,&ClientID,spFeatCont,&pCatalogCont); if (pCatalogCont == NULL) return oRC; // Retrieves startup from catalog CATBaseUnknown * pNewSUFeat = NULL; CATUnicodeString NewSUFeatType("CAASmgMachiningFeature"); oRC = pCatalogCont->RetrieveSU(&pNewSUFeat,&NewSUFeatType,"CATISpecObject"); if (FAILED(oRC)) return oRC; ... |
Then, we instanciate CAASmgMachiningFeature and we add the CAASmgGuide attribute with the AddNcGeometryParameter method of CATISmgNcGeometryManager. This method adds a geometry attribute which support standard geometries or nc geometry features.
... // Creates the machining feature (associated in Catalog) if (pNewSUFeat) { CATISpecObject * pSpecSUFeat = NULL; oRC = pNewSUFeat->QueryInterface(IID_CATISpecObject, (void**) &pSpecSUFeat); if (SUCCEEDED(oRC)) { oFeature = pSpecSUFeat->Instanciate("",spFeatCont); // Adds a geometric parameter "CAASmgGuide" if (!!oFeature) { CATISmgNcGeometryManager * pSmgManager = NULL; oRC = oFeature->QueryInterface(IID_CATISmgNcGeometryManager, (void**) &pSmgManager); if (SUCCEEDED(oRC)) { oRC = pSmgManager->AddNcGeometryParameter("CAASmgGuide",SmgEdgeType); pSmgManager->Release(); pSmgManager = NULL; } } ... |
Finally, we add our feature in the Manufacturing Container.
... // Adds the feature in the MfgView SEQUENCE(CATBaseUnknown_ptr) ListOfMfgView = spFeatCont->ListMembers(CATIMfgViewAccess::ClassName()); int NbMfgView = ListOfMfgView.length(); if (NbMfgView) { CATBaseUnknown * pBaseView = ListOfMfgView[NbMfgView - 1]; if (pBaseView) { CATIMfgViewAccess * pMfgView = NULL; oRC = pBaseView->QueryInterface(IID_CATIMfgViewAccess, (void**) &pMfgView); if (SUCCEEDED(oRC)) { pMfgView->AddFeature(oFeature); pMfgView->Release(); pMfgView = NULL; } pBaseView->Release(); } ... |
[Top]
In CAASmiUserOperationGeometryPanel class, SelectCurve is called whenever the user clicks on "Select a curve" button. It calls the CAASmiUserOperationGeometrySelCom command that manages the selection of standard geometries (edge or curve).
... // Sends Selection command new CAASmiUserOperationGeometrySelCom (this,_spGuide); ... |
[Top]
In CAASmiUserOperationGeometryPanel class, SelectZone is called whenever the user clicks on "Select a set of curves" button. It activates the standard dialog editor of NC Geometry Features management via the CATIEdit interface.
... CATIEdit * pEdit = NULL; HRESULT RC = _spGuide->QueryInterface(IID_CATIEdit, (void**) &pEdit); if (SUCCEEDED(RC)) { // For zone management pEdit->Activate(NULL); pEdit->Release(); pEdit = NULL; } ... |
[Top]
In CAASmiUserOperationGeometryPanel class, RemoveAll is called whenever the user clicks on "Remove all" button. It uses the RemoveAll method of CATISmgNcGeometryParameter interface.
... CATISmgNcGeometryParameter * pSmgParameter = NULL; HRESULT RC = _spGuide->QueryInterface(IID_CATISmgNcGeometryParameter, (void**) &pSmgParameter); if (SUCCEEDED(RC)) { pSmgParameter->RemoveAll(); pSmgParameter->Release(); pSmgParameter = NULL; } ... |
[Top]
In CAASmiUserOperationGeometryPanel class, NewZone is called whenever the user clicks on "Add a empty set" button. A Nc Geometry Feature is created by the CreateNcGeometryFeature method of CATISmgFactory. The Nc Geometry Feature is added with Add method of CATISmgNcGeometryParameter.
... // Creates a empty zone CATISmgFactory * pSmgFactory = NULL; HRESULT RC = spFeatCont->QueryInterface(IID_CATISmgFactory, (void**)&pSmgFactory); if (SUCCEEDED(RC)) { pSmgFactory->CreateNcGeometryFeature(SmgEdgeType,spNcFeature); pSmgFactory->Release(); pSmgFactory = NULL; } // Adds it in the guide parameter if (!!_spGuide && !!spNcFeature) { CATISmgNcGeometryParameter * pSmgParameter = NULL; RC = _spGuide->QueryInterface(IID_CATISmgNcGeometryParameter, (void**) &pSmgParameter); if (SUCCEEDED(RC)) { pSmgParameter->Add(spNcFeature); pSmgParameter->Release(); pSmgParameter = NULL; } } ... |
[Top]
In CAASmiUserOperationGeometryPanel class, Export is called whenever the user clicks on "Export curves in a new set" button. It uses the Export method of CATISmgNcGeometryParameter interface.
... CATISmgNcGeometryParameter * pSmgParameter = NULL; HRESULT RC = _spGuide->QueryInterface(IID_CATISmgNcGeometryParameter, (void**) &pSmgParameter); if (SUCCEEDED(RC)) { pSmgParameter->Export(); pSmgParameter->Release(); pSmgParameter = NULL; } ... |
[Top]
This use case has demonstrated how to manage surface machining operation geometry interactive with a geometry attribute of an user machining feature.
We will see now how to compute the tool path of our operation [3].
[Top]
[1] | Surface Machining Operation Sample Overview |
[2] | Building and Launching a CAA V5 Use Case |
[3] | Computing a Tool Path with User Machining Features |
[Top] |
Version: 1 [Mar 2002] | Document created |
[Top] |
Copyright © 2002, Dassault Systèmes. All rights reserved.