cgma
cylinders.cpp File Reference
#include <cassert>
#include <string>
#include <cctype>
#include <iostream>
#include "GeometryModifyTool.hpp"
#include "GeometryQueryTool.hpp"
#include "CubitMessage.hpp"
#include "Body.hpp"
#include "RefVolume.hpp"
#include "RefFace.hpp"
#include "RefEdge.hpp"
#include "RefVertex.hpp"
#include "InitCGMA.hpp"
#include "CubitCompat.hpp"
#include <algorithm>

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

CubitStatus read_geometry (int, char **, bool local=false)
CubitStatus make_Point ()
int findString (const char *filename, std::string search)
int main (int argc, char **argv)
std::string type_from_file_name (const std::string &filename)
CubitStatus read_geometry (int num_files, const char **argv, bool local)

Define Documentation

#define PRINT_SEPARATOR   PRINT_INFO("=======================================\n");

Definition at line 44 of file cylinders.cpp.

#define SRCDIR   .

Definition at line 30 of file cylinders.cpp.

#define SRCPATH   STRINGIFY(SRCDIR) "/"

Definition at line 35 of file cylinders.cpp.

#define STRINGIFY (   X)    STRINGIFY_(X)

Definition at line 34 of file cylinders.cpp.

#define STRINGIFY_ (   X)    #X

Definition at line 33 of file cylinders.cpp.


Function Documentation

int findString ( const char *  filename,
std::string  search 
)

Definition at line 46 of file cylinders.cpp.

{
  std::ifstream Myfile;
  Myfile.open (filename);
  int found = 0;
  std::string line;
  size_t offset;
  if(Myfile.is_open())
  {
    while(!Myfile.eof())
    {
      getline(Myfile,line);
      if ((offset = line.find(search, 0)) != std::string::npos)
        found ++;
    }
    Myfile.close();
  }
  return found;
}
int main ( int  argc,
char **  argv 
)

Definition at line 66 of file cylinders.cpp.

{
  CubitStatus status = InitCGMA::initialize_cgma();
  if (CUBIT_SUCCESS != status) return 1;

  //Do make point.
  status = make_Point();
  if (status == CUBIT_FAILURE) 
     PRINT_INFO("Operation Failed");

  int ret_val = ( CubitMessage::instance()->error_count() );
  if ( ret_val > 0 )
  {
    PRINT_ERROR("Errors found during Mergechk session.\n");
  }
  return ret_val;
  
}

Definition at line 134 of file cylinders.cpp.

{
  GeometryQueryTool *gti = GeometryQueryTool::instance();
  GeometryModifyTool *gmti = GeometryModifyTool::instance();

  DLIList<Body*> bodies, single_body, all_bodies, neighbor_list, new_bodies;
  DLIList<RefEntity*>  free_entities;

  const char *argstep = FILENAME;
  CubitStatus stat = read_geometry(1, &argstep, false);
  //Constructed 12 Volumes: 8 to 19
  if (stat == CUBIT_FAILURE) exit(1);
  
  //get all the bodies, use bodies 1-6 to unite and use united body to 
  //subtract from body 7. 
  gti->bodies(bodies);
  Body* brick = bodies.pop();
  all_bodies.append(brick);

  stat = gmti->unite(bodies, single_body, CUBIT_FALSE);
  assert(CUBIT_SUCCESS == stat && single_body.size() == 1);

  stat = gmti->subtract(single_body.get(), all_bodies, new_bodies, CUBIT_FALSE,CUBIT_FALSE);
  assert(CUBIT_SUCCESS == stat);
 
  std::cout << "Number of resulting bodies = " << new_bodies.size() << std::endl;
  assert(new_bodies.size() == 1);
  //delete all entities
  bodies.clean_out();
  gti->bodies(bodies);
  gti->delete_Body(bodies);

  free_entities.clean_out();
  gti->get_free_ref_entities(free_entities);
  assert(free_entities.size() ==0);
  return CUBIT_SUCCESS;
}
CubitStatus read_geometry ( int  ,
char **  ,
bool  local = false 
)
CubitStatus read_geometry ( int  num_files,
const char **  argv,
bool  local 
)

attribs module: list, modify attributes in a give model or models

Arguments: file name(s) of geometry files in which to look

Definition at line 107 of file cylinders.cpp.

{
  CubitStatus status = CUBIT_SUCCESS;
  GeometryQueryTool *gti = GeometryQueryTool::instance();
  assert(gti);
  int i;
  
  PRINT_SEPARATOR;

  for (i = 0; i < num_files; i++) {
    std::string type = type_from_file_name( argv[i] );
    if (type.empty()) // just guess OCC
      type = "OCC";
    std::string filename( local ? "./" : SRCPATH );
    char const* local_name = argv[i];
    filename += local_name;  
    status = CubitCompat_import_solid_model(filename.c_str(), type.c_str());
    if (status != CUBIT_SUCCESS) {
      PRINT_ERROR("Problems reading geometry file %s.\n", filename.c_str());
      abort();
    }
  }
  PRINT_SEPARATOR;

  return CUBIT_SUCCESS;
}
std::string type_from_file_name ( const std::string &  filename)

Definition at line 85 of file cylinders.cpp.

{
  size_t dot_pos = filename.find_last_of( '.' );
  if (dot_pos == std::string::npos)
    return std::string();
 
  std::string extension = filename.substr( dot_pos + 1 );
  std::transform( extension.begin(), extension.end(), extension.begin(), ::tolower );
  if (extension == "occ" || extension == "brep")
    return "OCC";
  else if (extension == "step" || extension == "stp")
    return "STEP";
  else if (extension == "iges" || extension == "igs")
    return "IGES";
  else
    return std::string();
}
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines