Equipment & Systems Engineering

Electrical Harness Flattening

Creating the Flattening Parameters

How to create the flattening parameters
Use Case

Abstract

This article discusses the ElecFlatteningItf use case. This use case explains how to create the flattening parameters


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 create the flattening parameters.

[Top]

The CAAEhfFlatteningParametersCreate Use Case

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

[Top]

What Does CAAEhfFlatteningParametersCreate Do?

The goal of CAAEhfFlatteningParametersCreate use case is to show how to create the flattening parameters.

                                                                                                                             

                                               [Top]

How to Launch CAAEhfFlatteningParametersCreate ?

To launch CAAEhfFlatteningParametersCreate, you will need to set up the build time environment, then compile CAAEhfFlatteningParametersCreate along with its prerequisites, set up the run time environment, and then execute the sample.

To launch the use case, execute the following command:

mkrun 

 

[Top]

 Where to Find the CAAEhfFlatteningParametersCreate Code

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

Windows InstallRootDirectory\CAAElecFlatteningItf.edu\CAAEhfFlatteningParametersCreate.m\
Unix InstallRootDirectory/CAAElecFlatteningItf.edu/CAAEhfFlatteningParametersCreate.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 5 logical steps in Main :

# Step
1 Create a session and open a new document
2 Initializing Electrical Environment
3 Retrieve the root product of the new document
4 Create the Flattening parameters from the root Product
5 Epilogue

[Top]

[Top]

Create a session and open a new document.

We need a CATSession pointer to create the Session.

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

...

We need a CATDocument pointer to create a new document.

...
CATDocumentServices::New("Product", pDoc);

...

 

Once the current session  and the CATProduct document have been created. pDoc is a pointer to this document.

[Top]

Initializing Electrical Environment.

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

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

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

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

[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 = 6;
    goto EscapeWay;
  }
  
  // Get the root product which is the first element of root elements
  pListUnkRootProducts = pIDocRootsOnDoc->GiveDocRoots();
  if(NULL == pListUnkRootProducts)
  {
    retCode = 7;
    goto EscapeWay;
  }
  
  nProducts = pListUnkRootProducts->Size();
  if( 0 == nProducts)
  {
    retCode = 8;
    goto EscapeWay;
  }
  
  hUnkRootProd = (*pListUnkRootProducts)[1];
  if(NULL_var == hUnkRootProd)
  {
    retCode = 9;
    goto EscapeWay;
  }

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

[Top]

Create the Flattening parameters from the root Product.

We need a CATIEhfEnviroment pointer on root product to create the Flattening parameters

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

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

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

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

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

[Top]

Epilogue

Removing document from session and closing the session.

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

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

[Top]


In Short

This use case has demonstrated the way to create the Flattening parameters. 

[Top]


[Top]

History

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

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