Machining |
NC Review |
User Opposite Hand MachiningImplementing CATIMfgUserReverseMachiningConditions, CATIMfgUserOppositeHandMachiningOptions and CATICreateInstance |
Use Case |
AbstractThis article discusses the CAAMaiUserOppositeHandMachining use case. |
This use case helps you to define reverse machining conditions for a user-operation (CATIMfgUserReverseMachiningConditions), and to set its check-box name and associated setting names of the Opposite Hand Machining Options panel (CATIMfgUserOppositeHandMachiningOptions and CATICreateInstance).
[Top]
CAAMaiUserOppositeHandMachining is a use case of the CAAManufacturingItf.edu framework that illustrates ManufacturingInterfaces framework capabilities.
[Top]
CAAMaiUserOppositeHandMachining provides an implementation of CATIMfgUserReverseMachiningConditions for a Profile Contouring operation, and an implementation of CATIMfgUserOppositeHandMachiningOptions and CATICreateInstance to set its check-box name (CAA Profile Contouring) and associated setting names of the Opposite Hand Machining Options panel. .
[Top]
To launch CAAMaiUserOppositeHandMachining, you will need to :
Windows | InstallRootDirectory\CAADoc\CAAManufacturingItf.edu\CNext\code\dictionary\ |
Unix | InstallRootDirectory/CAADoc/CAAManufacturingItf.edu/CNext/code/dictionary/ |
where InstallRootDirectory
is the directory where the CAA
CD-ROM is installed, and decomment the following line by removing the '#CAA#'
character:
ProfileContouring CATIMfgUserReverseMachiningConditions libCAAMaiUserOppositeHandMachining
CAAEMaiUserOppositeHandMachiningOptions CATIMfgUserOppositeHandMachiningOptions libCAAMaiUserOppositeHandMachining
CAAEMaiUserOppositeHandMachiningOptions CATICreateInstance libCAAMaiUserOppositeHandMachining
Windows | InstallRootDirectory\CAADoc\CAAManufacturingItf.edu\CNext\resources\graphic\ |
Unix | InstallRootDirectory/CAADoc/CAAManufacturingItf.edu/CNext/resources/graphic/ |
[Top]
The CAAMaiUserOppositeHandMachining use case is located in :
Windows | InstallRootDirectory\CAADoc\CAAManufacturingItf.edu\CAAMaiUserOppositeHandMachining.m |
Unix | InstallRootDirectory/CAADoc/CAAManufacturingItf.edu/CAAMaiUserOppositeHandMachining.m |
where InstallRootDirectory
is the directory where the CAA CD-ROM
is installed.
[Top]
There are three logical steps in CAAMaiUserOppositeHandMachining:
We now comment these sections by looking at the code.
[Top]
The sample extension class of a Profile Contouring implementing CATIMfgUserReverseMachiningConditions is named CAAEMaiUserReverseMachiningConditions :
#include "CAAEMaiUserReverseMachiningConditions.h" #include "CATBaseUnknown.h" #include "CATIMfgActivity.h" #include "CATSettingRepository.h" #include "CATListOfCATBaseUnknown.h" #include "CATIMfgProfileContouringRelimitingElement.h" //----------------------------------------------------------------------------- // Supported Interface //----------------------------------------------------------------------------- #include "TIE_CATIMfgUserReverseMachiningConditions.h" TIE_CATIMfgUserReverseMachiningConditions(CAAEMaiUserReverseMachiningConditions); CATImplementClass(CAAEMaiUserReverseMachiningConditions,DataExtension,CATBaseUnknown,ProfileContouring); //----------------------------------------------------------------------------- // Constructor //----------------------------------------------------------------------------- CAAEMaiUserReverseMachiningConditions::CAAEMaiUserReverseMachiningConditions() {} //----------------------------------------------------------------------------- // Destructor //----------------------------------------------------------------------------- CAAEMaiUserReverseMachiningConditions::~CAAEMaiUserReverseMachiningConditions() {} //----------------------------------------------------------------------------- // ReverseMachiningConditions //----------------------------------------------------------------------------- HRESULT CAAEMaiUserReverseMachiningConditions::ReverseMachiningConditions() { HRESULT RC = S_OK; { int SettingsOKForReverseCAAProfileContouring=0; CATSettingRepository* pOperation = CATSettingRepository::GetRepository("NCMfgOperation"); if (NULL!=pOperation) { pOperation -> ReadSetting("ReverseMO_CAAProfileContouring",&SettingsOKForReverseCAAProfileContouring); } if (SettingsOKForReverseCAAProfileContouring==1) { CATIMfgActivity_var hActivity(GetImpl()); if (NULL_var!=hActivity) { CATBaseUnknown_var hFeature = hActivity -> GetFeatureInContext(); if (NULL_var!=hFeature) { CATIMfgProfileContouringRelimitingElement_var hPCRE(hFeature); if (NULL_var!=hPCRE) { // Swap start/end relimiting geometry CATUnicodeString StartPos,EndPos; double StartOffset=0.,EndOffset=0.; CATBaseUnknown_var hStartProduct,hEndProduct; CATLISTP(CATBaseUnknown) LOStartElt,LOEndElt; CATUnicodeString UStart("StartElement"),UEnd("EndElement"); RC = hPCRE -> GetRelimitingGeometry(UStart,LOStartElt,hStartProduct,StartOffset,StartPos); if (FAILED(RC)) goto LABEL_END; RC = hPCRE -> GetRelimitingGeometry(UEnd ,LOEndElt ,hEndProduct ,EndOffset ,EndPos); if (FAILED(RC)) goto LABEL_END; RC = hPCRE -> SetRelimitingGeometry(UStart,LOEndElt ,hEndProduct ,EndOffset ,EndPos); if (FAILED(RC)) goto LABEL_END; RC = hPCRE -> SetRelimitingGeometry(UEnd ,LOStartElt,hStartProduct,StartOffset,StartPos); if (FAILED(RC)) goto LABEL_END; } } } } } LABEL_END: return RC; } |
The sample implementation class of CATIMfgUserOppositeHandMachiningOptions is named CAAEMaiUserOppositeHandMachiningOptions :
#include "CAAEMaiUserOppositeHandMachiningOptions.h" #include "CATBaseUnknown.h" //----------------------------------------------------------------------------- // Supported Interface //----------------------------------------------------------------------------- #include "TIE_CATIMfgUserOppositeHandMachiningOptions.h" TIE_CATIMfgUserOppositeHandMachiningOptions(CAAEMaiUserOppositeHandMachiningOptions); CATImplementClass(CAAEMaiUserOppositeHandMachiningOptions,Implementation,CATBaseUnknown,CATNull); //----------------------------------------------------------------------------- // Constructor //----------------------------------------------------------------------------- CAAEMaiUserOppositeHandMachiningOptions::CAAEMaiUserOppositeHandMachiningOptions(): CATBaseUnknown() {} //----------------------------------------------------------------------------- // Destructor //----------------------------------------------------------------------------- CAAEMaiUserOppositeHandMachiningOptions::~CAAEMaiUserOppositeHandMachiningOptions() {} //----------------------------------------------------------------------------- // GetNames //----------------------------------------------------------------------------- HRESULT CAAEMaiUserOppositeHandMachiningOptions::GetNames(CATUnicodeString & oOperationName, CATUnicodeString & oSettingName, CATUnicodeString & oRepositoryName) { HRESULT RC=S_OK; { oOperationName = "CAA Profile Contouring"; oSettingName = "ReverseMO_CAAProfileContouring"; oRepositoryName = "NCMfgOperation"; } return RC; } |
The sample extension class of CAAEMaiUserOppositeHandMachiningOptions implementing CATICreateInstance is named CAAEMaiUserOppositeHandMachiningOptionsInst :
#include "CAAEMaiUserOppositeHandMachiningOptionsInst.h" #include "CAAEMaiUserOppositeHandMachiningOptions.h" //----------------------------------------------------------------------------- // Supported Interface //----------------------------------------------------------------------------- #include "TIE_CATICreateInstance.h" TIE_CATICreateInstance( CAAEMaiUserOppositeHandMachiningOptionsInst); CATImplementClass(CAAEMaiUserOppositeHandMachiningOptionsInst,CodeExtension,CATNull,CAAEMaiUserOppositeHandMachiningOptions); //----------------------------------------------------------------------------- // Constructor //----------------------------------------------------------------------------- CAAEMaiUserOppositeHandMachiningOptionsInst::CAAEMaiUserOppositeHandMachiningOptionsInst(): CATBaseUnknown() {} //----------------------------------------------------------------------------- // Destructor //----------------------------------------------------------------------------- CAAEMaiUserOppositeHandMachiningOptionsInst::~CAAEMaiUserOppositeHandMachiningOptionsInst() {} //----------------------------------------------------------------------------- // CreateInstance //----------------------------------------------------------------------------- HRESULT __stdcall CAAEMaiUserOppositeHandMachiningOptionsInst::CreateInstance (void ** oPPV) { CAAEMaiUserOppositeHandMachiningOptions * pt = new CAAEMaiUserOppositeHandMachiningOptions(); *oPPV = (void*) pt; if (NULL != pt) return S_OK; else return E_FAIL; } |
[Top]
This article provides an example on how to use the manufacturing interface classes to customize Opposite Hand Machining.
[Top]
[1] | Building and Launching a CAA V5 Use Case |
[Top] |
Version: 1 [September 2004] | Document created |
[Top] |
Copyright © 2000, Dassault Systèmes. All rights reserved.