[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