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.