cgma
|
GraphicsData, another simple C++ driver for CGM. More...
#include <cassert>
#include "stdio.h"
#include "GMem.hpp"
#include "GeometryQueryTool.hpp"
#include "GeometryModifyTool.hpp"
#include "RefEdge.hpp"
#include "RefFace.hpp"
#include "CubitDefines.h"
#include "CubitBox.hpp"
#include "InitCGMA.hpp"
#include "TestUtilities.hpp"
Go to the source code of this file.
Defines | |
#define | SRCDIR . |
#define | STRINGIFY_(X) #X |
#define | STRINGIFY(X) STRINGIFY_(X) |
#define | SRCPATH STRINGIFY(SRCDIR) "/" |
#define | PRINT_SEPARATOR PRINT_INFO("=======================================\n"); |
Functions | |
int | GraphicsData () |
int | main (int argc, char **argv) |
GraphicsData, another simple C++ driver for CGM.
This program acts as a simple driver for CGM. It reads in a geometry, and performs varies checks for bodies, surfaces, curves and vertices.
Definition in file GraphicsData.cpp.
#define PRINT_SEPARATOR PRINT_INFO("=======================================\n"); |
Definition at line 43 of file GraphicsData.cpp.
#define SRCDIR . |
Definition at line 26 of file GraphicsData.cpp.
Definition at line 37 of file GraphicsData.cpp.
#define STRINGIFY | ( | X | ) | STRINGIFY_(X) |
Definition at line 36 of file GraphicsData.cpp.
#define STRINGIFY_ | ( | X | ) | #X |
Definition at line 35 of file GraphicsData.cpp.
int GraphicsData | ( | ) |
Definition at line 69 of file GraphicsData.cpp.
{ GeometryModifyTool::instance()->brick(10,10,10); GeometryQueryEngine* engine = GeometryQueryTool::instance()->get_gqe(); if(!engine) { printf("no engine\n"); return 1; } CubitBox uninit_box; CubitBox model_bbox( CubitVector(-5, -5, -5), CubitVector(5, 5, 5) ); DLIList<RefEdge*> edges; GeometryQueryTool::instance()->ref_edges(edges); // expect 24 edges if(edges.size() != 12) { printf("wrong edge count\n"); return 1; } // get graphics data for the curves CubitBox g_curves = uninit_box; GMem gmem; for(int i=0; i<edges.size(); i++) { RefEdge* edge = edges.get_and_step(); if(engine->get_graphics(edge->get_curve_ptr(), &gmem) != CUBIT_SUCCESS || gmem.pointListCount == 0) { printf("got no edge facet data for edge %i\n", edge->id()); } else { for(int j=0; j<gmem.pointListCount; j++) { const GPoint& pt = gmem.point_list()[j]; g_curves |= CubitVector(pt.x, pt.y, pt.z); } } } printf("curve bbox range = %f %f %f\n", g_curves.x_range(), g_curves.y_range(), g_curves.z_range()); if(!cubit_box_identical(g_curves, model_bbox, GEOMETRY_RESABS)) { printf("didn't get accurate facet data for curves\n"); return 1; } CubitBox g_surfaces = uninit_box; DLIList<RefFace*> faces; GeometryQueryTool::instance()->ref_faces(faces); // expect 6 edges if(faces.size() != 6) { printf("wrong face count\n"); return 1; } // get graphics data for the surfaces for(int i=0; i<faces.size(); i++) { RefFace* face = faces.get_and_step(); if(engine->get_graphics(face->get_surface_ptr(), &gmem) != CUBIT_SUCCESS || gmem.pointListCount == 0 || gmem.fListCount == 0) { printf("got no face facet data for face %i\n", face->id()); } else { const GPoint* pts = gmem.point_list(); const int* facets = gmem.facet_list(); int facet_size = gmem.fListCount; for(int j=0; j<facet_size;) { int num = facets[j++]; for(int k=0; k<num; k++) { const GPoint& pt = pts[facets[j++]]; g_surfaces |= CubitVector(pt.x, pt.y, pt.z); } } } } printf("surface bbox range = %f %f %f\n", g_surfaces.x_range(), g_surfaces.y_range(), g_surfaces.z_range()); if(!cubit_box_identical(g_surfaces, model_bbox, GEOMETRY_RESABS)) { printf("didn't get accurate facet data for surfaces\n"); return 1; } return 0; }
int main | ( | int | argc, |
char ** | argv | ||
) |
Definition at line 47 of file GraphicsData.cpp.
{ CubitStatus s = InitCGMA::initialize_cgma( ENGINE ); if (CUBIT_SUCCESS != s) return 1; //Do tests. int rsl = GraphicsData(); if (rsl == 1) PRINT_INFO("Operation Failed"); int ret_val = ( CubitMessage::instance()->error_count() ); if ( ret_val != 0 ) { PRINT_ERROR("Errors found during Mergechk session.\n"); } else ret_val = 0; return ret_val; }