[MOAB-dev] r2302 - MOAB/trunk/tools/dagmc
kraftche at mcs.anl.gov
kraftche at mcs.anl.gov
Wed Dec 3 11:29:55 CST 2008
Author: kraftche
Date: 2008-12-03 11:29:55 -0600 (Wed, 03 Dec 2008)
New Revision: 2302
Modified:
MOAB/trunk/tools/dagmc/cgm2moab.cc
MOAB/trunk/tools/dagmc/main.cc
Log:
o Correctly identify OCC BREP files
o Use default geometry engine, rather than requesting ACIS
o Check for invalid data in GMem object for surface facets
Modified: MOAB/trunk/tools/dagmc/cgm2moab.cc
===================================================================
--- MOAB/trunk/tools/dagmc/cgm2moab.cc 2008-12-03 17:19:10 UTC (rev 2301)
+++ MOAB/trunk/tools/dagmc/cgm2moab.cc 2008-12-03 17:29:55 UTC (rev 2302)
@@ -419,8 +419,13 @@
for (int i = 0; i < data.fListCount; i += data.facet_list()[i]+1) {
int* facet = data.facet_list() + i;
corners.resize( *facet );
- for (int j = 1; j <= *facet; ++j)
+ for (int j = 1; j <= *facet; ++j) {
+ if (facet[j] >= (int)verts.size()) {
+ std::cerr << "ERROR: Invalid facet data for surface " << face->id() << std::endl;
+ return false;
+ }
corners[j-1] = verts[facet[j]];
+ }
MBEntityType type;
if (*facet == 3)
type = MBTRI;
Modified: MOAB/trunk/tools/dagmc/main.cc
===================================================================
--- MOAB/trunk/tools/dagmc/main.cc 2008-12-03 17:19:10 UTC (rev 2301)
+++ MOAB/trunk/tools/dagmc/main.cc 2008-12-03 17:29:55 UTC (rev 2302)
@@ -10,6 +10,7 @@
#define GF_IGES_FILE_TYPE "IGES"
#define GF_ACIS_TXT_FILE_TYPE "ACIS_SAT"
#define GF_ACIS_BIN_FILE_TYPE "ACIS_SAB"
+#define GF_OCC_BREP_FILE_TYPE "BREP"
/* Get the type of a file.
Return value is one of the above constants
@@ -22,6 +23,7 @@
int is_iges_file( FILE* file );
int is_acis_txt_file( FILE* file );
int is_acis_bin_file( FILE* file );
+int is_occ_brep_file( FILE* file );
double parse_tol( char* argv[], int argc, int& i );
void usage(char *name);
@@ -113,7 +115,7 @@
// Initialize CGM
- InitCGMA::initialize_cgma("ACIS");
+ InitCGMA::initialize_cgma();
if (actuate_attribs) {
CGMApp::instance()->attrib_manager()->set_all_auto_read_flags( actuate_attribs );
CGMApp::instance()->attrib_manager()->set_all_auto_actuate_flags( actuate_attribs );
@@ -268,6 +270,7 @@
static const char* IGES_NAME = GF_IGES_FILE_TYPE;
static const char* SAT_NAME = GF_ACIS_TXT_FILE_TYPE;
static const char* SAB_NAME = GF_ACIS_BIN_FILE_TYPE;
+ static const char* BREP_NAME = GF_OCC_BREP_FILE_TYPE;
if (is_cubit_file(file))
return CUBIT_NAME;
@@ -279,6 +282,8 @@
return SAB_NAME;
else if (is_acis_txt_file(file))
return SAT_NAME;
+ else if (is_occ_brep_file(file))
+ return BREP_NAME;
else
return 0;
}
@@ -337,3 +342,11 @@
return !strcmp( buffer, "ACIS" );
}
+
+int is_occ_brep_file( FILE* file )
+{
+ unsigned char buffer[6];
+ return !fseek(file, 0, SEEK_SET) &&
+ fread(buffer, 6, 1, file) &&
+ !memcmp(buffer, "DBRep_", 6);
+}
More information about the moab-dev
mailing list