//int main( int argc, const char *argv[] ) int main() { ON::Begin(); ON_TextLog error_log; // Before working through this example, you should understand // the example_write.cpp example. ON_Brep* brep = MakeTwistedCube(error_log); if ( !brep ) return 1; ONX_Model model; ONX_Model_Object& mo = model.m_object_table.AppendNew(); mo.m_object = brep; mo.m_bDeleteObject = true; // ~ONX_Model will delete brep brep = 0; mo.m_attributes.m_name = "Twisted b-rep"; // OPTIONAL - change values from defaults model.m_properties.m_Notes.m_notes = "File created by OpenNURBS example_brep.cpp"; model.m_properties.m_Notes.m_bVisible = true; model.m_properties.m_Application.m_application_name = "OpenNURBS example_brep.cpp"; model.m_properties.m_Application.m_application_URL = "http://www.opennurbs.org"; model.m_properties.m_Application.m_application_details = "OpenNURBS example showing how to create and write a simple b-rep"; int version = 0; // version will be ON_BinaryArchive::CurrentArchiveVersion() model.Polish(); const char* filename = "my_brep.3dm"; bool rc = model.Write( filename, version, __FILE__ " example_brep.cpp " __DATE__, &error_log ); if (rc) printf("Wrote %s.\n",filename); else printf("Errors writing %s.\n",filename); ON::End(); return 0; }
int main(int argc, char** argv) { struct rt_wdb* outfp; ON_Brep* brep; ON_TextLog error_log; const char* id_name = "B-Rep Example"; const char* geom_name = "cube.s"; ON::Begin(); if (argc > 1) { printf("Writing a twisted cube b-rep...\n"); outfp = wdb_fopen("brep_cube1.g"); mk_id(outfp, id_name); brep = MakeTwistedCube(error_log); mk_brep(outfp, geom_name, brep); //mk_comb1(outfp, "cube.r", geom_name, 1); unsigned char rgb[] = {255,255,255}; mk_region1(outfp, "cube.r", geom_name, "plastic", "", rgb); wdb_close(outfp); delete brep; } printf("Reading a twisted cube b-rep...\n"); struct db_i* dbip = db_open("brep_cube1.g", "r"); db_dirbuild(dbip); struct directory* dirp; if ((dirp = db_lookup(dbip, "cube.s", 0)) != DIR_NULL) { printf("\tfound cube.s\n"); struct rt_db_internal ip; mat_t mat; MAT_IDN(mat); if (rt_db_get_internal(&ip, dirp, dbip, mat, &rt_uniresource) >= 0) { printPoints((struct rt_brep_internal*)ip.idb_ptr); } else { fprintf(stderr, "problem getting internal object rep\n"); } } db_close(dbip); ON::End(); return 0; }