Machining

NC Review

User Opposite Hand Machining

Implementing CATIMfgUserReverseMachiningConditions, CATIMfgUserOppositeHandMachiningOptions and CATICreateInstance
Use Case

Abstract

This article discusses the CAAMaiUserOppositeHandMachining use case.


What You Will Learn With This 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]

The CAAMaiUserOppositeHandMachining Use Case

CAAMaiUserOppositeHandMachining is a use case of the CAAManufacturingItf.edu framework that illustrates ManufacturingInterfaces framework capabilities.

[Top]

What Does CAAMaiUserOppositeHandMachining Do

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]

How to Launch CAAMaiUserOppositeHandMachining

To launch CAAMaiUserOppositeHandMachining, you will need to :

[Top]

Where to Find the CAAMaiUserOppositeHandMachining Code

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]

Step-by-Step

There are three logical steps in CAAMaiUserOppositeHandMachining:

  1. Create an extension class to implement CATIMfgUserReverseMachiningConditions for a user-operation
  2. Create an implementation class of CATIMfgUserOppositeHandMachiningOptions
  3. Create an extension class to implement CATICreateInstance

We now comment these sections by looking at the code.

[Top]

Create an extension class to implement CATIMfgUserReverseMachiningConditions for a user-operation

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;
}
      

Create an implementation class of CATIMfgUserOppositeHandMachiningOptions

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;
}
      

Create an implementation class to implement CATICreateInstance

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]


In Short

This article provides an example on how to use the manufacturing interface classes to customize Opposite Hand Machining.

[Top]


References

[1] Building and Launching a CAA V5 Use Case
[Top]

History

Version: 1 [September 2004] Document created
[Top]

Copyright © 2000, Dassault Systèmes. All rights reserved.