示例#1
0
 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 );
 }
示例#2
0
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;
}