LCOV - code coverage report
Current view: top level - geom/cgm - GeometryQueryEngine.hpp (source / functions) Hit Total Coverage
Test: coverage_sk.info Lines: 3 8 37.5 %
Date: 2020-06-30 00:58:45 Functions: 3 7 42.9 %
Branches: 1 2 50.0 %

           Branch data     Line data    Source code
       1                 :            : //-------------------------------------------------------------------------
       2                 :            : // Filename      : GeoemtricQueryEngine.hpp
       3                 :            : //
       4                 :            : // Purpose       : Define the interface for all solid model query
       5                 :            : //                 engines.
       6                 :            : //
       7                 :            : // Special Notes : This is an abstract base class.
       8                 :            : //
       9                 :            : // Creator       : Tim Tautges
      10                 :            : //
      11                 :            : // Creation Date : 2/01
      12                 :            : //
      13                 :            : // Owner         : Tim Tautges
      14                 :            : //-------------------------------------------------------------------------
      15                 :            : 
      16                 :            : #ifndef GEOMETRIC_QUERY_ENGINE_HPP
      17                 :            : #define GEOMETRIC_QUERY_ENGINE_HPP
      18                 :            : 
      19                 :            : #include "CubitObserver.hpp"
      20                 :            : #include "CubitDefines.h"
      21                 :            : #include "GeometryDefines.h"
      22                 :            : #include "CubitMessage.hpp"
      23                 :            : #include "CGMGeomConfigure.h"
      24                 :            : #include "CubitCompat.h"
      25                 :            : 
      26                 :            : class CubitString;
      27                 :            : class CubitVector;
      28                 :            : template <class X> class DLIList;
      29                 :            : class Body;
      30                 :            : class GMem;
      31                 :            : 
      32                 :            : class TopologyBridge;
      33                 :            : class TopologyEntity;
      34                 :            : class GeometryEntity;
      35                 :            : class BodySM;
      36                 :            : class Lump; 
      37                 :            : class Surface;
      38                 :            : class Curve;
      39                 :            : class TBPoint;
      40                 :            : class Loop;
      41                 :            : class RefFace;
      42                 :            : 
      43                 :            : enum Model_File_Type {
      44                 :            :   MFT_NOT_DEFINED = 0,
      45                 :            :   IGES_TYPE,
      46                 :            :   CATIA_TYPE,
      47                 :            :   STEP_TYPE,
      48                 :            :   PROE_TYPE,
      49                 :            :   GRANITE_TYPE,
      50                 :            :   GRANITE_G_TYPE,
      51                 :            :   GRANITE_SAT_TYPE,
      52                 :            :   GRANITE_PROE_PART_TYPE,
      53                 :            :   GRANITE_PROE_ASM_TYPE,
      54                 :            :   GRANITE_NEUTRAL_TYPE,
      55                 :            :   NCGM_TYPE,
      56                 :            :   CATIA_NCGM_TYPE,
      57                 :            :   CATPART_TYPE,
      58                 :            :   CATPRODUCT_TYPE,
      59                 :            :   FACET_TYPE, 
      60                 :            :   SOLIDWORKS_TYPE,
      61                 :            :   OCC_TYPE,
      62                 :            :   KCM_TYPE
      63                 :            : };
      64                 :            : 
      65                 :            : 
      66                 :            : extern const char*
      67                 :            : get_MFT_string(Model_File_Type);
      68                 :            : 
      69                 :            : inline const char*
      70                 :            : get_MFT_string(Model_File_Type type)
      71                 :            : {
      72                 :            :   switch (type)
      73                 :            :   {
      74                 :            :     case MFT_NOT_DEFINED :
      75                 :            :       return "Model File Type NOT DEFINED";
      76                 :            :     case IGES_TYPE :
      77                 :            :       return "IGES";
      78                 :            :     case CATIA_TYPE :
      79                 :            :       return "CATIA";
      80                 :            :     case STEP_TYPE :
      81                 :            :       return "STEP";
      82                 :            :     case PROE_TYPE :
      83                 :            :       return "PROE";
      84                 :            :     case GRANITE_TYPE :
      85                 :            :       return "GRANITE";
      86                 :            :     case GRANITE_G_TYPE :
      87                 :            :       return "GRANITE_G";
      88                 :            :     case GRANITE_SAT_TYPE :
      89                 :            :       return "GRANITE_SAT";
      90                 :            :     case GRANITE_PROE_PART_TYPE :
      91                 :            :       return "GRANITE_PROE_PART";
      92                 :            :     case GRANITE_PROE_ASM_TYPE :
      93                 :            :       return "GRANITE_PROE_ASM";
      94                 :            :     case GRANITE_NEUTRAL_TYPE :
      95                 :            :       return "GRANITE_NEUTRAL";
      96                 :            :     case NCGM_TYPE :
      97                 :            :       return "NCGM";
      98                 :            :     case CATIA_NCGM_TYPE :
      99                 :            :       return "CATIA_NCGM";
     100                 :            :     case CATPART_TYPE :
     101                 :            :       return "CATPART";
     102                 :            :     case CATPRODUCT_TYPE :
     103                 :            :       return "CATPRODUCT";
     104                 :            :     case FACET_TYPE :
     105                 :            :       return "FACET";
     106                 :            :     case SOLIDWORKS_TYPE :
     107                 :            :       return "SOLIDWORKS";
     108                 :            :     case OCC_TYPE:
     109                 :            :       return "OCC";
     110                 :            :     case KCM_TYPE:
     111                 :            :       return "KCM";
     112                 :            :     default :
     113                 :            :       PRINT_ERROR("Model_File_Type index %i is not handled properly in get_MFT_string()\n", type);
     114                 :            :   }
     115                 :            :   
     116                 :            :   return "";
     117                 :            : }  //  get_MFT_string()
     118                 :            : 
     119                 :            : 
     120                 :            : static const char* const GRANITE_G = ".g";
     121                 :            : static const char* const GRANITE_PROE_PART = ".prt";
     122                 :            : static const char* const GRANITE_PROE_ASM = ".asm";
     123                 :            : static const char* const GRANITE_PROE_NEUTRAL = ".neu";
     124                 :            : static const char* const STEP_IMPORT_DEFAULT_LOG  = "step_import.log";
     125                 :            : static const char* const IGES_IMPORT_DEFAULT_LOG = "iges_import.log";
     126                 :            : static const char* const CATIA_IMPORT_DEFAULT_LOG = "catia_import.log";
     127                 :            : static const char* const GRANITE_EXPORT_DEFAULT_LOG = "granite_export.log";
     128                 :            : static const char* const STEP_EXPORT_DEFAULT_LOG = "step_export.log";
     129                 :            : static const char* const IGES_EXPORT_DEFAULT_LOG = "iges_export.log";
     130                 :            : static const char* const OCC_EXPORT_DEFAULT_LOG = "occ_export.log";
     131                 :            : static const char* const KCM_EXPORT_DEFAULT_LOG = "kcm_export.log";
     132                 :            : static const char* const STEP_IGES_TRANSLATOR = "step_iges_translator";
     133                 :            : static const char* const TRANSLATOR_DIR =  "/translator/";
     134                 :            : 
     135                 :       2556 : class CUBIT_GEOM_EXPORT GeometryQueryEngine
     136                 :            : {
     137                 :            : 
     138                 :            : public:
     139                 :            : 
     140                 :            :     //!- virtual destructor
     141         [ -  + ]:       1084 :   virtual ~GeometryQueryEngine() {}
     142                 :            : 
     143                 :            :      //!R CubitStatus
     144                 :            :      //!R- CUBIT_SUCCESS/CUBIT_FAILURE
     145                 :            :      //!I ref_entity_list
     146                 :            :      //!I- A list of RefEntities to be exported or saved to a file.
     147                 :            :      //!I file_name
     148                 :            :      //!I- The name of the file to write to.
     149                 :            :      //!I file_type
     150                 :            :      //!I- An optional type of file.
     151                 :            :      //!- Export the current CUBIT geometry (everything in the Model) to a
     152                 :            :      //!- solid model format. Valid file types are:
     153                 :            :      //!-    "IGES"        --  IGES file
     154                 :            :      //!-    "STEP"        --  STEP file
     155                 :            :      //!I logfile_name
     156                 :            :      //!I- Optional - name of logfile.
     157                 :            :      //!- No logfile gets created for SAB/SAT files, but for IGES and
     158                 :            :      //!- STEP file a logfile always gets created.  Default filenames
     159                 :            :      //!- are assigned if one is not given (iges_export.log, step_export.log).
     160                 :            :      //!-
     161                 :            :      //!- The function returns CUBIT_FAILURE if anything goes wrong with
     162                 :            :      //!- export - improper file type, inaccessible file, mismatch between
     163                 :            :      //!- the underlying representation and file type. It returns
     164                 :            :      //!- CUBIT_SUCCESS if everything goes well.
     165                 :            :       virtual CubitStatus export_solid_model(
     166                 :            :                                    DLIList<TopologyBridge*>& bridge_list,
     167                 :            :                                    const char* file_name,
     168                 :            :                                    Model_File_Type file_type,
     169                 :            :                                    const CubitString &cubit_version,
     170                 :            :                                    ModelExportOptions &export_options ) = 0;
     171                 :            :     
     172                 :            :       virtual CubitStatus export_solid_model(
     173                 :            :                                    DLIList<TopologyBridge*>& bridge_list,
     174                 :            :                                    char*& p_buffer,
     175                 :            :                                    int& n_buffer_size,
     176                 :            :                                    bool b_export_buffer) = 0;
     177                 :            : 
     178                 :            :      //! Saves out a temporary geometry file.  Entities in list must all be 
     179                 :            :      //! of same modeling engine.
     180                 :            :      virtual CubitStatus save_temp_geom_file(
     181                 :            :                                  DLIList<TopologyBridge*> &ref_entity_list,
     182                 :            :                                  const char *filename,
     183                 :            :                                  const CubitString &cubit_version,
     184                 :            :                                  CubitString &created_file,
     185                 :            :                                  CubitString &created_file_type ) = 0;
     186                 :            : 
     187                 :            :      //!R CubitStatus
     188                 :            :      //!R- CUBIT_SUCCESS/CUBIT_FAILURE
     189                 :            :      //!I file_ptr
     190                 :            :      //!I- A pointer to the file to read (can be NULL for IGES and STEP files).
     191                 :            :      //!I file_type
     192                 :            :      //!I- Type of file.
     193                 :            :      //!- Reads in geometry and creates the necessary Reference entities
     194                 :            :      //!- associated with the input geometry.
     195                 :            :      //!- Valid file types are:
     196                 :            :      //!-
     197                 :            :      //!-    "IGES"        --  IGES file
     198                 :            :      //!-    "STEP"        --  STEP file
     199                 :            :      //!I heal_step - auto-healing of step bodies on import.  This is recommended
     200                 :            :      //!              because they always need it.
     201                 :            :      //!I import_bodies (etc...)
     202                 :            :      //!I- Should bodies be import.
     203                 :            :      //!- Function can selectively import solid bodies, free surfaces, free
     204                 :            :      //!- curves, or free vertices.  For example, the user may not want
     205                 :            :      //!- to import any free entities.
     206                 :            :      //!-
     207                 :            :      //!- The function returns CUBIT_FAILURE if anything goes wrong with
     208                 :            :      //!- import - improper file type, inaccessible file, mismatch between
     209                 :            :      //!- the underlying representation and file type. It returns
     210                 :            :      //!- CUBIT_SUCCESS if everything goes well.
     211                 :            :      virtual CubitStatus import_solid_model(
     212                 :            :                                 const char* file_name,
     213                 :            :                                 Model_File_Type file_type,
     214                 :            :                                 DLIList<TopologyBridge*>& imported_entities,
     215                 :            :                                 ModelImportOptions &import_options ) = 0;
     216                 :            : 
     217                 :            :      virtual CubitStatus import_solid_model(DLIList<TopologyBridge*> &imported_entities,
     218                 :            :                                             const char* pBuffer,
     219                 :            :                                             const int n_buffer_size) = 0;
     220                 :            : 
     221                 :            :      //O imported_entities
     222                 :            :      //O- List of top-level entities read from file
     223                 :            :      //I print_results
     224                 :            :      //I- If false, fail silently (don't write error messages to stdout or stderr)
     225                 :            : 
     226                 :            :       virtual CubitStatus get_underlying_curves(Curve * curve_ptr,
     227                 :            :                                  DLIList<TopologyBridge*>& curve_list)  ;
     228                 :            :       // -currently used only by VirtualGeometryEngine to get the underlying
     229                 :            :       // - curves from virtual curves.
     230                 :            :       virtual CubitStatus get_underlying_surfaces(Surface * surf_ptr,
     231                 :            :                                  DLIList<TopologyBridge*>& surf_list)  ;
     232                 :            :       virtual CubitStatus get_underlying_bridges(TopologyBridge* bridge_ptr,
     233                 :            :                                  DLIList<TopologyBridge*>& bridge_list);
     234                 :            : 
     235                 :            :       virtual CubitStatus get_intersections(
     236                 :            :                                     Curve* ref_edge1, CubitVector& point1,
     237                 :            :                                     CubitVector& point2,
     238                 :            :                                     DLIList<CubitVector>& intersection_list,
     239                 :            :                                     bool bounded = false,
     240                 :            :                                     bool closest = false ) = 0;
     241                 :            : 
     242                 :            :       virtual CubitStatus get_intersections(
     243                 :            :                                     Curve* ref_edge1, Curve* ref_edge2,
     244                 :            :                                     DLIList<CubitVector>& intersection_list,
     245                 :            :                                     bool bounded = false,
     246                 :            :                                     bool closest = false ) = 0;
     247                 :            :       //- Finds the intersections of the two curves.  If the bounded flag is
     248                 :            :       //- true, it finds only those intersections within the parameter range
     249                 :            :       //- of both curves; otherwise it uses the extensions of the curves.  The
     250                 :            :       //- closest option is currently valid only if both curves are straight,
     251                 :            :       //- in which case it will return the 2 closest intersection locations,
     252                 :            :       //- if the straight lines don't actually intersect. The function allocates
     253                 :            :       //- the CubitVectors in the returned list, so be sure to free them.
     254                 :            : 
     255                 :            :       virtual CubitStatus get_intersections(
     256                 :            :                                    Curve* curve,
     257                 :            :                                    Surface* surface,
     258                 :            :                                    DLIList<CubitVector>& intersection_list,
     259                 :            :                                    bool bounded = false ) = 0;
     260                 :            :       //- Finds the intersections of the curve and surface.  The curve is extended
     261                 :            :       //- if the bounded flag is not false.  The function allocates the CubitVectors
     262                 :            :       //- in the returned list, so be sure to free them.
     263                 :            : 
     264                 :            :       virtual CubitStatus entity_extrema(
     265                 :            :                                 DLIList<GeometryEntity*> &ref_entity_list,
     266                 :            :                                 const CubitVector *dir1,
     267                 :            :                                 const CubitVector *dir2,
     268                 :            :                                 const CubitVector *dir3,
     269                 :            :                                 CubitVector &extrema,
     270                 :            :                                 GeometryEntity *&extrema_entity_ptr ) = 0;
     271                 :            :       //- Gets the extrema position along the first given direction. If there
     272                 :            :       //- is more than one extrema position, the other directions will be used
     273                 :            :       //- to determine a unique position.  Directions 2 and 3 can be NULL.
     274                 :            :       //- Entities supported include bodies, volumes, surfaces, curves and
     275                 :            :       //- vertices.  The entity the extrema is found on is also returned.
     276                 :            : 
     277                 :            :       virtual CubitStatus entity_entity_distance(
     278                 :            :                                          GeometryEntity *ref_entity_ptr1,
     279                 :            :                                          GeometryEntity *ref_entity_ptr2,
     280                 :            :                                          CubitVector &pos1,
     281                 :            :                                          CubitVector &pos2,
     282                 :            :                                          double &distance ) = 0;
     283                 :            :       //- Gets the minimum distance between two entities and the closest positions
     284                 :            :       //- on those entities. Supports vertices, curves, surfaces, volumes and bodies.
     285                 :            : 
     286                 :          0 :       virtual void validate_geometry_database() const {};
     287                 :            : 
     288                 :            :       virtual void delete_solid_model_entities(DLIList<BodySM*>& body_list) const = 0;
     289                 :            :       virtual CubitStatus delete_solid_model_entities(GeometryEntity* ref_entity_ptr) const;
     290                 :            :       virtual CubitStatus delete_solid_model_entities( BodySM* body_ptr ) const = 0;
     291                 :            :       virtual CubitStatus delete_solid_model_entities(Surface* surf_ptr ) const = 0;
     292                 :            :       virtual CubitStatus delete_solid_model_entities( Curve* curve_ptr ) const = 0;
     293                 :            :       virtual CubitStatus delete_solid_model_entities( TBPoint* point_ptr ) const = 0;
     294                 :            :       virtual CubitStatus delete_topology_bridge (TopologyBridge* bridge) const;
     295                 :            :       //- Deletes the solid model entities associcated with the input
     296                 :            :       //- free-floating RefEntity. If the input RefEntity is not free-floating,
     297                 :            :       //- then its underlying  ENTITYs are not deleted and CUBIT_FAILURE
     298                 :            :       //- is returned.
     299                 :            :       //- Returns CUBIT_SUCCESS if all went well, otherwise, CUBIT_FAILURE.
     300                 :            : 
     301                 :            :   virtual CubitStatus fire_ray( CubitVector &origin,
     302                 :            :                                 CubitVector &direction,
     303                 :            :                                 DLIList<TopologyBridge*> &at_entity_list,
     304                 :            :                                 DLIList<double> &ray_params,
     305                 :            :                                 int max_hits = 0,
     306                 :            :                                 double ray_radius = 0.0,
     307                 :            :                                 DLIList<TopologyBridge*> *hit_entity_list=0 ) const = 0;
     308                 :            :     //- Fire a ray at specified entities, returning the parameters (distances)
     309                 :            :     //- along the ray and optionally the entities hit.  Returned lists are
     310                 :            :     //- appended to.  Input entities can be any of bodies, volumes, faces,
     311                 :            :     //- edges or vertices.  Optionally you can specify the maximum number of
     312                 :            :     //- hits to return (default = 0 = unlimited), and the ray radius to use for
     313                 :            :     //- intersecting the entities (default = 0.0 = use modeller default).
     314                 :            : 
     315                 :          0 :   virtual void get_ordered_loops(RefFace* /*face*/, DLIList<Loop*> &/*loop_list*/) const {};
     316                 :            : 
     317                 :            :   virtual CubitStatus get_isoparametric_points(Surface* ref_face_ptr,
     318                 :            :                                                int &nu, int &nv,
     319                 :            :                                                GMem *&gMem) const = 0;
     320                 :            : 
     321                 :            :   virtual CubitStatus get_u_isoparametric_points(Surface* ref_face_ptr,
     322                 :            :                                                  double v, int &n,
     323                 :            :                                                  GMem *&gMem) const = 0;
     324                 :            : 
     325                 :            :   virtual CubitStatus get_v_isoparametric_points(Surface* ref_face_ptr,
     326                 :            :                                                  double u, int &n,
     327                 :            :                                                  GMem *&gMem) const = 0;
     328                 :            : 
     329                 :            :   virtual CubitStatus transform_vec_position(
     330                 :            :     CubitVector const& position_vector,
     331                 :            :     BodySM *OSME_ptr,
     332                 :            :     CubitVector &transform_vector ) const = 0;
     333                 :            :     //R CubitStatus
     334                 :            :     //R- CUBIT_SUCCESS/CUBIT_FAILURE
     335                 :            :     //I position_vector on body, body that was transformed
     336                 :            :     //O vector showning transform.
     337                 :            :     //O-Computes the transform from the transformed body.
     338                 :            : 
     339                 :          0 :   virtual int curve_is_on_ignored_surface(Curve * /*curve*/,
     340                 :          0 :                     Surface * /*surf*/) { return 0; }
     341                 :            : 
     342                 :            :   virtual const char* modeler_type() = 0;
     343                 :            :   virtual int get_major_version() = 0;
     344                 :            :   virtual int get_minor_version() = 0;
     345                 :            :   virtual int get_subminor_version() = 0;
     346                 :            :   virtual int get_allint_version();
     347                 :            :   virtual CubitString get_engine_version_string() = 0;
     348                 :            : 
     349                 :      19394 :   virtual bool is_intermediate_engine() {return FALSE;}
     350                 :            : 
     351                 :            :     //- pass a string back identifying this query engine
     352                 :            :   virtual CubitStatus set_export_version(const int major,
     353                 :            :                                          const int minor);
     354                 :            :   virtual CubitStatus set_export_allint_version(const int version);
     355                 :            :   virtual CubitStatus list_engine_versions(CubitString &versions);
     356                 :            :     //- gets, sets, and lists choices for solid modeling engine version(s)
     357                 :            : 
     358                 :            :   virtual double get_sme_resabs_tolerance() const = 0; // Gets solid modeler's resolution absolute tolerance
     359                 :            :   virtual double set_sme_resabs_tolerance( double new_resabs ) = 0;
     360                 :            : 
     361                 :            :   virtual CubitStatus set_int_option( const char* opt_name, int val ) = 0;
     362                 :            :   virtual CubitStatus set_dbl_option( const char* opt_name, double val ) = 0;
     363                 :            :   virtual CubitStatus set_str_option( const char* opt_name, const char* val ) = 0;
     364                 :            :    //- Set solid modeler options
     365                 :            : 
     366                 :            :   virtual CubitStatus get_graphics( BodySM *bodysm, GMem* g_mem,
     367                 :            :                                     std::vector<Surface*> &surface_to_facets_vector,
     368                 :            :                                     std::vector<TopologyBridge*> &vertex_edge_to_point_vector,
     369                 :            :                                     std::vector<std::pair<TopologyBridge*, std::pair<int,int> > > &facet_edges_on_curves,
     370                 :            :                                     unsigned short normal_tolerance, 
     371                 :            :                                     double distance_tolerance, double max_edge_length ) const;  
     372                 :            :   //I bodysm -- body you want to facet
     373                 :            :   //O g_mem -- structure containing all the points and facet connectivity
     374                 :            :   //O surfaces_to_facets_vector -- the ith facet in g_mem is on the ith Surface in this vector
     375                 :            :   //O vertex_edge_to_point_vector -- the ith point in the g_mem in on the ith surface/edge/vertex in this vector
     376                 :            :   //O facet_edges_on_curves -- the TopologyBri dges are the Curves in bodysm and the pair is the indices to the 
     377                 :            :   //                           facet points in the g_mem's point array that make a single facet edge on the Curve.
     378                 :            :   //I various input tolerances.                           
     379                 :            : 
     380                 :            :   
     381                 :            :   virtual CubitStatus get_graphics( Surface* surface_ptr,
     382                 :            :                                     GMem* gMem,
     383                 :            :                                     unsigned short normal_tolerance=15,
     384                 :            :                                     double distance_tolerance=0,
     385                 :            :                                     double longest_edge = 0 ) const = 0;
     386                 :            : 
     387                 :            :   virtual CubitStatus get_graphics( Surface* surface_ptr,
     388                 :            :                             GMem *gmem,
     389                 :            :                             std::vector<TopologyBridge*> &vertex_edge_to_point_vector,
     390                 :            :                             std::vector<std::pair<TopologyBridge*, std::pair<int,int> > > &facet_edges_on_curves,
     391                 :            :                             unsigned short normal_tolerance = 15, 
     392                 :            :                             double distance_tolerance = 0.0, 
     393                 :            :                             double max_edge_length = 0.0 ) const;
     394                 :            : 
     395                 :            :     //R CubitStatus
     396                 :            :     //R- CUBIT_SUCCESS/CUBIT_FAILURE
     397                 :            :     //I ref_face_ptr
     398                 :            :     //I- The RefFAce for which hoops facetting information will be
     399                 :            :     //I- gathered.
     400                 :            :     //O gMem
     401                 :            :     //O- The sturage place for facets (and points).
     402                 :            :     //= This function gathers and outputs  facet (and point)
     403                 :            :     //- information for hoops involved in facetting an RefFace.  If
     404                 :            :     //- all goes well, CUBIT_Success is retuned.
     405                 :            : 
     406                 :            :   virtual CubitStatus get_graphics( Curve* curve_ptr,
     407                 :            :                                     GMem* gMem,
     408                 :            :                                     double angle_tolerance=0,
     409                 :            :                                     double distance_tolerance=0,
     410                 :            :                                     double max_edge_length=0 ) const = 0;
     411                 :            :     //R CubitStatus
     412                 :            :     //R- CUBIT_SUCCESS/CUBIT_FAILURE
     413                 :            :     //I ref_edge_ptr
     414                 :            :     //I- The RefEdge for which hoops facetting information will be
     415                 :            :     //I- gathered/
     416                 :            :     //O numSteps
     417                 :            :     //O- The number of edges gathered.
     418                 :            :     //O gMem
     419                 :            :     //O- The sturage place for edges involved in facetting.
     420                 :            :     //I tolerance
     421                 :            :     //I- The tolerance deviation used when facetting the curve.
     422                 :            :     //- This function tessellates the edge which is typically needed
     423                 :            :     //- for graphically displaying the edge. If all goes well,
     424                 :            :     //- CUBIT_SUCCESS is returned. Otherwise, CUBIT_FAILURE is returned.
     425                 :            : 
     426                 :            : 
     427                 :            :   virtual CubitStatus translate( BodySM* body, const CubitVector& offset ) = 0;
     428                 :            :   virtual CubitStatus rotate   ( BodySM* body, const CubitVector& axis, double angle ) = 0;
     429                 :            :   virtual CubitStatus scale    ( BodySM* body, double factor ) = 0;
     430                 :            :   virtual CubitStatus scale    ( BodySM* body, const CubitVector& factors ) = 0;
     431                 :            :   virtual CubitStatus reflect  ( BodySM* body, const CubitVector& axis ) = 0;
     432                 :            :   virtual CubitStatus restore_transform( BodySM* body ) = 0;
     433                 :            : 
     434                 :            :   virtual CubitStatus translate( GeometryEntity* ent, const CubitVector& offset ) = 0;
     435                 :            :   virtual CubitStatus rotate   ( GeometryEntity* ent, const CubitVector& axis, double degrees ) = 0;
     436                 :            :   virtual CubitStatus scale    ( GeometryEntity* ent, double factor ) = 0;
     437                 :            :   virtual CubitStatus scale    ( GeometryEntity* ent, const CubitVector& factors ) = 0;
     438                 :            :   virtual CubitStatus reflect  ( GeometryEntity* ent, const CubitVector& axis ) = 0;
     439                 :            : 
     440                 :            :   virtual CubitBoolean bodies_overlap (BodySM *body_ptr_1,
     441                 :            :                                        BodySM *body_ptr_2 ) const = 0;
     442                 :            : 
     443                 :            :   virtual CubitBoolean volumes_overlap (Lump *lump1, Lump *lump2 ) const = 0; 
     444                 :            : 
     445                 :          0 :   virtual TopologyBridge* get_visible_entity_at_point(TopologyBridge* /*hidden_tb*/, CubitVector* /*point*/){return NULL;};
     446                 :            : 
     447                 :            :   virtual CubitStatus get_visible_entities( TopologyBridge *hidden_tb, DLIList<TopologyBridge*> &real_tbs );
     448                 :            : 
     449                 :            :   virtual CubitStatus get_point_containment( DLIList<BodySM*> &body_list,
     450                 :            :                                      DLIList<CubitVector> &point_list,
     451                 :            :                                      double tolerance,
     452                 :            :                                      bool allow_pts_in_multiple_bodies,
     453                 :            :                                      std::vector< std::pair<BodySM*, std::vector<int> > > &bodysm_to_pt_indices );
     454                 :            : 
     455                 :            :    protected:
     456                 :            : 
     457                 :            :    private:
     458                 :            : 
     459                 :            : } ;
     460                 :            : 
     461                 :            : #endif

Generated by: LCOV version 1.11