cgma
GeometryHealerTool Class Reference

Class used for healing geometry. engine -specific. More...

#include <GeometryHealerTool.hpp>

List of all members.

Public Member Functions

 ~GeometryHealerTool ()
void add_ghe (GeometryHealerEngine *ghe_ptr)
 add a healer engine to the list
CubitStatus auto_heal_bodies (DLIList< Body * > &body_list, DLIList< Body * > &new_body_list, DLIList< TopologyEntity * > &bad_geometry, CubitBoolean rebuild=CUBIT_FALSE, CubitBoolean keep_old=CUBIT_FALSE, CubitBoolean make_tolerant=CUBIT_FALSE, FILE *logfile_ptr=NULL)
CubitStatus heal_bodies (DLIList< Body * > &body_list, DLIList< Body * > &new_body_list, DLIList< TopologyEntity * > &bad_geometry, CubitBoolean rebuild=CUBIT_FALSE, CubitBoolean keep_old=CUBIT_FALSE, CubitBoolean make_tolerant=CUBIT_FALSE, FILE *logfile_ptr=NULL)
CubitStatus analyze_badgeom (DLIList< Body * > &body_list, DLIList< TopologyEntity * > &bad_geometry, FILE *logfile=NULL)
CubitStatus get_badgeom (DLIList< Body * > &body_list, DLIList< TopologyEntity * > &bad_geometry)
CubitStatus get_tcurves (DLIList< Body * > &body_list, DLIList< RefEdge * > &t_curves)
CubitStatus heal_incremental (DLIList< Body * > &body_list, DLIList< Body * > &new_bodies, DLIList< TopologyEntity * > &bad_geometry, double simplify_tol=CUBIT_DBL_MAX, double stitch_min_tol=CUBIT_DBL_MAX, double stitch_max_tol=CUBIT_DBL_MAX, double geombuild_tol=CUBIT_DBL_MAX, double analytic_tol=CUBIT_DBL_MAX, double isospline_tol=CUBIT_DBL_MAX, double reblend_classify_tol=CUBIT_DBL_MAX, double reblend_tol=CUBIT_DBL_MAX, CubitBoolean keep_old=CUBIT_FALSE, CubitBoolean make_tolerant=CUBIT_FALSE, FILE *logfile_ptr=NULL)
 Uses the healing husk to perform one or more healing operations.
void list_incremental ()
 Lists the current settings for incremental healing.
void list_tolerances (DLIList< Body * > &body_list)
 Lists out the tolerances of each body, separately.
void clean_attributes (DLIList< Body * > &body_list)
void list_onshow_flgs ()
 Function to list to user what the current onshow flags are.
double get_default_simplify_tol ()
void set_default_simplify_tol (double tol)
double get_default_stitch_min_tol ()
void set_default_stitch_min_tol (double tol)
double get_default_stitch_max_tol ()
void set_default_stitch_max_tol (double tol)
double get_default_geombuild_tol ()
void set_default_geombuild_tol (double tol)
double get_default_analytic_tol ()
void set_default_analytic_tol (double tol)
double get_default_isospline_tol ()
void set_default_isospline_tol (double tol)
double get_default_reblend_classify_tol ()
void set_default_reblend_classify_tol (double tol)
double get_default_reblend_tol ()
void set_default_reblend_tol (double tol)
void reset_default_tolerances ()
void list_default_tolerances ()
CubitBoolean get_cleanatt_flg ()
void set_cleanatt_flg (CubitBoolean flg)
int get_show_method ()
 Method determines how bad geometry is displayed.
void set_show_method (int method)
 Method determines how bad geometry is displayed.
CubitBoolean get_show_summary_flg ()
 Flag to determine whether to list a summary when showing bad geometry.
void set_show_summary_flg (CubitBoolean flg)
 Flag to determine whether to list a summary when showing bad geometry.
CubitBoolean get_show_details_flg ()
 Flag to determine whether to list details when showing bad geometry.
void set_show_details_flg (CubitBoolean flg)
 Flag to determine whether to list details when showing bad geometry.
CubitBoolean get_show_on_heal_flg ()
 Flag to determine whether to show bad geometry after healing.
void set_show_on_heal_flg (CubitBoolean flg)
 Flag to determine whether to show bad geometry after healing.
CubitBoolean get_check_vol_on_heal_flg ()
 Allow for checking of short curves after healing.
void set_check_vol_on_heal_flg (CubitBoolean flg)
 Allow for checking of short curves after healing.
double get_vol_on_heal_limit ()
 Allow for checking of short curves after healing.
void set_vol_on_heal_limit (double limit)
 Allow for checking of short curves after healing.
CubitBoolean get_check_surf_on_heal_flg ()
 Allow for checking of small surfaces after healing.
void set_check_surf_on_heal_flg (CubitBoolean flg)
 Allow for checking of small surfaces after healing.
double get_surf_on_heal_limit ()
 Allow for checking of small surfaces after healing.
void set_surf_on_heal_limit (double limit)
 Allow for checking of small surfaces after healing.
CubitBoolean get_check_curve_on_heal_flg ()
 Allow for checking of short curves after healing.
void set_check_curve_on_heal_flg (CubitBoolean flg)
 Allow for checking of short curves after healing.
double get_curve_on_heal_limit ()
 Allow for checking of short curves after healing.
void set_curve_on_heal_limit (double limit)
 Allow for checking of short curves after healing.
CubitBoolean get_show_bad_vertices_flg ()
 Get/set for flags for what to show during analysis/show.
void set_show_bad_vertices_flg (CubitBoolean flg)
 Get/set for flags for what to show during analysis/show.
CubitBoolean get_show_bad_curves_flg ()
 Get/set for flags for what to show during analysis/show.
void set_show_bad_curves_flg (CubitBoolean flg)
 Get/set for flags for what to show during analysis/show.
CubitBoolean get_show_bad_coedges_flg ()
 Get/set for flags for what to show during analysis/show.
void set_show_bad_coedges_flg (CubitBoolean flg)
 Get/set for flags for what to show during analysis/show.
CubitBoolean get_show_bad_loops_flg ()
 Get/set for flags for what to show during analysis/show.
void set_show_bad_loops_flg (CubitBoolean flg)
 Get/set for flags for what to show during analysis/show.
CubitBoolean get_show_bad_surfaces_flg ()
 Get/set for flags for what to show during analysis/show.
void set_show_bad_surfaces_flg (CubitBoolean flg)
 Get/set for flags for what to show during analysis/show.
CubitBoolean get_show_bad_shells_flg ()
 Get/set for flags for what to show during analysis/show.
void set_show_bad_shells_flg (CubitBoolean flg)
 Get/set for flags for what to show during analysis/show.
CubitBoolean get_show_bad_volumes_flg ()
 Get/set for flags for what to show during analysis/show.
void set_show_bad_volumes_flg (CubitBoolean flg)
 Get/set for flags for what to show during analysis/show.
CubitBoolean get_show_bad_bodies_flg ()
 Get/set for flags for what to show during analysis/show.
void set_show_bad_bodies_flg (CubitBoolean flg)
 Get/set for flags for what to show during analysis/show.
CubitBoolean get_inc_preprocess_flg ()
void set_inc_preprocess_flg (CubitBoolean flg)
CubitBoolean get_inc_simplify_flg ()
void set_inc_simplify_flg (CubitBoolean flg)
CubitBoolean get_inc_stitch_flg ()
void set_inc_stitch_flg (CubitBoolean flg)
CubitBoolean get_inc_geombuild_flg ()
void set_inc_geombuild_flg (CubitBoolean flg)
CubitBoolean get_inc_analytic_flg ()
void set_inc_analytic_flg (CubitBoolean flg)
CubitBoolean get_inc_isospline_flg ()
void set_inc_isospline_flg (CubitBoolean flg)
CubitBoolean get_inc_reblend_flg ()
void set_inc_reblend_flg (CubitBoolean flg)
CubitBoolean get_inc_sharpedge_flg ()
void set_inc_sharpedge_flg (CubitBoolean flg)
CubitBoolean get_inc_genericspline_flg ()
void set_inc_genericspline_flg (CubitBoolean flg)
CubitBoolean get_inc_wrapup_flg ()
void set_inc_wrapup_flg (CubitBoolean flg)
CubitBoolean get_inc_postprocess_flg ()
void set_inc_postprocess_flg (CubitBoolean flg)
CubitStatus force_simplify_to_plane (DLIList< RefFace * > &ref_face_list, DLIList< Body * > &new_body_list, CubitBoolean keep=CUBIT_FALSE)
 Forces a spline surface to be an analytical of the type specified.
CubitStatus force_simplify_to_cylinder (DLIList< RefFace * > &ref_face_list, DLIList< Body * > &new_body_list, CubitBoolean keep=CUBIT_FALSE)
 Forces a spline surface to be an analytical of the type specified.
CubitStatus force_simplify_to_cone (DLIList< RefFace * > &ref_face_list, DLIList< Body * > &new_body_list, CubitBoolean keep=CUBIT_FALSE)
 Forces a spline surface to be an analytical of the type specified.
CubitStatus force_simplify_to_sphere (DLIList< RefFace * > &ref_face_list, DLIList< Body * > &new_body_list, CubitBoolean keep=CUBIT_FALSE)
 Forces a spline surface to be an analytical of the type specified.
CubitStatus force_simplify_to_torus (DLIList< RefFace * > &ref_face_list, DLIList< Body * > &new_body_list, CubitBoolean keep=CUBIT_FALSE)
 Forces a spline surface to be an analytical of the type specified.

Static Public Member Functions

static GeometryHealerToolinstance (GeometryHealerEngine *GHEPtr=NULL)
static void delete_instance ()

Protected Member Functions

 GeometryHealerTool (GeometryHealerEngine *GHEPtr)

Private Member Functions

GeometryHealerEngineget_engine (TopologyBridge *tb_ptr) const
GeometryHealerEngineget_engine (TopologyEntity *te_ptr) const
CubitBoolean same_healer_engine (DLIList< RefEntity * > &ref_entity_list, CubitBoolean check_children) const
CubitBoolean same_healer_engine (DLIList< TopologyEntity * > &topo_list) const

Private Attributes

DLIList< GeometryHealerEngine * > gheList

Static Private Attributes

static GeometryHealerToolinstance_ = 0

Detailed Description

Class used for healing geometry. engine -specific.

Definition at line 41 of file GeometryHealerTool.hpp.


Constructor & Destructor Documentation

Definition at line 80 of file GeometryHealerTool.cpp.

{
   for (int i = gheList.size(); i > 0; i--) 
      delete gheList.get_and_step();

   gheList.clean_out();
   instance_ = NULL;
}

Definition at line 1023 of file GeometryHealerTool.cpp.

{
  if (GHEPtr != NULL)
     add_ghe(GHEPtr);
}

Member Function Documentation

add a healer engine to the list

Definition at line 110 of file GeometryHealerTool.cpp.

{
   assert(ghe_ptr != 0);

   // for now, GeometryHealerTool is only set up for a single healer engine
   // so if more than one healer is being added all the code for this class needs
   // to be reviewed - Byron 08/12/2003
   assert(gheList.size() == 0);

   if (!gheList.move_to(ghe_ptr))
      gheList.append(ghe_ptr);
}
CubitStatus GeometryHealerTool::analyze_badgeom ( DLIList< Body * > &  body_list,
DLIList< TopologyEntity * > &  bad_geometry,
FILE *  logfile = NULL 
)

Uses the healing husk to find bad geometry and give feedback to the user. A lot more could be done here - this is just a quick overview for the user (the user will have no idea why the identified geometry is bad). A logfile can give a little more information.

Definition at line 348 of file GeometryHealerTool.cpp.

{
   DLIList<RefEntity*> ref_entity_list;
   CAST_LIST_TO_PARENT(body_list, ref_entity_list);

   if (!same_healer_engine(ref_entity_list, CUBIT_TRUE))
   {
      PRINT_ERROR("HEALING bodies from different\n"
                  "       geometry engines is not allowed.\n");
      return CUBIT_FAILURE;
   }

   GeometryHealerEngine* GHEPtr = get_engine(body_list.get());
   if (GHEPtr)
      return GHEPtr->analyze_badgeom(body_list, bad_geometry, logfile);
   else
      PRINT_ERROR( "Bodies are of a geometry engine without a healer\n"
                   "         and cannot be healed.\n");
   return CUBIT_FAILURE;
}
CubitStatus GeometryHealerTool::auto_heal_bodies ( DLIList< Body * > &  body_list,
DLIList< Body * > &  new_body_list,
DLIList< TopologyEntity * > &  bad_geometry,
CubitBoolean  rebuild = CUBIT_FALSE,
CubitBoolean  keep_old = CUBIT_FALSE,
CubitBoolean  make_tolerant = CUBIT_FALSE,
FILE *  logfile_ptr = NULL 
)

Uses the autohealer to heal the given body list. The rebuild option can be used for more rigorous healing, where each surface is pulled off, healed, and then stitched back into a body.

Definition at line 284 of file GeometryHealerTool.cpp.

{
   DLIList<RefEntity*> ref_entity_list;
   CAST_LIST_TO_PARENT(body_list, ref_entity_list);

   if (!same_healer_engine(ref_entity_list, CUBIT_TRUE))
   {
      PRINT_ERROR("HEALING bodies from different\n"
                  "       geometry engines is not allowed.\n");
      return CUBIT_FAILURE;
   }

   if(rebuild && !keep_old)
   {
     MergeTool::instance()->unmerge(ref_entity_list);
   }

   GeometryHealerEngine* GHEPtr = get_engine(body_list.get());
   if (GHEPtr)
   {
      CubitStatus healer_status = GHEPtr->auto_heal_bodies(body_list, new_body_list, bad_geometry,
                                      rebuild, keep_old, make_tolerant, logfile_ptr);

     // if( healer_status == CUBIT_SUCCESS )
      AppUtil::instance()->send_event(CubitOperationEvent(CubitOperationEvent::HEALER_COMPLETED));

      return healer_status;
   }
   else
      PRINT_ERROR( "Bodies are of a geometry engine without a healer\n"
                   "         and cannot be healed.\n");
   return CUBIT_FAILURE;
}

Cleans healer attributes from the bodies. These can be left if the CleanAtt setting was used when doing analysis or healing.

Definition at line 561 of file GeometryHealerTool.cpp.

{
   DLIList<RefEntity*> ref_entity_list;
   CAST_LIST_TO_PARENT(body_list, ref_entity_list);

   if (!same_healer_engine(ref_entity_list, CUBIT_TRUE))
   {
      PRINT_ERROR("HEALING bodies from different\n"
                  "       geometry engines is not allowed.\n");
   }

   GeometryHealerEngine* GHEPtr = get_engine(body_list.get());
   if (GHEPtr)
      GHEPtr->clean_attributes(body_list);
   else
      PRINT_ERROR( "Bodies are of a geometry engine without a healer\n"
                   "         and cannot be healed.\n");
}
static void GeometryHealerTool::delete_instance ( ) [inline, static]

Definition at line 48 of file GeometryHealerTool.hpp.

      {
        if (instance_)
        {
          delete instance_;
          instance_ = NULL;
        }
      };
CubitStatus GeometryHealerTool::force_simplify_to_cone ( DLIList< RefFace * > &  ref_face_list,
DLIList< Body * > &  new_body_list,
CubitBoolean  keep = CUBIT_FALSE 
)

Forces a spline surface to be an analytical of the type specified.

Definition at line 935 of file GeometryHealerTool.cpp.

{
   ref_face_list.reset();
   DLIList<RefEntity*> ref_entity_list(ref_face_list.size());
   CAST_LIST_TO_PARENT( ref_face_list, ref_entity_list );

   if (!same_healer_engine(ref_entity_list, CUBIT_TRUE))
   {
      PRINT_ERROR("HEALING faces from different\n"
                  "       geometry engines is not allowed.\n");
      return CUBIT_FAILURE;
   }

   ref_face_list.reset();
   GeometryHealerEngine* GHEPtr = get_engine((TopologyEntity*)(ref_face_list.get()));
   if (GHEPtr)
      return GHEPtr->force_simplify_to_cone(ref_face_list, new_body_list, keep);
   else
      PRINT_ERROR( "Faces are of a geometry engine without a healer\n"
                   "         and cannot be healed.\n");
   return CUBIT_FAILURE;
}
CubitStatus GeometryHealerTool::force_simplify_to_cylinder ( DLIList< RefFace * > &  ref_face_list,
DLIList< Body * > &  new_body_list,
CubitBoolean  keep = CUBIT_FALSE 
)

Forces a spline surface to be an analytical of the type specified.

Definition at line 910 of file GeometryHealerTool.cpp.

{
   ref_face_list.reset();
   DLIList<RefEntity*> ref_entity_list(ref_face_list.size());
   CAST_LIST_TO_PARENT( ref_face_list, ref_entity_list );

   if (!same_healer_engine(ref_entity_list, CUBIT_TRUE))
   {
      PRINT_ERROR("HEALING faces from different\n"
                  "       geometry engines is not allowed.\n");
      return CUBIT_FAILURE;
   }

   ref_face_list.reset();
   GeometryHealerEngine* GHEPtr = get_engine((TopologyEntity*)(ref_face_list.get()));
   if (GHEPtr)
      return GHEPtr->force_simplify_to_cylinder(ref_face_list, new_body_list, keep);
   else
      PRINT_ERROR( "Faces are of a geometry engine without a healer\n"
                   "         and cannot be healed.\n");
   return CUBIT_FAILURE;
}
CubitStatus GeometryHealerTool::force_simplify_to_plane ( DLIList< RefFace * > &  ref_face_list,
DLIList< Body * > &  new_body_list,
CubitBoolean  keep = CUBIT_FALSE 
)

Forces a spline surface to be an analytical of the type specified.

Definition at line 885 of file GeometryHealerTool.cpp.

{
   ref_face_list.reset();
   DLIList<RefEntity*> ref_entity_list(ref_face_list.size());
   CAST_LIST_TO_PARENT( ref_face_list, ref_entity_list );

   if (!same_healer_engine(ref_entity_list, CUBIT_TRUE))
   {
      PRINT_ERROR("HEALING faces from different\n"
                  "       geometry engines is not allowed.\n");
      return CUBIT_FAILURE;
   }

   ref_face_list.reset();
   GeometryHealerEngine* GHEPtr = get_engine((TopologyEntity*)(ref_face_list.get()));
   if (GHEPtr)
      return GHEPtr->force_simplify_to_plane(ref_face_list, new_body_list, keep);
   else
      PRINT_ERROR( "Faces are of a geometry engine without a healer\n"
                   "         and cannot be healed.\n");
   return CUBIT_FAILURE;
}
CubitStatus GeometryHealerTool::force_simplify_to_sphere ( DLIList< RefFace * > &  ref_face_list,
DLIList< Body * > &  new_body_list,
CubitBoolean  keep = CUBIT_FALSE 
)

Forces a spline surface to be an analytical of the type specified.

Definition at line 960 of file GeometryHealerTool.cpp.

{
   ref_face_list.reset();
   DLIList<RefEntity*> ref_entity_list(ref_face_list.size());
   CAST_LIST_TO_PARENT( ref_face_list, ref_entity_list );

   if (!same_healer_engine(ref_entity_list, CUBIT_TRUE))
   {
      PRINT_ERROR("HEALING faces from different\n"
                  "       geometry engines is not allowed.\n");
      return CUBIT_FAILURE;
   }

   ref_face_list.reset();
   GeometryHealerEngine* GHEPtr = get_engine((TopologyEntity*)(ref_face_list.get()));
   if (GHEPtr)
      return GHEPtr->force_simplify_to_sphere(ref_face_list, new_body_list, keep);
   else
      PRINT_ERROR( "Faces are of a geometry engine without a healer\n"
                   "         and cannot be healed.\n");
   return CUBIT_FAILURE;
}
CubitStatus GeometryHealerTool::force_simplify_to_torus ( DLIList< RefFace * > &  ref_face_list,
DLIList< Body * > &  new_body_list,
CubitBoolean  keep = CUBIT_FALSE 
)

Forces a spline surface to be an analytical of the type specified.

Definition at line 985 of file GeometryHealerTool.cpp.

{
   ref_face_list.reset();
   DLIList<RefEntity*> ref_entity_list(ref_face_list.size());
   CAST_LIST_TO_PARENT( ref_face_list, ref_entity_list );

   if (!same_healer_engine(ref_entity_list, CUBIT_TRUE))
   {
      PRINT_ERROR("HEALING faces from different\n"
                  "       geometry engines is not allowed.\n");
      return CUBIT_FAILURE;
   }

   ref_face_list.reset();
   GeometryHealerEngine* GHEPtr = get_engine((TopologyEntity*)(ref_face_list.get()));
   if (GHEPtr)
      return GHEPtr->force_simplify_to_torus(ref_face_list, new_body_list, keep);
   else
      PRINT_ERROR( "Faces are of a geometry engine without a healer\n"
                   "         and cannot be healed.\n");
   return CUBIT_FAILURE;
}
CubitStatus GeometryHealerTool::get_badgeom ( DLIList< Body * > &  body_list,
DLIList< TopologyEntity * > &  bad_geometry 
)

Shows the bad geometry. The geometry must have been analyzed first. If body_list is empty, shows only for those bodies that have been analyzed.

Definition at line 371 of file GeometryHealerTool.cpp.

{
   DLIList<RefEntity*> ref_entity_list;
   CAST_LIST_TO_PARENT(body_list, ref_entity_list);

   if (!same_healer_engine(ref_entity_list, CUBIT_TRUE))
   {
      PRINT_ERROR("HEALING bodies from different\n"
                  "       geometry engines is not allowed.\n");
      return CUBIT_FAILURE;
   }

   GeometryHealerEngine* GHEPtr = get_engine(body_list.get());
   if (GHEPtr)
      return GHEPtr->get_badgeom(body_list, bad_geometry);
   else
      PRINT_ERROR( "Bodies are of a geometry engine without a healer\n"
                   "         and cannot be healed.\n");
   return CUBIT_FAILURE;
}

Allow for checking of short curves after healing.

Definition at line 670 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_check_curve_on_heal_flg();
}

Allow for checking of small surfaces after healing.

Definition at line 650 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_check_surf_on_heal_flg();
}

Allow for checking of short curves after healing.

Definition at line 630 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_check_vol_on_heal_flg();
}

Get/set flags which determine whether to clean attributes after analysis and healing.

Definition at line 580 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_cleanatt_flg();
}

Allow for checking of short curves after healing.

Definition at line 680 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_curve_on_heal_limit();
}

Functions to set the default tolerances used. The healer calculates the default tolerance per body. These functions allow the user to override these defaults for all bodies healed. In incremental healing, the user can override these defaults by sending-in tolerances. For autoheal, these defaults are used if they are set, otherwise the healer calculates intelligent defaults.

Definition at line 511 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_default_analytic_tol();
}

Functions to set the default tolerances used. The healer calculates the default tolerance per body. These functions allow the user to override these defaults for all bodies healed. In incremental healing, the user can override these defaults by sending-in tolerances. For autoheal, these defaults are used if they are set, otherwise the healer calculates intelligent defaults.

Definition at line 501 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_default_geombuild_tol();
}

Functions to set the default tolerances used. The healer calculates the default tolerance per body. These functions allow the user to override these defaults for all bodies healed. In incremental healing, the user can override these defaults by sending-in tolerances. For autoheal, these defaults are used if they are set, otherwise the healer calculates intelligent defaults.

Definition at line 521 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_default_isospline_tol();
}

Functions to set the default tolerances used. The healer calculates the default tolerance per body. These functions allow the user to override these defaults for all bodies healed. In incremental healing, the user can override these defaults by sending-in tolerances. For autoheal, these defaults are used if they are set, otherwise the healer calculates intelligent defaults.

Definition at line 531 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_default_reblend_classify_tol();
}

Functions to set the default tolerances used. The healer calculates the default tolerance per body. These functions allow the user to override these defaults for all bodies healed. In incremental healing, the user can override these defaults by sending-in tolerances. For autoheal, these defaults are used if they are set, otherwise the healer calculates intelligent defaults.

Definition at line 541 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_default_reblend_tol();
}

Functions to set the default tolerances used. The healer calculates the default tolerance per body. These functions allow the user to override these defaults for all bodies healed. In incremental healing, the user can override these defaults by sending-in tolerances. For autoheal, these defaults are used if they are set, otherwise the healer calculates intelligent defaults.

Definition at line 471 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_default_simplify_tol();
}

Functions to set the default tolerances used. The healer calculates the default tolerance per body. These functions allow the user to override these defaults for all bodies healed. In incremental healing, the user can override these defaults by sending-in tolerances. For autoheal, these defaults are used if they are set, otherwise the healer calculates intelligent defaults.

Definition at line 491 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_default_stitch_max_tol();
}

Functions to set the default tolerances used. The healer calculates the default tolerance per body. These functions allow the user to override these defaults for all bodies healed. In incremental healing, the user can override these defaults by sending-in tolerances. For autoheal, these defaults are used if they are set, otherwise the healer calculates intelligent defaults.

Definition at line 481 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_default_stitch_min_tol();
}

Definition at line 183 of file GeometryHealerTool.cpp.

{
  GeometryHealerEngine *ghe;

  for (int i = 0; i < gheList.size(); i++)
  {
    ghe = gheList.next(i);
    if (ghe->is_healer_engine(tb_ptr))
       return ghe;
  }

  return NULL;
}

Definition at line 204 of file GeometryHealerTool.cpp.

{
  GeometryHealerEngine *ghe;

  TopologyBridge *tb_ptr = te_ptr->bridge_manager()->topology_bridge();
  
  for (int i = 0; i < gheList.size(); i++)
  {
    ghe = gheList.next(i);
    if (ghe->is_healer_engine(tb_ptr))
       return ghe;
  }
  
  return NULL;
}

Definition at line 815 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_inc_analytic_flg();
}

Definition at line 855 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_inc_genericspline_flg();
}

Definition at line 805 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_inc_geombuild_flg();
}

Definition at line 825 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_inc_isospline_flg();
}

Definition at line 875 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_inc_postprocess_flg();
}

Definition at line 775 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_inc_preprocess_flg();
}

Definition at line 835 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_inc_reblend_flg();
}

Definition at line 845 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_inc_sharpedge_flg();
}

Definition at line 785 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_inc_simplify_flg();
}

Definition at line 795 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_inc_stitch_flg();
}

Definition at line 865 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_inc_wrapup_flg();
}

Get/set for flags for what to show during analysis/show.

Definition at line 760 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_show_bad_bodies_flg();
}

Get/set for flags for what to show during analysis/show.

Definition at line 710 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_show_bad_coedges_flg();
}

Get/set for flags for what to show during analysis/show.

Definition at line 700 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_show_bad_curves_flg();
}

Get/set for flags for what to show during analysis/show.

Definition at line 720 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_show_bad_loops_flg();
}

Get/set for flags for what to show during analysis/show.

Definition at line 740 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_show_bad_shells_flg();
}

Get/set for flags for what to show during analysis/show.

Definition at line 730 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_show_bad_surfaces_flg();
}

Get/set for flags for what to show during analysis/show.

Definition at line 690 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_show_bad_vertices_flg();
}

Get/set for flags for what to show during analysis/show.

Definition at line 750 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_show_bad_volumes_flg();
}

Flag to determine whether to list details when showing bad geometry.

Definition at line 610 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_show_details_flg();
}

Method determines how bad geometry is displayed.

Definition at line 590 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_show_method();
}

Flag to determine whether to show bad geometry after healing.

Definition at line 620 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_show_on_heal_flg();
}

Flag to determine whether to list a summary when showing bad geometry.

Definition at line 600 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_show_summary_flg();
}

Allow for checking of small surfaces after healing.

Definition at line 660 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_surf_on_heal_limit();
}
CubitStatus GeometryHealerTool::get_tcurves ( DLIList< Body * > &  body_list,
DLIList< RefEdge * > &  t_curves 
)

Get tolerant curves. If the body list is empty, all tolerant curves are retrieved.

Definition at line 393 of file GeometryHealerTool.cpp.

{
   DLIList<RefEntity*> ref_entity_list;
   CAST_LIST_TO_PARENT(body_list, ref_entity_list);

   if (!same_healer_engine(ref_entity_list, CUBIT_TRUE))
   {
      PRINT_ERROR("HEALING bodies from different\n"
                  "       geometry engines is not allowed.\n");
      return CUBIT_FAILURE;
   }

   GeometryHealerEngine* GHEPtr = get_engine(body_list.get());
   if (GHEPtr)
      return GHEPtr->get_tcurves(body_list, t_curves);
   else
      PRINT_ERROR( "Bodies are of a geometry engine without a healer\n"
                   "         and cannot be healed.\n");
   return CUBIT_FAILURE;
}

Allow for checking of short curves after healing.

Definition at line 640 of file GeometryHealerTool.cpp.

{
   return gheList.get()->get_vol_on_heal_limit();
}
CubitStatus GeometryHealerTool::heal_bodies ( DLIList< Body * > &  body_list,
DLIList< Body * > &  new_body_list,
DLIList< TopologyEntity * > &  bad_geometry,
CubitBoolean  rebuild = CUBIT_FALSE,
CubitBoolean  keep_old = CUBIT_FALSE,
CubitBoolean  make_tolerant = CUBIT_FALSE,
FILE *  logfile_ptr = NULL 
)

Heals the input bodies, using either autoheal or incremental, depending on the switches that are setup. Writes to the logfile if it's been opened.

Definition at line 322 of file GeometryHealerTool.cpp.

{
   DLIList<RefEntity*> ref_entity_list;
   CAST_LIST_TO_PARENT(body_list, ref_entity_list);

   if (!same_healer_engine(ref_entity_list, CUBIT_TRUE))
   {
      PRINT_ERROR("HEALING bodies from different\n"
                  "       geometry engines is not allowed.\n");
      return CUBIT_FAILURE;
   }

   GeometryHealerEngine* GHEPtr = get_engine(body_list.get());
   if (GHEPtr)
      return GHEPtr->heal_bodies(body_list, new_body_list, bad_geometry,
                                 rebuild, keep_old, make_tolerant, logfile_ptr);
   else
      PRINT_ERROR( "Bodies are of a geometry engine without a healer\n"
                   "         and cannot be healed.\n");
   return CUBIT_FAILURE;
}
CubitStatus GeometryHealerTool::heal_incremental ( DLIList< Body * > &  body_list,
DLIList< Body * > &  new_bodies,
DLIList< TopologyEntity * > &  bad_geometry,
double  simplify_tol = CUBIT_DBL_MAX,
double  stitch_min_tol = CUBIT_DBL_MAX,
double  stitch_max_tol = CUBIT_DBL_MAX,
double  geombuild_tol = CUBIT_DBL_MAX,
double  analytic_tol = CUBIT_DBL_MAX,
double  isospline_tol = CUBIT_DBL_MAX,
double  reblend_classify_tol = CUBIT_DBL_MAX,
double  reblend_tol = CUBIT_DBL_MAX,
CubitBoolean  keep_old = CUBIT_FALSE,
CubitBoolean  make_tolerant = CUBIT_FALSE,
FILE *  logfile_ptr = NULL 
)

Uses the healing husk to perform one or more healing operations.

Uses the healing husk to perform one or more healing operations. Which operations are performed is determined by switches in the healer. The user can set default tolerances (separate from this function, override the defaults with this function, or just use the tolerances calculated by the healer (preferred).

The possible healing steps are: 1) preprocess - removes zero-length edges, sliver faces, duplicate vertices. This is the first step which is always done (user shouldn't suppress this). Tolerance is resabs. 2) simplify - simplify NURBS into analytic. Default simplify_tol = .0001 3) stitch - stitch geometry together. Iterative from min to max tolerance. Default min tol = 10e-5 Default max tol = 1 4) geombuild - geometry-related healing. Default geombuild_tol = .01 Default analytic_tangency_tol = .01 Default isolspline_solver_tol = .01 Individual geombuild steps can be (instead of doing all): analytic - performs all of the stages of the analytic solver subphase of the geometry building phase. The analytic solver subphase attempts to heal all edges and vertices shared by analytic surfaces. isospline - performs all of the stages of the isospline solver subphase of the geometry building phase. The isospline solver attempts to heal all edges shared by tangential isoparametric surfaces (e.g., the intersection curve is an isoparametric curve of both splines in the intersection). reblend - future option sharpedge - performs all of the stages of the sharp edge solver subphase of the geometry building phase. The sharp edge solver attempts to heal all edges and vertices that are shared by surfaces that intersect sharply. This includes nontangential surface junctions. genericspline - performs all of the stages of the generic spline solver subphase of the geometry building phase. The generic spline solver attempts to heal generic tangential spline junctions, (e.g., the intersection curve is not an isoparametric curve of both splines in the intersection). wrapup - handles remaining pcurves, wraps up geometry buiilding phase (user shouldn't suppress) 5) postprocess - correction of neg-area faces, duplicate vertices, edge groups; last step - always done (user shouldn't suppress)

Definition at line 415 of file GeometryHealerTool.cpp.

{
   DLIList<RefEntity*> ref_entity_list;
   CAST_LIST_TO_PARENT(body_list, ref_entity_list);

   if (!same_healer_engine(ref_entity_list, CUBIT_TRUE))
   {
      PRINT_ERROR("HEALING bodies from different\n"
                  "       geometry engines is not allowed.\n");
      return CUBIT_FAILURE;
   }

   GeometryHealerEngine* GHEPtr = get_engine(body_list.get());
   if (GHEPtr)
      return GHEPtr->heal_incremental(body_list, new_bodies, bad_geometry, simplify_tol, 
                                          stitch_min_tol, stitch_max_tol, geombuild_tol,
                                          analytic_tol, isospline_tol, reblend_classify_tol,
                                          reblend_tol, keep_old, make_tolerant, logfile_ptr);
   else
      PRINT_ERROR( "Bodies are of a geometry engine without a healer\n"
                   "         and cannot be healed.\n");
   return CUBIT_FAILURE;
}

Definition at line 47 of file GeometryHealerTool.cpp.

{
   // Check to see if we have created an instance of the class;
   // if not, proceed to create one.
   if (instance_ == 0) 
   {
      // When creating the instance, we should always have a valid
      // ghePtr. If not, complain.
      instance_ = new GeometryHealerTool(GHEPtr);

      // Check to make sure there's a ref entity factory extant:
      // RefEntityFactory *factory = 
      RefEntityFactory::instance();
   }
   // If there is an existing instance of the class, check if there
   // is a request to set the default engine. If so, do so.
   else if ( GHEPtr != NULL && !instance_->gheList.move_to(GHEPtr) )
   {
      delete instance_->gheList.remove();
      instance_->gheList.insert(GHEPtr);
   }

   // Return the a pointer to the instance of the class.
   return instance_;
}

Functions to set the default tolerances used. The healer calculates the default tolerance per body. These functions allow the user to override these defaults for all bodies healed. In incremental healing, the user can override these defaults by sending-in tolerances. For autoheal, these defaults are used if they are set, otherwise the healer calculates intelligent defaults.

Definition at line 556 of file GeometryHealerTool.cpp.

{
   gheList.get()->list_default_tolerances();
}

Lists the current settings for incremental healing.

Definition at line 447 of file GeometryHealerTool.cpp.

{
   gheList.get()->list_incremental();
}

Function to list to user what the current onshow flags are.

Definition at line 770 of file GeometryHealerTool.cpp.

{
   gheList.get()->list_onshow_flgs();
}
void GeometryHealerTool::list_tolerances ( DLIList< Body * > &  body_list)

Lists out the tolerances of each body, separately.

Definition at line 452 of file GeometryHealerTool.cpp.

{
   DLIList<RefEntity*> ref_entity_list;
   CAST_LIST_TO_PARENT(body_list, ref_entity_list);

   if (!same_healer_engine(ref_entity_list, CUBIT_TRUE))
   {
      PRINT_ERROR("HEALING bodies from different\n"
                  "       geometry engines is not allowed.\n");
   }

   GeometryHealerEngine* GHEPtr = get_engine(body_list.get());
   if (GHEPtr)
      GHEPtr->list_tolerances(body_list);
   else
      PRINT_ERROR( "Bodies are of a geometry engine without a healer\n"
                   "         and cannot be healed.\n");
}

Functions to set the default tolerances used. The healer calculates the default tolerance per body. These functions allow the user to override these defaults for all bodies healed. In incremental healing, the user can override these defaults by sending-in tolerances. For autoheal, these defaults are used if they are set, otherwise the healer calculates intelligent defaults.

Definition at line 551 of file GeometryHealerTool.cpp.

{
   gheList.get()->reset_default_tolerances();
}
CubitBoolean GeometryHealerTool::same_healer_engine ( DLIList< RefEntity * > &  ref_entity_list,
CubitBoolean  check_children 
) const [private]

Definition at line 227 of file GeometryHealerTool.cpp.

{
   DLIList<RefEntity*> complete_entity_list;

   //Check the check_children option and check all the children if necessary
   if (check_children)
   {
      //Make a complete list of all the RefEntities and their children
      DLIList<RefEntity*> temp = ref_entity_list;
      RefEntity* ref_entity_ptr;

      for (int i = 0; i < ref_entity_list.size(); i++)
      {
         ref_entity_ptr = ref_entity_list.get_and_step();
         complete_entity_list.clean_out();
         ref_entity_ptr->get_all_child_ref_entities(complete_entity_list);
         temp += complete_entity_list;
      }

      complete_entity_list.clean_out();
      complete_entity_list.merge_unique(temp);
   }

   //Now make sure all the RefEntities are from the same geometry engine
   DLIList<TopologyEntity*> te_list;
   CAST_LIST(complete_entity_list, te_list, TopologyEntity);
   return same_healer_engine(te_list);
}

Definition at line 264 of file GeometryHealerTool.cpp.

{
   GeometryHealerEngine *gePtr1 = get_engine(topo_list.get_and_step());
   GeometryHealerEngine *gePtr2;

   for (int i = 1; i < topo_list.size(); i++)
   {
      gePtr2 = get_engine(topo_list.get_and_step());
      if (gePtr1 != gePtr2)
      {
         return CUBIT_FALSE;   
      }
   }
   return CUBIT_TRUE;
}

Allow for checking of short curves after healing.

Definition at line 675 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_check_curve_on_heal_flg(flg);
}

Allow for checking of small surfaces after healing.

Definition at line 655 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_check_surf_on_heal_flg(flg);
}

Allow for checking of short curves after healing.

Definition at line 635 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_check_vol_on_heal_flg(flg);
}

Get/set flags which determine whether to clean attributes after analysis and healing.

Definition at line 585 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_cleanatt_flg(flg);
}

Allow for checking of short curves after healing.

Definition at line 685 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_curve_on_heal_limit(limit);
}

Functions to set the default tolerances used. The healer calculates the default tolerance per body. These functions allow the user to override these defaults for all bodies healed. In incremental healing, the user can override these defaults by sending-in tolerances. For autoheal, these defaults are used if they are set, otherwise the healer calculates intelligent defaults.

Definition at line 516 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_default_analytic_tol(tol);
}

Functions to set the default tolerances used. The healer calculates the default tolerance per body. These functions allow the user to override these defaults for all bodies healed. In incremental healing, the user can override these defaults by sending-in tolerances. For autoheal, these defaults are used if they are set, otherwise the healer calculates intelligent defaults.

Definition at line 506 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_default_geombuild_tol(tol);
}

Functions to set the default tolerances used. The healer calculates the default tolerance per body. These functions allow the user to override these defaults for all bodies healed. In incremental healing, the user can override these defaults by sending-in tolerances. For autoheal, these defaults are used if they are set, otherwise the healer calculates intelligent defaults.

Definition at line 526 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_default_isospline_tol(tol);
}

Functions to set the default tolerances used. The healer calculates the default tolerance per body. These functions allow the user to override these defaults for all bodies healed. In incremental healing, the user can override these defaults by sending-in tolerances. For autoheal, these defaults are used if they are set, otherwise the healer calculates intelligent defaults.

Definition at line 536 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_default_reblend_classify_tol(tol);
}

Functions to set the default tolerances used. The healer calculates the default tolerance per body. These functions allow the user to override these defaults for all bodies healed. In incremental healing, the user can override these defaults by sending-in tolerances. For autoheal, these defaults are used if they are set, otherwise the healer calculates intelligent defaults.

Definition at line 546 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_default_reblend_tol(tol);
}

Functions to set the default tolerances used. The healer calculates the default tolerance per body. These functions allow the user to override these defaults for all bodies healed. In incremental healing, the user can override these defaults by sending-in tolerances. For autoheal, these defaults are used if they are set, otherwise the healer calculates intelligent defaults.

Definition at line 476 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_default_simplify_tol(tol);
}

Functions to set the default tolerances used. The healer calculates the default tolerance per body. These functions allow the user to override these defaults for all bodies healed. In incremental healing, the user can override these defaults by sending-in tolerances. For autoheal, these defaults are used if they are set, otherwise the healer calculates intelligent defaults.

Definition at line 496 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_default_stitch_max_tol(tol);
}

Functions to set the default tolerances used. The healer calculates the default tolerance per body. These functions allow the user to override these defaults for all bodies healed. In incremental healing, the user can override these defaults by sending-in tolerances. For autoheal, these defaults are used if they are set, otherwise the healer calculates intelligent defaults.

Definition at line 486 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_default_stitch_min_tol(tol);
}

Definition at line 820 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_inc_analytic_flg(flg);
}

Definition at line 860 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_inc_genericspline_flg(flg);
}

Definition at line 810 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_inc_geombuild_flg(flg);
}

Definition at line 830 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_inc_isospline_flg(flg);
}

Definition at line 880 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_inc_postprocess_flg(flg);
}

Definition at line 780 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_inc_preprocess_flg(flg);
}

Definition at line 840 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_inc_reblend_flg(flg);
}

Definition at line 850 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_inc_sharpedge_flg(flg);
}

Definition at line 790 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_inc_simplify_flg(flg);
}

Definition at line 800 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_inc_stitch_flg(flg);
}

Definition at line 870 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_inc_wrapup_flg(flg);
}

Get/set for flags for what to show during analysis/show.

Definition at line 765 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_show_bad_bodies_flg(flg);
}

Get/set for flags for what to show during analysis/show.

Definition at line 715 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_show_bad_coedges_flg(flg);
}

Get/set for flags for what to show during analysis/show.

Definition at line 705 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_show_bad_curves_flg(flg);
}

Get/set for flags for what to show during analysis/show.

Definition at line 725 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_show_bad_loops_flg(flg);
}

Get/set for flags for what to show during analysis/show.

Definition at line 745 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_show_bad_shells_flg(flg);
}

Get/set for flags for what to show during analysis/show.

Definition at line 735 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_show_bad_surfaces_flg(flg);
}

Get/set for flags for what to show during analysis/show.

Definition at line 695 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_show_bad_vertices_flg(flg);
}

Get/set for flags for what to show during analysis/show.

Definition at line 755 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_show_bad_volumes_flg(flg);
}

Flag to determine whether to list details when showing bad geometry.

Definition at line 615 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_show_details_flg(flg);
}

Method determines how bad geometry is displayed.

Definition at line 595 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_show_method(method);
}

Flag to determine whether to show bad geometry after healing.

Definition at line 625 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_show_on_heal_flg(flg);
}

Flag to determine whether to list a summary when showing bad geometry.

Definition at line 605 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_show_summary_flg(flg);
}

Allow for checking of small surfaces after healing.

Definition at line 665 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_surf_on_heal_limit(limit);
}

Allow for checking of short curves after healing.

Definition at line 645 of file GeometryHealerTool.cpp.

{
   gheList.get()->set_vol_on_heal_limit(limit);
}

Member Data Documentation

Definition at line 357 of file GeometryHealerTool.hpp.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines