MOAB: Mesh Oriented datABase
(version 5.4.1)
|
#include <iostream>
#include "moab/Interface.hpp"
#include "TestUtil.hpp"
#include "Internals.hpp"
#include "moab/Core.hpp"
#include "MBTagConventions.hpp"
#include "moab/GeomTopoTool.hpp"
#include "InitCGMA.hpp"
#include "GeometryQueryTool.hpp"
#include "CGMConfig.h"
Go to the source code of this file.
Defines | |
#define | IS_BUILDING_MB |
#define | SENSE_FORWARD 1 |
#define | SENSE_REVERSE ( -1 ) |
#define | SENSE_UNKNOWN 0 |
#define | CHKERR(A) |
Functions | |
void | read_file (Interface *moab, const char *input_file) |
ErrorCode | load_sat_curve_sense_data (Interface *moab, EntityHandle curve, std::vector< int > &surf_ids_out, std::vector< int > &senses_out) |
ErrorCode | load_stp_curve_sense_data (Interface *moab, EntityHandle curve, std::vector< int > &surf_ids_out, std::vector< int > &senses_out) |
ErrorCode | load_precgm14_stp_curve_sense_data (Interface *moab, EntityHandle curve, std::vector< int > &surf_ids_out, std::vector< int > &senses_out) |
ErrorCode | load_sat_surf_sense_data (Interface *moab, EntityHandle surf, std::vector< int > &vol_ids_out, std::vector< int > &senses_out) |
ErrorCode | load_stp_surf_sense_data (Interface *moab, EntityHandle surf, std::vector< int > &vol_ids_out, std::vector< int > &senses_out) |
ErrorCode | load_precgm14_stp_surf_sense_data (Interface *moab, EntityHandle surf, std::vector< int > &vol_ids_out, std::vector< int > &senses_out) |
void | check_sense_data (Interface *moab, std::vector< EntityHandle > wrt_ents, std::vector< int > senses, std::vector< int > known_wrt_ids, std::vector< int > known_senses) |
int | geom_id_by_handle (Interface *moab, const EntityHandle set) |
void | read_cylcube_curve_senses_test () |
void | read_cylcube_surf_senses_test () |
void | delete_mesh_test () |
int | main (int, char **) |
Variables | |
std::string | input_cylcube = "unittest/io/cylcube.sat" |
#define CHKERR | ( | A | ) |
do \ { \ if( MB_SUCCESS != ( A ) ) \ { \ std::cerr << "Failure (error code " << ( A ) << ") at " __FILE__ ":" << __LINE__ << std::endl; \ return A; \ } \ } while( false )
Definition at line 20 of file read_cgm_senses_test.cpp.
#define IS_BUILDING_MB |
Definition at line 4 of file read_cgm_senses_test.cpp.
#define SENSE_FORWARD 1 |
Definition at line 15 of file read_cgm_senses_test.cpp.
Referenced by build_cube(), moab::ReadOBJ::create_new_object(), create_shell_test(), dot_children(), load_precgm14_stp_curve_sense_data(), load_precgm14_stp_surf_sense_data(), load_sat_curve_sense_data(), load_sat_surf_sense_data(), load_stp_curve_sense_data(), load_stp_surf_sense_data(), moab::ReadRTT::set_surface_senses(), moab::ReadCGM::store_curve_senses(), and moab::ReadCGM::store_surface_senses().
#define SENSE_REVERSE ( -1 ) |
Definition at line 16 of file read_cgm_senses_test.cpp.
Referenced by load_precgm14_stp_curve_sense_data(), load_sat_curve_sense_data(), load_stp_curve_sense_data(), and load_stp_surf_sense_data().
#define SENSE_UNKNOWN 0 |
Definition at line 17 of file read_cgm_senses_test.cpp.
void check_sense_data | ( | Interface * | moab, |
std::vector< EntityHandle > | wrt_ents, | ||
std::vector< int > | senses, | ||
std::vector< int > | known_wrt_ids, | ||
std::vector< int > | known_senses | ||
) |
Definition at line 186 of file read_cgm_senses_test.cpp.
References CHECK_EQUAL, and geom_id_by_handle().
Referenced by read_cylcube_curve_senses_test(), and read_cylcube_surf_senses_test().
{ // Get ID's of the wrt entities std::vector< int > wrt_ent_ids; for( unsigned int i = 0; i < wrt_ents.size(); i++ ) { wrt_ent_ids.push_back( geom_id_by_handle( moab, wrt_ents[i] ) ); } for( unsigned int i = 0; i < wrt_ent_ids.size(); i++ ) { for( unsigned int j = 0; j < known_wrt_ids.size(); j++ ) { if( wrt_ent_ids[i] == known_wrt_ids[j] ) { // Make sure the senses of the matching wrt entities // are correct CHECK_EQUAL( senses[i], known_senses[j] ); // Once a wrt entity is matched with a known entity, // remove it from the list wrt_ent_ids.erase( wrt_ent_ids.begin() + i ); senses.erase( senses.begin() + i ); --i; break; } } } // After both loops are complete, known_wrt_ents should be empty int leftovers = wrt_ent_ids.size(); CHECK_EQUAL( leftovers, 0 ); }
void delete_mesh_test | ( | ) |
int geom_id_by_handle | ( | Interface * | moab, |
const EntityHandle | set | ||
) |
ErrorCode load_precgm14_stp_curve_sense_data | ( | Interface * | moab, |
EntityHandle | curve, | ||
std::vector< int > & | surf_ids_out, | ||
std::vector< int > & | senses_out | ||
) |
Definition at line 474 of file read_cgm_senses_test.cpp.
References geom_id_by_handle(), MB_SUCCESS, SENSE_FORWARD, and SENSE_REVERSE.
Referenced by read_cylcube_curve_senses_test().
{ int curve_id = geom_id_by_handle( moab, curve ); switch( curve_id ) { case 1: surf_ids_out.push_back( 1 ); surf_ids_out.push_back( 6 ); senses_out.push_back( SENSE_FORWARD ); senses_out.push_back( SENSE_REVERSE ); break; case 2: surf_ids_out.push_back( 1 ); surf_ids_out.push_back( 5 ); senses_out.push_back( SENSE_FORWARD ); senses_out.push_back( SENSE_REVERSE ); break; case 3: surf_ids_out.push_back( 1 ); surf_ids_out.push_back( 4 ); senses_out.push_back( SENSE_FORWARD ); senses_out.push_back( SENSE_REVERSE ); break; case 4: surf_ids_out.push_back( 1 ); surf_ids_out.push_back( 3 ); senses_out.push_back( SENSE_FORWARD ); senses_out.push_back( SENSE_REVERSE ); break; case 5: surf_ids_out.push_back( 2 ); surf_ids_out.push_back( 6 ); senses_out.push_back( SENSE_FORWARD ); senses_out.push_back( SENSE_REVERSE ); break; case 6: surf_ids_out.push_back( 2 ); surf_ids_out.push_back( 3 ); senses_out.push_back( SENSE_FORWARD ); senses_out.push_back( SENSE_REVERSE ); break; case 7: surf_ids_out.push_back( 2 ); surf_ids_out.push_back( 4 ); senses_out.push_back( SENSE_FORWARD ); senses_out.push_back( SENSE_REVERSE ); break; case 8: surf_ids_out.push_back( 2 ); surf_ids_out.push_back( 5 ); senses_out.push_back( SENSE_FORWARD ); senses_out.push_back( SENSE_REVERSE ); break; case 9: surf_ids_out.push_back( 3 ); surf_ids_out.push_back( 4 ); senses_out.push_back( SENSE_FORWARD ); senses_out.push_back( SENSE_REVERSE ); break; case 10: surf_ids_out.push_back( 3 ); surf_ids_out.push_back( 6 ); senses_out.push_back( SENSE_REVERSE ); senses_out.push_back( SENSE_FORWARD ); break; case 11: surf_ids_out.push_back( 4 ); surf_ids_out.push_back( 5 ); senses_out.push_back( SENSE_FORWARD ); senses_out.push_back( SENSE_REVERSE ); break; case 12: surf_ids_out.push_back( 5 ); surf_ids_out.push_back( 6 ); senses_out.push_back( SENSE_FORWARD ); senses_out.push_back( SENSE_REVERSE ); break; case 13: surf_ids_out.push_back( 7 ); surf_ids_out.push_back( 8 ); senses_out.push_back( SENSE_REVERSE ); senses_out.push_back( SENSE_FORWARD ); break; case 14: surf_ids_out.push_back( 7 ); surf_ids_out.push_back( 9 ); senses_out.push_back( SENSE_REVERSE ); senses_out.push_back( SENSE_FORWARD ); break; case 15: surf_ids_out.push_back( 7 ); surf_ids_out.push_back( 8 ); senses_out.push_back( SENSE_REVERSE ); senses_out.push_back( SENSE_FORWARD ); break; case 16: surf_ids_out.push_back( 7 ); surf_ids_out.push_back( 10 ); senses_out.push_back( SENSE_REVERSE ); senses_out.push_back( SENSE_FORWARD ); break; case 17: surf_ids_out.push_back( 8 ); surf_ids_out.push_back( 10 ); senses_out.push_back( SENSE_REVERSE ); senses_out.push_back( SENSE_FORWARD ); break; case 18: surf_ids_out.push_back( 8 ); surf_ids_out.push_back( 9 ); senses_out.push_back( SENSE_REVERSE ); senses_out.push_back( SENSE_FORWARD ); break; default: return MB_FAILURE; } return MB_SUCCESS; }
ErrorCode load_precgm14_stp_surf_sense_data | ( | Interface * | moab, |
EntityHandle | surf, | ||
std::vector< int > & | vol_ids_out, | ||
std::vector< int > & | senses_out | ||
) |
Definition at line 810 of file read_cgm_senses_test.cpp.
References geom_id_by_handle(), MB_SUCCESS, and SENSE_FORWARD.
Referenced by read_cylcube_surf_senses_test().
{ int surf_id = geom_id_by_handle( moab, surf ); switch( surf_id ) { case 1: case 2: case 3: case 4: case 5: case 6: vol_ids_out.push_back( 1 ); senses_out.push_back( SENSE_FORWARD ); break; case 7: case 8: case 9: case 10: vol_ids_out.push_back( 2 ); senses_out.push_back( SENSE_FORWARD ); break; default: std::cout << "Failure to find surface sense reference data. Returning failure..." << std::endl; return MB_FAILURE; } return MB_SUCCESS; }
ErrorCode load_sat_curve_sense_data | ( | Interface * | moab, |
EntityHandle | curve, | ||
std::vector< int > & | surf_ids_out, | ||
std::vector< int > & | senses_out | ||
) |
Definition at line 225 of file read_cgm_senses_test.cpp.
References geom_id_by_handle(), MB_SUCCESS, SENSE_FORWARD, and SENSE_REVERSE.
Referenced by read_cylcube_curve_senses_test().
{ int curve_id = geom_id_by_handle( moab, curve ); switch( curve_id ) { case 1: surf_ids_out.push_back( 1 ); surf_ids_out.push_back( 6 ); senses_out.push_back( SENSE_FORWARD ); senses_out.push_back( SENSE_REVERSE ); break; case 2: surf_ids_out.push_back( 1 ); surf_ids_out.push_back( 5 ); senses_out.push_back( SENSE_FORWARD ); senses_out.push_back( SENSE_REVERSE ); break; case 3: surf_ids_out.push_back( 1 ); surf_ids_out.push_back( 4 ); senses_out.push_back( SENSE_FORWARD ); senses_out.push_back( SENSE_REVERSE ); break; case 4: surf_ids_out.push_back( 1 ); surf_ids_out.push_back( 3 ); senses_out.push_back( SENSE_FORWARD ); senses_out.push_back( SENSE_REVERSE ); break; case 5: surf_ids_out.push_back( 2 ); surf_ids_out.push_back( 6 ); senses_out.push_back( SENSE_FORWARD ); senses_out.push_back( SENSE_REVERSE ); break; case 6: surf_ids_out.push_back( 2 ); surf_ids_out.push_back( 3 ); senses_out.push_back( SENSE_FORWARD ); senses_out.push_back( SENSE_REVERSE ); break; case 7: surf_ids_out.push_back( 2 ); surf_ids_out.push_back( 4 ); senses_out.push_back( SENSE_FORWARD ); senses_out.push_back( SENSE_REVERSE ); break; case 8: surf_ids_out.push_back( 2 ); surf_ids_out.push_back( 5 ); senses_out.push_back( SENSE_FORWARD ); senses_out.push_back( SENSE_REVERSE ); break; case 9: surf_ids_out.push_back( 3 ); surf_ids_out.push_back( 4 ); senses_out.push_back( SENSE_FORWARD ); senses_out.push_back( SENSE_REVERSE ); break; case 10: surf_ids_out.push_back( 3 ); surf_ids_out.push_back( 6 ); senses_out.push_back( SENSE_REVERSE ); senses_out.push_back( SENSE_FORWARD ); break; case 11: surf_ids_out.push_back( 4 ); surf_ids_out.push_back( 5 ); senses_out.push_back( SENSE_FORWARD ); senses_out.push_back( SENSE_REVERSE ); break; case 12: surf_ids_out.push_back( 5 ); surf_ids_out.push_back( 6 ); senses_out.push_back( SENSE_FORWARD ); senses_out.push_back( SENSE_REVERSE ); break; case 13: surf_ids_out.push_back( 7 ); surf_ids_out.push_back( 8 ); senses_out.push_back( SENSE_REVERSE ); senses_out.push_back( SENSE_FORWARD ); break; case 14: surf_ids_out.push_back( 7 ); surf_ids_out.push_back( 9 ); senses_out.push_back( SENSE_REVERSE ); senses_out.push_back( SENSE_FORWARD ); break; default: return MB_FAILURE; } return MB_SUCCESS; }
ErrorCode load_sat_surf_sense_data | ( | Interface * | moab, |
EntityHandle | surf, | ||
std::vector< int > & | vol_ids_out, | ||
std::vector< int > & | senses_out | ||
) |
Definition at line 684 of file read_cgm_senses_test.cpp.
References geom_id_by_handle(), MB_SUCCESS, and SENSE_FORWARD.
Referenced by read_cylcube_surf_senses_test().
{ int surf_id = geom_id_by_handle( moab, surf ); switch( surf_id ) { case 1: vol_ids_out.push_back( 1 ); senses_out.push_back( SENSE_FORWARD ); break; case 2: vol_ids_out.push_back( 1 ); senses_out.push_back( SENSE_FORWARD ); break; case 3: vol_ids_out.push_back( 1 ); senses_out.push_back( SENSE_FORWARD ); break; case 4: vol_ids_out.push_back( 1 ); senses_out.push_back( SENSE_FORWARD ); break; case 5: vol_ids_out.push_back( 1 ); senses_out.push_back( SENSE_FORWARD ); break; case 6: vol_ids_out.push_back( 1 ); senses_out.push_back( SENSE_FORWARD ); break; case 7: vol_ids_out.push_back( 2 ); senses_out.push_back( SENSE_FORWARD ); break; case 8: vol_ids_out.push_back( 2 ); senses_out.push_back( SENSE_FORWARD ); break; case 9: vol_ids_out.push_back( 2 ); senses_out.push_back( SENSE_FORWARD ); break; default: return MB_FAILURE; } return MB_SUCCESS; }
ErrorCode load_stp_curve_sense_data | ( | Interface * | moab, |
EntityHandle | curve, | ||
std::vector< int > & | surf_ids_out, | ||
std::vector< int > & | senses_out | ||
) |
Definition at line 338 of file read_cgm_senses_test.cpp.
References geom_id_by_handle(), MB_SUCCESS, SENSE_FORWARD, and SENSE_REVERSE.
Referenced by read_cylcube_curve_senses_test().
{ int curve_id = geom_id_by_handle( moab, curve ); switch( curve_id ) { case 1: surf_ids_out.push_back( 1 ); surf_ids_out.push_back( 6 ); senses_out.push_back( SENSE_FORWARD ); senses_out.push_back( SENSE_FORWARD ); break; case 2: surf_ids_out.push_back( 1 ); surf_ids_out.push_back( 5 ); senses_out.push_back( SENSE_FORWARD ); senses_out.push_back( SENSE_FORWARD ); break; case 3: surf_ids_out.push_back( 1 ); surf_ids_out.push_back( 4 ); senses_out.push_back( SENSE_FORWARD ); senses_out.push_back( SENSE_FORWARD ); break; case 4: surf_ids_out.push_back( 1 ); surf_ids_out.push_back( 3 ); senses_out.push_back( SENSE_FORWARD ); senses_out.push_back( SENSE_FORWARD ); break; case 5: surf_ids_out.push_back( 2 ); surf_ids_out.push_back( 6 ); senses_out.push_back( SENSE_REVERSE ); senses_out.push_back( SENSE_FORWARD ); break; case 6: surf_ids_out.push_back( 2 ); surf_ids_out.push_back( 5 ); senses_out.push_back( SENSE_REVERSE ); senses_out.push_back( SENSE_FORWARD ); break; case 7: surf_ids_out.push_back( 2 ); surf_ids_out.push_back( 4 ); senses_out.push_back( SENSE_REVERSE ); senses_out.push_back( SENSE_FORWARD ); break; case 8: surf_ids_out.push_back( 2 ); surf_ids_out.push_back( 3 ); senses_out.push_back( SENSE_REVERSE ); senses_out.push_back( SENSE_FORWARD ); break; case 9: surf_ids_out.push_back( 3 ); surf_ids_out.push_back( 4 ); senses_out.push_back( SENSE_REVERSE ); senses_out.push_back( SENSE_FORWARD ); break; case 10: surf_ids_out.push_back( 3 ); surf_ids_out.push_back( 6 ); senses_out.push_back( SENSE_FORWARD ); senses_out.push_back( SENSE_REVERSE ); break; case 11: surf_ids_out.push_back( 4 ); surf_ids_out.push_back( 5 ); senses_out.push_back( SENSE_REVERSE ); senses_out.push_back( SENSE_FORWARD ); break; case 12: surf_ids_out.push_back( 5 ); surf_ids_out.push_back( 6 ); senses_out.push_back( SENSE_REVERSE ); senses_out.push_back( SENSE_FORWARD ); break; case 13: surf_ids_out.push_back( 7 ); surf_ids_out.push_back( 8 ); senses_out.push_back( SENSE_REVERSE ); senses_out.push_back( SENSE_FORWARD ); break; case 14: surf_ids_out.push_back( 7 ); surf_ids_out.push_back( 9 ); senses_out.push_back( SENSE_REVERSE ); senses_out.push_back( SENSE_FORWARD ); break; case 15: surf_ids_out.push_back( 7 ); surf_ids_out.push_back( 8 ); senses_out.push_back( SENSE_REVERSE ); senses_out.push_back( SENSE_FORWARD ); break; case 16: surf_ids_out.push_back( 7 ); surf_ids_out.push_back( 10 ); senses_out.push_back( SENSE_REVERSE ); senses_out.push_back( SENSE_FORWARD ); break; case 17: surf_ids_out.push_back( 8 ); surf_ids_out.push_back( 10 ); senses_out.push_back( SENSE_REVERSE ); senses_out.push_back( SENSE_FORWARD ); break; case 18: surf_ids_out.push_back( 8 ); surf_ids_out.push_back( 9 ); senses_out.push_back( SENSE_REVERSE ); senses_out.push_back( SENSE_FORWARD ); break; default: return MB_FAILURE; } return MB_SUCCESS; }
ErrorCode load_stp_surf_sense_data | ( | Interface * | moab, |
EntityHandle | surf, | ||
std::vector< int > & | vol_ids_out, | ||
std::vector< int > & | senses_out | ||
) |
Definition at line 744 of file read_cgm_senses_test.cpp.
References geom_id_by_handle(), MB_SUCCESS, SENSE_FORWARD, and SENSE_REVERSE.
Referenced by read_cylcube_surf_senses_test().
{ int surf_id = geom_id_by_handle( moab, surf ); switch( surf_id ) { case 1: vol_ids_out.push_back( 1 ); senses_out.push_back( SENSE_FORWARD ); break; case 2: vol_ids_out.push_back( 1 ); senses_out.push_back( SENSE_REVERSE ); break; case 3: vol_ids_out.push_back( 1 ); senses_out.push_back( SENSE_REVERSE ); break; case 4: vol_ids_out.push_back( 1 ); senses_out.push_back( SENSE_REVERSE ); break; case 5: vol_ids_out.push_back( 1 ); senses_out.push_back( SENSE_REVERSE ); break; case 6: vol_ids_out.push_back( 1 ); senses_out.push_back( SENSE_REVERSE ); break; case 7: vol_ids_out.push_back( 2 ); senses_out.push_back( SENSE_FORWARD ); break; case 8: vol_ids_out.push_back( 2 ); senses_out.push_back( SENSE_FORWARD ); break; case 9: vol_ids_out.push_back( 2 ); senses_out.push_back( SENSE_FORWARD ); break; case 10: vol_ids_out.push_back( 2 ); senses_out.push_back( SENSE_FORWARD ); break; default: std::cout << "Failure to find surface sense reference data. Returning failure..." << std::endl; return MB_FAILURE; } return MB_SUCCESS; }
int main | ( | int | , |
char ** | |||
) |
Definition at line 81 of file read_cgm_senses_test.cpp.
References read_cylcube_curve_senses_test(), read_cylcube_surf_senses_test(), and RUN_TEST.
{ int result = 0; result += RUN_TEST( read_cylcube_surf_senses_test ); result += RUN_TEST( read_cylcube_curve_senses_test ); return result; }
void read_cylcube_curve_senses_test | ( | ) |
Definition at line 103 of file read_cgm_senses_test.cpp.
References CHECK_EQUAL, CHECK_ERR, check_sense_data(), dim, ErrorCode, GEOM_DIMENSION_TAG_NAME, geom_tag, moab::Interface::get_entities_by_type_and_tag(), moab::Interface::get_number_entities_by_type_and_tag(), moab::GeomTopoTool::get_senses(), input_cylcube, load_precgm14_stp_curve_sense_data(), load_sat_curve_sense_data(), load_stp_curve_sense_data(), mb, MB_TAG_CREAT, MB_TAG_DENSE, MB_TYPE_INTEGER, MBENTITYSET, read_file(), moab::Range::size(), and moab::Interface::tag_get_handle().
Referenced by main().
{ ErrorCode rval; // Open the test file Core moab; Interface* mb = &moab; read_file( mb, input_cylcube.c_str() ); // Get all curve handles Tag geom_tag; rval = mb->tag_get_handle( GEOM_DIMENSION_TAG_NAME, 1, MB_TYPE_INTEGER, geom_tag, moab::MB_TAG_DENSE | moab::MB_TAG_CREAT );CHECK_ERR( rval ); // Check that the proper number of curves exist int dim = 1; void* val[] = { &dim }; int number_of_curves; rval = mb->get_number_entities_by_type_and_tag( 0, MBENTITYSET, &geom_tag, val, 1, number_of_curves );CHECK_ERR( rval ); // Step format adds a surface on the barrel of the cylinder. // This created 4 extra surfaces in comparison to the .sat format from Cubit. //(New surface breaks the barrel of the cylinder into two half-pipes) #ifdef HAVE_OCC_STEP CHECK_EQUAL( 18, number_of_curves ); #else CHECK_EQUAL( 14, number_of_curves ); #endif // Get curve handles Range curves; rval = mb->get_entities_by_type_and_tag( 0, MBENTITYSET, &geom_tag, val, 1, curves );CHECK_ERR( rval ); // Establish GeomTopoTool instance needed to get curve data moab::GeomTopoTool gt( mb, false ); // Initialize vectors for sense checking std::vector< EntityHandle > surfs; std::vector< int > senses; std::vector< int > known_surf_ids; std::vector< int > known_senses; for( unsigned int i = 0; i < curves.size(); i++ ) { // Clean data from previous curve surfs.clear(); senses.clear(); // Get sense info for the current curve rval = gt.get_senses( curves[i], surfs, senses );CHECK_ERR( rval ); // Clear reference data from previous curve known_surf_ids.clear(); known_senses.clear(); // Load known curve-sense ID data #ifdef HAVE_OCC_STEP if( CGM_MAJOR_VERSION >= 14 ) { rval = load_stp_curve_sense_data( mb, curves[i], known_surf_ids, known_senses ); } else { rval = load_precgm14_stp_curve_sense_data( mb, curves[i], known_surf_ids, known_senses ); } CHECK_ERR( rval ); #else rval = load_sat_curve_sense_data( mb, curves[i], known_surf_ids, known_senses );CHECK_ERR( rval ); #endif // Check that each surf and sense has a match in the references check_sense_data( mb, surfs, senses, known_surf_ids, known_senses ); } }
void read_cylcube_surf_senses_test | ( | ) |
Definition at line 615 of file read_cgm_senses_test.cpp.
References CHECK_EQUAL, CHECK_ERR, check_sense_data(), dim, ErrorCode, GEOM_DIMENSION_TAG_NAME, geom_tag, moab::Interface::get_entities_by_type_and_tag(), moab::Interface::get_number_entities_by_type_and_tag(), moab::GeomTopoTool::get_senses(), input_cylcube, load_precgm14_stp_surf_sense_data(), load_sat_surf_sense_data(), load_stp_surf_sense_data(), mb, MB_TAG_CREAT, MB_TAG_DENSE, MB_TYPE_INTEGER, MBENTITYSET, read_file(), moab::Range::size(), and moab::Interface::tag_get_handle().
Referenced by main().
{ ErrorCode rval; // Open the test file Core moab; Interface* mb = &moab; read_file( mb, input_cylcube.c_str() ); // Get geometry tag for gathering surface information from the mesh Tag geom_tag; rval = mb->tag_get_handle( GEOM_DIMENSION_TAG_NAME, 1, MB_TYPE_INTEGER, geom_tag, moab::MB_TAG_DENSE | moab::MB_TAG_CREAT );CHECK_ERR( rval ); // Check that the proper number of surfaces exist int dim = 2; void* val[] = { &dim }; int number_of_surfs; rval = mb->get_number_entities_by_type_and_tag( 0, MBENTITYSET, &geom_tag, val, 1, number_of_surfs );CHECK_ERR( rval ); // Step format adds a surface on barrel of the cylinder. // (Breaks it into two half-pipes) #ifdef HAVE_OCC_STEP CHECK_EQUAL( 10, number_of_surfs ); #else CHECK_EQUAL( 9, number_of_surfs ); #endif // Get surface handles Range surfs; rval = mb->get_entities_by_type_and_tag( 0, MBENTITYSET, &geom_tag, val, 1, surfs );CHECK_ERR( rval ); // Establish GeomTopoTool instance needed to get surf data moab::GeomTopoTool gt( mb, false ); std::vector< EntityHandle > vols; std::vector< int > senses; std::vector< int > known_vol_ids; std::vector< int > known_senses; for( unsigned int i = 0; i < surfs.size(); i++ ) { // Clean data from previous surface vols.clear(); senses.clear(); // Get sense information for the current // surface from the mesh rval = gt.get_senses( surfs[i], vols, senses );CHECK_ERR( rval ); // Clear previous reverence data known_vol_ids.clear(); known_senses.clear(); // Load known surface-volume data // for this surface and check that it's correct #ifdef HAVE_OCC_STEP if( CGM_MAJOR_VERSION >= 14 ) { rval = load_stp_surf_sense_data( mb, surfs[i], known_vol_ids, known_senses ); } else { rval = load_precgm14_stp_surf_sense_data( mb, surfs[i], known_vol_ids, known_senses ); } CHECK_ERR( rval ); #else rval = load_sat_surf_sense_data( mb, surfs[i], known_vol_ids, known_senses );CHECK_ERR( rval ); #endif // Check sense information from the loaded mesh against // reference sense information check_sense_data( mb, vols, senses, known_vol_ids, known_senses ); } }
Definition at line 57 of file read_cgm_basic_test.cpp.
{ InitCGMA::initialize_cgma(); GeometryQueryTool::instance()->delete_geometry(); ErrorCode rval = moab->load_file( input_file );CHECK_ERR( rval ); }
std::string input_cylcube = "unittest/io/cylcube.sat" |
Definition at line 33 of file read_cgm_senses_test.cpp.