Equipment & Systems Engineering

Electrical Harness Flattening

Flattening a harness

How to flatten a harness
Use Case

Abstract

This article discusses the ElecFlatteningItf use case. This use case explains how to flatten a harness


What You Will Learn With This Use Case

This use case is intended to help you make your first steps in programming with CATIA EHF Interfaces. Its main intent is to allow you to flatten a harness.

[Top]

The CAAEhfFlattenManager Use Case

CAAEhfFlattenManager.m is a use case of the CAAElecFlatteningItf.edu framework that illustrates the CATIA EHF Interfaces framework capabilities.

[Top]

What Does CAAEhfFlattenManager Do?

The goal of CAAEhfFlattenManager use case is to show how to flatten a harness.

                                                                                                                             

                                               [Top]

How to Launch CAAEhfFlattenManager ?

Under Windows, the path would indicate:

'WS'\intel_a\resources\graphic\ModelFlattenManager directory.

[Top]

 Where to Find the CAAEhfFlattenManager Code

The CAAEhfFlattenManager  sample is made of a single class named CAAEhfFlattenManager located in the CAAEhfFlattenManager.m module of the CAAElecFlatteningItf.edu framework:

Windows InstallRootDirectory\CAAElecFlatteningItf.edu\CAAEhfFlattenManager.m\
Unix InstallRootDirectory/CAAElecFlatteningItf.edu/CAAEhfFlattenManager.m/

where InstallRootDirectory is the directory where the CAA CD-ROM is installed.

 

This sample deals with the following classes:

 

CATSession Class for the session base class
CATDocument Class for the document base class
CATDocumentServices Class for managing document in the session
CATIDocRoots Class for browsing root object in document
CATIProduct Interface dedicated to define product behaviour
CATIEleDocServices Interface dedicated electrical environment initialization
CATIEhfEnvironment Interfaces dedicated to retrieve the flattening parameter
CATIEhfFlatteningParameters Interfaces dedicated to read attribute on flattening parameter
CATMathPlane Class representing a mathematical plane in 3D

[Top]

 

Step-by-Step

------------------------------------------

We will now first comment the Electrical environment and it’s components creation by looking at the code of the Main . There are 8 logical steps in Main :

# Step
1 Check the input data
2 Create a session and open the document
3 Retrieve the root product of the input document
4 Initializing Electrical Environment
5 Get the Flattening Parameters
6 Retrieve the list of Geometrical Bundles
7 Flatten the Geometrical Bundles
8 Epilogue

[Top]

Check the input data.

 

...
if ( 2 > argc ) 
{
retCode = 1; 
goto EscapeWay;
}
...

[Top]

Create a session and open the document.

We need a CATSession pointer to create the Session.

...
pSession = CATSession::Create_Session(sessionIdent);

...

We need a CATDocument pointer to opening the document.

...
CATDocumentServices::Open(argv[1], pDoc, cusInType);

...

 

Once the current session has been created, the CATProduct document can be loaded into the session . pDoc is a pointer to this document.

[Top][Top]

Retrieve the root product of the input document.

We need a CATProduct pointer to retrieving the root product. 

....
  hr = pDoc->QueryInterface(IID_CATIDocRoots, (void**)(&pIDocRootsOnDoc));
if(FAILED(hr))
{
retCode = 4;
goto EscapeWay;
}

// Get the root product which is the first element of root elements
pListUnkRootProducts = pIDocRootsOnDoc->GiveDocRoots();
if(NULL == pListUnkRootProducts)
{
retCode = 5;
goto EscapeWay;
}

nProducts = pListUnkRootProducts->Size();
if( 0 == nProducts)
{
retCode = 6;
goto EscapeWay;
}

hUnkRootProd = (*pListUnkRootProducts)[1];
if(NULL_var == hUnkRootProd)
{
retCode = 7;
goto EscapeWay;
}

hr = hUnkRootProd->QueryInterface(IID_CATIProduct, (void**)(&pIRootProduct));
if(FAILED(hr))
{
retCode = 8;
goto EscapeWay;
}
....

[Top]

 

 

Initializing Electrical Environment.

We initialize the Document by using CATIEleDocServices interface pointer and the method Initialize() on it.

....
  // Initialise Electrical Environment
hr = pDoc->QueryInterface(IID_CATIEleDocServices,(void**)&pIEleDocServices );
if ( FAILED(hr) )
{
retCode = 9; 
goto EscapeWay;
}

hr = pIEleDocServices->Initialize();
if ( FAILED(hr) )
{
retCode = 10; 
goto EscapeWay;
}
....

Initializing the electrical environment is mandatory to enable access to electrical object or electrical attributes.

 

 

Get the Flattening parameters.

 

....
  hr = pIRootProduct->QueryInterface(IID_CATIEhfEnvironment,(void**)&pIEhfEnvironment);
if ( FAILED(hr) )
{
retCode = 11;
goto EscapeWay;
}

hr = pIEhfEnvironment->GetFlatteningParameters(&phListFlatteningPara);
if ( ( FAILED(hr) ) || ( NULL == phListFlatteningPara ) )
{
retCode = 12;
goto EscapeWay;
}

nbFlatteningPara = phListFlatteningPara->Size();
if (0 >= nbFlatteningPara)
{
retCode = 13;
goto EscapeWay;
}

hUnkFlatteningPara = (*phListFlatteningPara)[1];
if (NULL_var == hUnkFlatteningPara)
{
retCode = 14;
goto EscapeWay;
}

hr = hUnkFlatteningPara->QueryInterface(IID_CATIEhfFlatteningParameters, (void **)&pIFlatteningPara);
if ( FAILED(hr) )
{
retCode = 15;
goto EscapeWay;
}
....

 

 

Get the list of geometrial bundles

 

....
  phUnkListChildren = pIRootProduct->GetAllChildren("CATIEhiGeoBundle");
if( NULL == phUnkListChildren )
{
retCode = 16;
goto EscapeWay;
}

numGBN = phUnkListChildren->Size();
if( 0 >= numGBN )
{
retCode = 17;
goto EscapeWay; 
}

hUnkListElem = (*phUnkListChildren)[1] ;
if( NULL_var == hUnkListElem )
{
retCode = 18;
goto EscapeWay;
}

hr = hUnkListElem->QueryInterface(IID_CATBaseUnknown, (void**)&pIUnkGBN) ;
if( FAILED(hr) )
{
retCode = 19;
goto EscapeWay; 
}

ListOfGBNs.Append(pIUnkGBN) ;
....

[Top]

Flatten the harness

 ...
  hr = pIRootProduct->QueryInterface(IID_CATIEhfFlattenManager,(void**)&pIFlatten);
if ( FAILED(hr) )
{
retCode = 20;
goto EscapeWay;
}

hr = pIFlatten->FlattenHarness( &ListOfGBNs );
if (FAILED( hr))
{
retCode = 21;
goto EscapeWay;
}
 ...

[Top]

 

Epilogue

Removing document from session and closing the session.

 ...
  CATDocumentServices::Remove (*pDoc) ;

  if ( NULL != pSession )
  {
    pSession->Delete_Session(sessionIdent);
  }
 

 


In Short

This use case has demonstrated the way to flatten a harness. 

[Top]


[Top]

History

Version: 2 [January 2007] Document updated
[Top]

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