ErrorCode leaf( EntityHandle node ) { OrientedBox box; ErrorCode rval = mTool->box( node, box ); if (MB_SUCCESS !=rval) return rval; EntityHandle h; rval = box.make_hex( h, mOut ); if (MB_SUCCESS !=rval) return rval; int i = hash_handle( node ); return mOut->tag_set_data( mTag, &h, 1, &i ); }
ErrorCode CubitWriter::visit( EntityHandle node, int , bool& descend ) { descend = true; OrientedBox box; ErrorCode rval = tool->box( node, box ); if (rval != MB_SUCCESS) return rval; double sign[] = {-1, 1}; for (int i = 0; i < 2; ++i) for (int j = 0; j < 2; ++j) for (int k = 0; k < 2; ++k) { #if MB_ORIENTED_BOX_UNIT_VECTORS CartVect corner = box.center + box.length[0] * sign[i] * box.axis[0] + box.length[1] * sign[j] * box.axis[1] + box.length[2] * sign[k] * box.axis[2]; #else CartVect corner = box.center + sign[i] * box.axis[0] + sign[j] * box.axis[1] + sign[k] * box.axis[2]; #endif fprintf( file, "create vertex %f %f %f\n", corner[0],corner[1],corner[2] ); } fprintf( file, "#{i=Id(\"vertex\")-7}\n" ); fprintf( file, "create surface vertex {i } {i+1} {i+3} {i+2}\n"); fprintf( file, "create surface vertex {i+4} {i+5} {i+7} {i+6}\n"); fprintf( file, "create surface vertex {i+1} {i+0} {i+4} {i+5}\n"); fprintf( file, "create surface vertex {i+3} {i+2} {i+6} {i+7}\n"); fprintf( file, "create surface vertex {i+2} {i+0} {i+4} {i+6}\n"); fprintf( file, "create surface vertex {i+3} {i+1} {i+5} {i+7}\n"); fprintf( file, "delete vertex {i}-{i+7}\n"); fprintf( file, "#{s=Id(\"surface\")-5}\n" ); fprintf( file, "create volume surface {s} {s+1} {s+2} {s+3} {s+4} {s+5} noheal\n" ); int id = tool->get_moab_instance()->id_from_handle( node ); fprintf( file, "volume {Id(\"volume\")} name \"cell%d\"\n", id ); return MB_SUCCESS; }