cgma
merge_test.cpp File Reference
#include "MergeTool.hpp"
#include "InitCGMA.hpp"
#include "GeometryModifyTool.hpp"
#include "GeometryQueryTool.hpp"
#include "Body.hpp"
#include "CGMApp.hpp"
#include "CubitAttribManager.hpp"
#include "CubitCompat.hpp"
#include <stdio.h>
#include <stdlib.h>

Go to the source code of this file.

Defines

#define FILE_NAME   "merge_test." FORMAT
#define ASSERT(A)   if (!(A)) failed(#A,__FILE__,__LINE__)

Functions

void failed (const char *A, const char *FILE, int LINE)
RefFaceshared_face (Body *bod1, Body *bod2)
int main ()

Define Documentation

#define ASSERT (   A)    if (!(A)) failed(#A,__FILE__,__LINE__)

Definition at line 24 of file merge_test.cpp.

#define FILE_NAME   "merge_test." FORMAT

Definition at line 22 of file merge_test.cpp.


Function Documentation

void failed ( const char *  A,
const char *  FILE,
int  LINE 
)

Definition at line 25 of file merge_test.cpp.

{
  printf( "Condition failed at %s:%d : %s\n", FILE, LINE, A );
  abort();
}
int main ( )

Definition at line 33 of file merge_test.cpp.

{
  CubitStatus s = InitCGMA::initialize_cgma( ENGINE );
  ASSERT(s);
  CGMApp::instance()->attrib_manager()->auto_flag( CUBIT_TRUE );

  Body *brick1, *brick2;
  brick1 = GeometryModifyTool::instance()->brick( 1, 1, 1 );
  brick2 = GeometryModifyTool::instance()->brick( 1, 1, 1 );
  ASSERT(brick1 && brick2);
  
  DLIList<Body*> bods;
  bods.append(brick2);
  s = GeometryQueryTool::instance()->translate( bods, CubitVector(1,0,0) );
  ASSERT(s);
  
  DLIList<Body*> merge_list;
  merge_list.append( brick1 );
  merge_list.append( brick2 );
  s = MergeTool::instance()->merge_bodies( merge_list );
  ASSERT(s);
  
  ASSERT( shared_face( brick1, brick2 ) );
  
  int junk;
  DLIList<RefEntity*> export_list;
  export_list.append( brick1 );
  export_list.append( brick2 );
  s = CubitCompat_export_solid_model( export_list,
                                      FILE_NAME,
                                      FORMAT,
                                      junk,
                                      CubitString(__FILE__) );
  ASSERT(s);
  
  
  DLIList<RefEntity*> import_list;
  s = CubitCompat_import_solid_model( FILE_NAME,
                                      FORMAT,
                                      NULL,
                                      CUBIT_FALSE,
                                      CUBIT_TRUE,
                                      CUBIT_TRUE,
                                      CUBIT_TRUE,
                                      CUBIT_TRUE,
                                      CUBIT_TRUE,
                                      &import_list );
  ASSERT(s);
  remove( FILE_NAME );
  
  DLIList<Body*> import_bodies;
  CAST_LIST( import_list, import_bodies, Body );
  ASSERT( 2 == import_bodies.size() );
  
  Body* new_bod1 = import_bodies.get_and_step();
  Body* new_bod2 = import_bodies.get_and_step();
  ASSERT( brick1 != new_bod1 && brick1 != new_bod2 );
  ASSERT( brick2 != new_bod1 && brick2 != new_bod2 );
  ASSERT( shared_face( new_bod1, new_bod2 ) );
  
  return 0;
}
RefFace * shared_face ( Body bod1,
Body bod2 
)

Definition at line 96 of file merge_test.cpp.

{
  DLIList<RefFace*> faces1, faces2;
  b1->ref_faces( faces1 );
  b2->ref_faces( faces2 );
  faces1.intersect( faces2 );
  if (faces1.size() == 1)
    return faces1.get();
  else
    return 0;
}
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines