|
cgma
|
#include <iostream>#include <fstream>#include <string>#include "InitCGMA.hpp"#include "GeometryModifyTool.hpp"#include "GeometryQueryTool.hpp"#include "Body.hpp"#include "CGMApp.hpp"#include "CubitAttribManager.hpp"#include "CAEntityId.hpp"#include "CubitCompat.hpp"#include <stdio.h>#include <stdlib.h>Go to the source code of this file.
Defines | |
| #define | ASSERT(A) if (!(A)) failed(#A,__FILE__,__LINE__) |
Functions | |
| CubitBoolean | is_files_same (std::string filename1, std::string filename2) |
| void | failed (const char *A, const char *FILE, int LINE) |
| int | main () |
Definition at line 27 of file attribute_to_file.cpp.
| void failed | ( | const char * | A, |
| const char * | FILE, | ||
| int | LINE | ||
| ) |
Definition at line 31 of file attribute_to_file.cpp.
{
printf( "Condition failed at %s:%d : %s\n", FILE, LINE, A );
abort();
}
| CubitBoolean is_files_same | ( | std::string | filename1, |
| std::string | filename2 | ||
| ) |
Definition at line 145 of file attribute_to_file.cpp.
{
FILE *fp1, *fp2;
char ch1, ch2;
CubitBoolean same = false;
/* open first file */
const char* file1 = filename1.c_str();
const char* file2 = filename2.c_str();
if((fp1 = fopen(file1, "rb"))==NULL) {
printf("Cannot open first file.\n");
exit(false);
}
/* open second file */
if((fp2 = fopen(file2, "rb"))==NULL) {
printf("Cannot open second file.\n");
exit(false);
}
/* compare the files */
while(!feof(fp1)) {
ch1 = fgetc(fp1);
if(ferror(fp1)) {
printf("Error reading first file.\n");
exit(false);
}
ch2 = fgetc(fp2);
if(ferror(fp2)) {
printf("Error reading second file.\n");
exit(false);
}
if(ch1 != ch2) {
return same;
}
}
if(fclose( fp1 ) == EOF) {
printf("Error closing first file.\n");
exit(false);
}
if(fclose( fp2 ) == EOF) {
printf("Error closing second file.\n");
exit(false);
}
return true;
}
| int main | ( | ) |
Definition at line 37 of file attribute_to_file.cpp.
{
CubitStatus s = InitCGMA::initialize_cgma( ENGINE );
ASSERT(s);
// actuate CA_BODIES attribute and turn on auto flag
CGMApp::instance()->attrib_manager()->register_attrib_type(CA_ENTITY_ID, "id", "ENTITY_ID",
CAEntityId_creator, CUBIT_TRUE,
CUBIT_TRUE, CUBIT_TRUE, CUBIT_TRUE,
CUBIT_TRUE, CUBIT_FALSE);
CGMApp::instance()->attrib_manager()->auto_flag(CUBIT_TRUE);
// make 2 bricks
int n = 2;
Body** bricks = new Body*[n];
DLIList<RefEntity*> export_list;
for (int i = 0; i < n; i++) {
bricks[i] = GeometryModifyTool::instance()->brick( 1, 1, 1 );
ASSERT(bricks[i]);
DLIList<Body*> bods;
bods.append(bricks[i]);
s = GeometryQueryTool::instance()->translate( bods, CubitVector(i,0,0) );
ASSERT(s);
export_list.append( bricks[i] );
}
// export as file
// int junk;
const char * filename = "bricks2.occ";
const CubitString cubit_version="13.1";
const char * filetype = "OCC";
int num_ents_exported=0;
s = CubitCompat_export_solid_model( export_list, filename, filetype,
num_ents_exported, cubit_version);
ASSERT(s);
//check that the two single volume bodys' attributes are exported as SINGLELUMP%
std::ifstream Myfile;
std::string line;
std::string search = "SINGLELUMP%";
Myfile.open ("bricks2.occ");
int found = 0;
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();
}
assert (found == 2);
filename = "bricks22.occ";
num_ents_exported = 0;
s = CubitCompat_export_solid_model( export_list, filename, filetype,
num_ents_exported, cubit_version);
ASSERT(s);
//check that the two single volume bodys' attributes are exported as SINGLELUMP%
Myfile.open ("bricks22.occ");
found = 0;
if(Myfile.is_open())
{
while(!Myfile.eof())
{
getline(Myfile,line);
if ((offset = line.find(search, 0)) != std::string::npos)
found ++;
}
Myfile.close();
}
assert (found == 2);
// delete geometry
GeometryQueryTool::instance()->delete_geometry();
remove(filename);
// import it again
DLIList<RefEntity*> import_list;
filename = "bricks2.occ";
s = CubitCompat_import_solid_model( filename, filetype);
ASSERT(s);
// check imported entity has tool data actuated by attributes
DLIList<RefEntity*> body_entity_list;
s = GeometryQueryTool::instance()->ref_entity_list("body", body_entity_list, CUBIT_FALSE);
body_entity_list.reset();
assert ((int)body_entity_list.size() == 2);
export_list.clean_out();
export_list.append(CAST_TO(body_entity_list.get_and_step(), Body));
export_list.append(CAST_TO(body_entity_list.get_and_step(), Body));
const char * filename2 = "bricks23.occ";
s = CubitCompat_export_solid_model( export_list, filename2, filetype,
num_ents_exported, cubit_version);
ASSERT(s);
ASSERT(is_files_same("bricks2.occ", "bricks23.occ"));
remove(filename);
remove(filename2);
return 0;
}