LCOV - code coverage report
Current view: top level - geom/OCC/cgm - OCCQueryEngine.hpp (source / functions) Hit Total Coverage
Test: coverage_sk.info Lines: 0 4 0.0 %
Date: 2020-06-30 00:58:45 Functions: 0 2 0.0 %
Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : //-------------------------------------------------------------------------
       2                 :            : // Filename      : OCCQueryEngine.hpp
       3                 :            : //
       4                 :            : // Purpose       : OCC geometry engine.
       5                 :            : //
       6                 :            : //                 This class is implemented as a Singleton pattern. Only
       7                 :            : //                 one instance is created and it is accessed through the 
       8                 :            : //                 {instance()} static member function.
       9                 :            : //
      10                 :            : // Special Notes :
      11                 :            : //
      12                 :            : // Creator       : Jane Hu
      13                 :            : //
      14                 :            : // Creation Date : 10/07
      15                 :            : //
      16                 :            : //-------------------------------------------------------------------------
      17                 :            : 
      18                 :            : #ifndef OCC_GEOMETRY_ENGINE_HPP
      19                 :            : #define OCC_GEOMETRY_ENGINE_HPP
      20                 :            : 
      21                 :            : // ********** BEGIN STANDARD INCLUDES         **********
      22                 :            : 
      23                 :            : #include <typeinfo>
      24                 :            : #if !defined(NT) && !defined(CANT_USE_STD)
      25                 :            : using std::type_info;
      26                 :            : #endif
      27                 :            : 
      28                 :            : // ********** END STANDARD INCLUDES           **********
      29                 :            : #include "TDF_Label.hxx"
      30                 :            : // ********** BEGIN CUBIT INCLUDES            **********
      31                 :            : #include "CubitFileIOWrapper.hpp"
      32                 :            : #include "GeometryQueryEngine.hpp"
      33                 :            : #include "Handle_TDocStd_Document.hxx"
      34                 :            : #include <map>
      35                 :            : 
      36                 :            : // ********** END CUBIT INCLUDES              **********
      37                 :            : 
      38                 :            : // ********** BEGIN FORWARD DECLARATIONS
      39                 :            : class BRep_Builder;
      40                 :            : class TopologyEntity;
      41                 :            : class TopologyBridge;
      42                 :            : class RefEntity;
      43                 :            : class Body;
      44                 :            : class Shell;
      45                 :            : class ShellSM;
      46                 :            : class Loop;
      47                 :            : class Chain;
      48                 :            : class LoopSM;
      49                 :            : class RefVolume;
      50                 :            : class RefFace;
      51                 :            : class RefEdge;
      52                 :            : class RefVertex;
      53                 :            : class TBPoint;
      54                 :            : class Curve;
      55                 :            : class Surface;
      56                 :            : class Lump;
      57                 :            : class BodySM;
      58                 :            : 
      59                 :            : class GeometryEntity;
      60                 :            : class BodySM;
      61                 :            : class ShellSM;
      62                 :            : class Surface;
      63                 :            : class Curve;
      64                 :            : class CoEdgeSM;
      65                 :            : class TopologyEntity;
      66                 :            : class CubitBox;
      67                 :            : class CubitString;
      68                 :            : class CubitSimpleAttrib;
      69                 :            : 
      70                 :            : class OtherSolidModelingEntity;
      71                 :            : class OCCLump;
      72                 :            : class OCCShell;
      73                 :            : class OCCLoop;
      74                 :            : class OCCSurface;
      75                 :            : class OCCBody;
      76                 :            : class OCCCoEdge;
      77                 :            : class OCCCurve;
      78                 :            : class OCCPoint;
      79                 :            :  
      80                 :            : class TopTools_DataMapOfShapeInteger;
      81                 :            : class BRepAlgoAPI_BooleanOperation;
      82                 :            : class TopTools_IndexedMapOfShape;
      83                 :            : class BRepBuilderAPI_ModifyShape;
      84                 :            : class TopoDS_Vertex;
      85                 :            : class TopoDS_Edge;
      86                 :            : class TopoDS_Shape;
      87                 :            : class TopoDS_Wire;
      88                 :            : class TopoDS_Face;
      89                 :            : class TopoDS_Solid;
      90                 :            : class TopoDS_Shell;
      91                 :            : class TopoDS_Compound;
      92                 :            : // ********** END FORWARD DECLARATIONS        **********
      93                 :            : 
      94                 :            : // ********** BEGIN MACRO DEFINITIONS         **********
      95                 :            : // ********** END MACRO DEFINITIONS           **********
      96                 :            : 
      97                 :            : // ********** BEGIN ENUM DEFINITIONS          **********
      98                 :            : 
      99                 :            : // ********** END ENUM DEFINITIONS            **********
     100                 :            : class OCCQueryEngine : public GeometryQueryEngine
     101                 :            : {
     102                 :            : public:
     103                 :            : // ********** BEGIN FRIEND DECLARATIONS        **********
     104                 :            :   friend class OCCSurface;
     105                 :            :   
     106                 :            : // ********** END FRIEND DECLARATIONS        **********
     107                 :            : 
     108                 :            : //HEADER- Constructor and Destructor
     109                 :            :   
     110                 :            :   static OCCQueryEngine* instance();
     111                 :            :     //- Singleton pattern
     112                 :            :     //- Controlled access and creation of the sole instance of this class.
     113                 :            : 
     114                 :            :   CubitBoolean EXPORT_ATTRIB;
     115                 :            : 
     116                 :            :   void copy_attributes(TopoDS_Shape& old_shape,
     117                 :            :                        TopoDS_Shape& new_shape);
     118                 :            : 
     119                 :            :   int update_OCC_map(TopoDS_Shape& old_shape, TopoDS_Shape& new_shape);
     120                 :            : 
     121                 :            :   virtual ~OCCQueryEngine();
     122                 :            :   
     123                 :          0 :   const char* modeler_type()
     124                 :          0 :      { return "OCC"; }
     125                 :            : 
     126                 :            :   TopoDS_Shape *get_TopoDS_Shape_of_entity( TopologyBridge * entity);
     127                 :            :   
     128                 :            :   void body_attributes_for_writing(DLIList<OCCBody*> &OCC_bodies, //input
     129                 :            :                                  BRep_Builder &B, //input
     130                 :            :                                  TopoDS_Compound &Co, //input and output,
     131                 :            :                                  DLIList<OCCLump*> &single_lumps, //output
     132                 :            :                                  DLIList< DLIList<CubitSimpleAttrib>*> &lists);
     133                 :            : 
     134                 :            :   int get_major_version();
     135                 :            : 
     136                 :            :   int get_minor_version();
     137                 :            : 
     138                 :            :   int get_subminor_version();
     139                 :            : 
     140                 :            :   CubitString get_engine_version_string();
     141                 :            : 
     142                 :            : //HEADER- RTTI and safe casting functions.
     143                 :            :   
     144                 :            :   virtual const type_info& entity_type_info() const ;
     145                 :            :     //R- The geometric modeler type
     146                 :            :     //- This function returns the type of the geometric modeler.
     147                 :            :   
     148                 :          0 :   virtual CubitBoolean is_solid_modeler_type() const 
     149                 :          0 :     {return CUBIT_FALSE;}
     150                 :            :     //R CubitBoolean
     151                 :            :     //R- This  is not a solid modeling engine.
     152                 :            : //HEADER- Functions for importing and exporting solid models.
     153                 :            : 
     154                 :            :   virtual CubitStatus restore_transform( BodySM* body );
     155                 :            : 
     156                 :            :   using GeometryQueryEngine::get_graphics;
     157                 :            : 
     158                 :            :   virtual CubitStatus get_graphics( Surface* surface_ptr,
     159                 :            :                                     GMem* gMem,
     160                 :            :                                     unsigned short normal_tolerance = 15,
     161                 :            :                                     double distance_tolerance = 0,
     162                 :            :                                     double longest_edge = 0) const;
     163                 :            :     CubitStatus get_graphics( TopoDS_Face* face_ptr,
     164                 :            :                             GMem* g_mem,                                          
     165                 :            :                             unsigned short normal_tolerance = 15,
     166                 :            :                             double distance_tolerance = 0,
     167                 :            :                             double max_edge_length = 0) const;
     168                 :            : 
     169                 :            : 
     170                 :            :   virtual CubitStatus get_graphics( Curve* curve_ptr,
     171                 :            :                                     GMem* gMem = NULL,
     172                 :            :                                     double angle_tolerance=0,
     173                 :            :                                     double distance_tolerance=0,
     174                 :            :                                     double max_edge_length = 0.0 ) const;
     175                 :            : 
     176                 :            : 
     177                 :            : 
     178                 :            :   CubitStatus get_graphics( TopoDS_Edge* edge_ptr,
     179                 :            :     GMem* gMem = NULL,
     180                 :            :     double angle_tolerance = 0,
     181                 :            :     double distance_tolerance = 0,
     182                 :            :     double max_edge_length = 0 ) const;
     183                 :            : 
     184                 :            : 
     185                 :            :     //R CubitStatus
     186                 :            :     //R- CUBIT_SUCCESS/CUBIT_FAILURE
     187                 :            :     //I ref_edge_ptr
     188                 :            :     //I- The RefEdge for which hoops facetting information will be
     189                 :            :     //I- gathered.
     190                 :            :     //O numSteps
     191                 :            :     //O- The number of points in resulting polyline.
     192                 :            :     //O gMem
     193                 :            :     //O- The storage place for edges, involved in facetting.
     194                 :            :     //I tolerance
     195                 :            :     //I- The tolerance deviation used when facetting the curve (optional
     196                 :            :     //I- and currently IGNORED by this engine).
     197                 :            :     //- This function gathers and outputs  edge information for
     198                 :            :     //- hoops involved in facetting a RefEdge.  If all goes well,
     199                 :            :     //- CUBIT_SUCCESS is returned.  Otherwise, CUBIT_FAILURE is
     200                 :            :     //- returned.
     201                 :            :  
     202                 :            :   virtual CubitStatus fire_ray( CubitVector &origin,
     203                 :            :                                 CubitVector &direction,
     204                 :            :                                 DLIList<TopologyBridge*> &at_entity_list,
     205                 :            :                                 DLIList<double> &ray_params,
     206                 :            :                                 int max_hits = 0,
     207                 :            :                                 double ray_radius = 0.0,
     208                 :            :                                 DLIList<TopologyBridge*> *hit_entity_list=0 ) const ;
     209                 :            :     //- Fire a ray at specified entities, returning the parameters (distances)
     210                 :            :     //- along the ray and optionally the entities hit.  Returned lists are
     211                 :            :     //- appended to.  Input entities can be any of bodies, volumes, faces,
     212                 :            :     //- edges or vertices.  Optionally you can specify the maximum number of
     213                 :            :     //- hits to return (default = 0 = unlimited), and the ray radius to use for
     214                 :            :     //- intersecting the entities (default = 0.0 = use modeller default).
     215                 :            : 
     216                 :            :   virtual CubitStatus get_isoparametric_points(Surface* ,
     217                 :            :                                                int&, int&,
     218                 :            :                                                GMem*&) const;
     219                 :            :   
     220                 :            :   virtual CubitStatus get_u_isoparametric_points(Surface* ref_face_ptr,
     221                 :            :                                                  double v, int& n,
     222                 :            :                                                  GMem *&gMem) const;
     223                 :            :   
     224                 :            :   virtual CubitStatus get_v_isoparametric_points(Surface* ref_face_ptr,
     225                 :            :                                                  double u, int&n,
     226                 :            :                                                  GMem *&gMem) const;
     227                 :            :   
     228                 :            :   virtual CubitStatus transform_vec_position( 
     229                 :            :     CubitVector const& ,
     230                 :            :     BodySM *,
     231                 :            :     CubitVector & ) const;
     232                 :            :   
     233                 :            :   virtual CubitStatus get_intersections( Curve*, CubitVector& point1,
     234                 :            :                                          CubitVector&,
     235                 :            :                                          DLIList<CubitVector>& ,
     236                 :            :                                          CubitBoolean,
     237                 :            :                                          CubitBoolean );
     238                 :            : 
     239                 :            :   virtual CubitStatus get_intersections( Curve* , Curve* ,
     240                 :            :                                          DLIList<CubitVector>& ,
     241                 :            :                                          CubitBoolean,
     242                 :            :                                          CubitBoolean );
     243                 :            :   virtual CubitStatus get_intersections( Curve* ref_edge, Surface* ref_face,
     244                 :            :                                         DLIList<CubitVector>& intersection_list,
     245                 :            :                                         CubitBoolean bounded = CUBIT_FALSE );
     246                 :            : 
     247                 :            :   virtual CubitStatus entity_extrema( DLIList<GeometryEntity*> &ref_entity_list, 
     248                 :            :                                       const CubitVector *dir1, 
     249                 :            :                                       const CubitVector *dir2,
     250                 :            :                                       const CubitVector *dir3, 
     251                 :            :                                       CubitVector &extrema,
     252                 :            :                                       GeometryEntity *&extrema_entity_ptr );
     253                 :            :   //- Gets the extrema position along the first given direction. If there 
     254                 :            :   //- is more than one extrema position, the other directions will be used 
     255                 :            :   //- to determine a unique position.  Directions 2 and 3 can be NULL.
     256                 :            :   //- Entities supported include bodies, volumes, surfaces, curves and
     257                 :            :   //- vertices.  The entity the extrema is found on is also returned.
     258                 :            : 
     259                 :            :   virtual CubitStatus entity_entity_distance( GeometryEntity *ref_entity_ptr1,
     260                 :            :                                               GeometryEntity *ref_entity_ptr2,
     261                 :            :                                               CubitVector &pos1, CubitVector &pos2,
     262                 :            :                                               double &distance );
     263                 :            :   //- Gets the minimum distance between two entities and the closest positions 
     264                 :            :   //- on those entities. Supports vertices, curves, surfaces, volumes and bodies.
     265                 :            : 
     266                 :            :   virtual CubitStatus export_solid_model( DLIList<TopologyBridge*>& bridge_list,
     267                 :            :                                           const char* file_name,
     268                 :            :                                           Model_File_Type  file_type,
     269                 :            :                                           const CubitString &cubit_version,
     270                 :            :                                           ModelExportOptions &export_options );
     271                 :            : 
     272                 :            : 
     273                 :            :   // write shapes to buffer as binary format
     274                 :            :   virtual CubitStatus export_solid_model( DLIList<TopologyBridge*>& ref_entity_list,
     275                 :            :                                           char*& p_buffer,
     276                 :            :                                           int& n_buffer_size,
     277                 :            :                                           bool b_export_buffer);
     278                 :            : 
     279                 :            :   virtual CubitStatus save_temp_geom_file( DLIList<TopologyBridge*>& ref_entity_list,
     280                 :            :                                           const char *file_name,
     281                 :            :                                           const CubitString &cubit_version,
     282                 :            :                                           CubitString &created_file,
     283                 :            :                                           CubitString &created_file_type ); 
     284                 :            : 
     285                 :            :  virtual CubitStatus import_temp_geom_file(FILE* file_ptr,
     286                 :            :                                       const char* file_name,
     287                 :            :                                       Model_File_Type file_type,
     288                 :            :                                       DLIList<TopologyBridge*> &bridge_list );
     289                 :            : 
     290                 :            :  virtual CubitStatus import_solid_model(const char* file_name,
     291                 :            :                                         Model_File_Type file_type,
     292                 :            :                                         DLIList<TopologyBridge*>& imported_entities,
     293                 :            :                                         ModelImportOptions& options);
     294                 :            :   virtual CubitStatus import_solid_model(DLIList<TopologyBridge*> &imported_entities,
     295                 :            :                                          const char* pBuffer,
     296                 :            :                                          const int n_buffer_size);
     297                 :            :     
     298                 :            :   CubitStatus unhook_BodySM_from_OCC( BodySM* bodysm,
     299                 :            :                                     bool remove_lower_entities=CUBIT_TRUE)const;
     300                 :            :   CubitStatus unhook_Surface_from_OCC( Surface* surface) const;
     301                 :            :   CubitStatus unhook_Curve_from_OCC( Curve* curve) const;
     302                 :            :   CubitStatus unhook_Point_from_OCC( TBPoint* point) const;
     303                 :            :   void bound_TopoDS_Shape(const TopoDS_Shape & aShape);
     304                 :            : 
     305                 :            : private:
     306                 :            :   CubitStatus import_solid_model(FILE *file_ptr,
     307                 :            :                                  const char* /*file_type*/,
     308                 :            :                                  DLIList<TopologyBridge*> &imported_entities,
     309                 :            :                                  CubitBoolean print_results = CUBIT_TRUE,
     310                 :            :                                  const char* logfile_name = NULL,
     311                 :            :                                  CubitBoolean heal_step = CUBIT_TRUE,
     312                 :            :                                  CubitBoolean import_bodies = CUBIT_TRUE,
     313                 :            :                                  CubitBoolean import_surfaces = CUBIT_TRUE,
     314                 :            :                                  CubitBoolean import_curves = CUBIT_TRUE,
     315                 :            :                                  CubitBoolean import_vertices = CUBIT_TRUE,
     316                 :            :                                  CubitBoolean free_surfaces = CUBIT_TRUE);
     317                 :            : 
     318                 :            :   CubitStatus unhook_Lump_from_OCC( Lump* lump ) const;
     319                 :            :   CubitStatus unhook_ShellSM_from_OCC( ShellSM* shell ) const;
     320                 :            :   CubitStatus unhook_CoEdges_from_OCC( DLIList<OCCCoEdge*>& coedges) const;
     321                 :            :   CubitStatus unhook_LoopSM_from_OCC( LoopSM* loopsm) const;
     322                 :            :   CubitStatus delete_loop( LoopSM* loopsm)const;
     323                 :            :   void unhook_coedges_of_a_curve(OCCCurve* curve,
     324                 :            :                                  OCCLoop*  loop)const;
     325                 :            : 
     326                 :            :   void add_shape_to_map(TopoDS_Shape& sh,
     327                 :            :                         TopoDS_Shape& aShape, /*In, parent shape*/
     328                 :            :                         int &current_id /*Out*/);
     329                 :            : public:
     330                 :            :   virtual void delete_solid_model_entities(DLIList<BodySM*>& body_list)const;
     331                 :            :     //- Deletes all solid model entities associated with the Bodies in 
     332                 :            :     //- the input list. 
     333                 :            :   void delete_bodies(DLIList<BodySM*>& body_list,
     334                 :            :                      bool remove_lower_entities =CUBIT_TRUE) const;
     335                 :            :   using GeometryQueryEngine::delete_solid_model_entities;
     336                 :            :   virtual CubitStatus delete_solid_model_entities(
     337                 :            :           GeometryEntity* ref_entity_ptr,
     338                 :            :           bool remove_lower_entities) const;
     339                 :            :   virtual CubitStatus delete_solid_model_entities( BodySM* body_ptr)const; 
     340                 :            :   CubitStatus delete_body(BodySM* body_ptr ,
     341                 :            :                           bool remove_lower_entities =CUBIT_TRUE) const;
     342                 :            :   virtual CubitStatus delete_solid_model_entities(Surface* surf_ptr)const;
     343                 :            :   virtual CubitStatus delete_solid_model_entities( Curve* curve_ptr)const; 
     344                 :            :   virtual CubitStatus delete_solid_model_entities( TBPoint* point_ptr)const;
     345                 :            : 
     346                 :            :   virtual double get_sme_resabs_tolerance() const; // Gets solid modeler's resolution absolute tolerance
     347                 :            :   virtual double set_sme_resabs_tolerance( double new_resabs );
     348                 :            : 
     349                 :            :   virtual CubitStatus set_int_option( const char* opt_name, int val );
     350                 :            :   virtual CubitStatus set_dbl_option( const char* opt_name, double val );
     351                 :            :   virtual CubitStatus set_str_option( const char* opt_name, const char* val );
     352                 :            :     //- Set solid modeler options
     353                 :            : 
     354                 :            :   CubitStatus ensure_is_ascii_stl_file(FILE * fp, CubitBoolean &is_ascii);
     355                 :            :   //- returns true in is_ascii if fp points to an ascii stl file
     356                 :            : 
     357                 :            :   CubitStatus create_super_bounding_box(
     358                 :            :                                 DLIList<BodySM*>& body_list,
     359                 :            :                                 CubitBox& super_box );
     360                 :            : 
     361                 :            :   //ModifyShape refers to only Transform and GTransform for now (1/10/11)
     362                 :            :   CubitStatus update_entity_shape(GeometryEntity* entity_ptr,
     363                 :            :                                   BRepBuilderAPI_ModifyShape* aTranf,
     364                 :            :                                   BRepAlgoAPI_BooleanOperation *op = NULL);
     365                 :            : 
     366                 :            :   void set_TopoDS_Shape(TopologyBridge* tb, TopoDS_Shape& new_shape);
     367                 :            :   CubitStatus translate( BodySM* body, const CubitVector& offset );
     368                 :            :   CubitStatus rotate   ( BodySM* body, const CubitVector& axis, double angle );
     369                 :            :   CubitStatus scale    ( BodySM* body, double factor );
     370                 :            :   CubitStatus scale    ( BodySM* body, const CubitVector& factors );
     371                 :            :   CubitStatus reflect  ( BodySM* body, const CubitVector& axis );
     372                 :            : 
     373                 :            :   CubitStatus translate( GeometryEntity* ent, const CubitVector& offset );
     374                 :            :   CubitStatus rotate   ( GeometryEntity* ent, const CubitVector& axis, double degrees );
     375                 :            :   CubitStatus scale    ( GeometryEntity* ent, double factor );
     376                 :            :   CubitStatus scale    ( GeometryEntity* ent, const CubitVector& factors );
     377                 :            :   CubitStatus reflect  ( GeometryEntity* ent, const CubitVector& axis );
     378                 :            : 
     379                 :            :   CubitStatus get_connected_patch( DLIList<OCCSurface*>& remaining_surfs,
     380                 :            :                                    DLIList<OCCSurface*>& output_patch );
     381                 :            :   virtual CubitBoolean bodies_overlap (BodySM *body_ptr_1,
     382                 :            :                                        BodySM *body_ptr_2 ) const;
     383                 :            :   //R CubitBoolean
     384                 :            :   //R- CUBIT_TRUE if the two bodies overlap, CUBIT_FALSE if they don't
     385                 :            :   //R- overlap.  If the bodies are touching the function
     386                 :            :   //R- should return CUBIT_FALSE.
     387                 :            :   //I body_ptr_1, body_ptr_2
     388                 :            :   //I- The two body pointers that are being tested for overlap.
     389                 :            :   //-  The function uses the intersect call to test if the bodies
     390                 :            :   //-  are overlaping.  The full intersect Boolean is needed to see if
     391                 :            :   //-  the bodies actually overlap and don't just touch.
     392                 :            : 
     393                 :            :   TopologyBridge* occ_to_cgm(const TopoDS_Shape& shape);
     394                 :            :   
     395                 :            :   virtual CubitBoolean volumes_overlap (Lump *lump1, Lump *lump2 ) const ;
     396                 :            : 
     397                 :            :   DLIList<TopologyBridge*> populate_topology_bridge(TopoDS_Shape& aShape);
     398                 :            :   BodySM* populate_topology_bridge(const TopoDS_Compound& aShape);
     399                 :            :   Lump* populate_topology_bridge(const TopoDS_Solid& aShape, 
     400                 :            :                                    CubitBoolean build_body = CUBIT_FALSE);
     401                 :            :   Surface* populate_topology_bridge(const TopoDS_Face& aShape,
     402                 :            :                                     CubitBoolean build_body = CUBIT_FALSE);
     403                 :            :   Curve* populate_topology_bridge(const TopoDS_Edge& aShape,
     404                 :            :                                   CubitBoolean stand_along = CUBIT_FALSE );
     405                 :            :   TBPoint* populate_topology_bridge(const TopoDS_Vertex& aShape,
     406                 :            :                                   CubitBoolean stand_along = CUBIT_FALSE);
     407                 :            : 
     408                 :            :   OCCShell* populate_topology_bridge(const TopoDS_Shell& aShape,
     409                 :            :                                      CubitBoolean standalone = CUBIT_FALSE );
     410                 :            :   DLIList<OCCBody*> *BodyList ;
     411                 :            :   DLIList<OCCSurface*> *SurfaceList ;
     412                 :            :   DLIList<OCCLoop*> *WireList; //standalone wire list
     413                 :            :   DLIList<OCCCurve*> *CurveList ;
     414                 :            :   Handle(TDocStd_Document) MyDF;
     415                 :            :   TDF_Label mainLabel;
     416                 :            :   TopTools_DataMapOfShapeInteger* OCCMap;
     417                 :            :   std::map<int, TopologyBridge*>* OccToCGM;
     418                 :            :   std::map<int, TDF_Label>* Shape_Label_Map;
     419                 :            :   static int iTotalTBCreated ;
     420                 :            :   static int total_coedges;
     421                 :            : protected:
     422                 :            :   
     423                 :            :   OCCQueryEngine();
     424                 :            :   
     425                 :            : private:
     426                 :            : 
     427                 :            :   OCCLoop* populate_topology_bridge(const TopoDS_Wire& aShape,
     428                 :            :                                     CubitBoolean standalone = CUBIT_FALSE);  
     429                 :            : 
     430                 :            :   CubitStatus write_topology( const char* file_name, 
     431                 :            :                               Model_File_Type file_type,
     432                 :            :                               DLIList<OCCBody*> &facet_bodies,
     433                 :            :                               DLIList<OCCSurface*> &facet_surfaces,
     434                 :            :                               DLIList<OCCCurve*> &facet_curves,
     435                 :            :                               DLIList<OCCPoint*> &facet_points );
     436                 :            : 
     437                 :            :   CubitStatus write_topology( char*& p_buffer,
     438                 :            :                               int& n_buffer_size,
     439                 :            :                               bool b_export_buffer,
     440                 :            :                               DLIList<OCCBody*> &OCC_bodies,
     441                 :            :                               DLIList<OCCSurface*> &OCC_surfaces,
     442                 :            :                               DLIList<OCCCurve*> &OCC_curves,
     443                 :            :                               DLIList<OCCPoint*> &OCC_points);
     444                 :            :   
     445                 :            :   CubitBoolean Write(const TopoDS_Shape& Sh,
     446                 :            :                      const Standard_CString File,
     447                 :            :                      TDF_Label label);
     448                 :            : 
     449                 :            :   CubitBoolean Write(const TopoDS_Shape& Sh,
     450                 :            :                      char*& p_buffer,
     451                 :            :                      int& n_buffer_size,
     452                 :            :                      bool b_export_buffer,
     453                 :            :                      TDF_Label label);
     454                 :            :   
     455                 :            :   CubitBoolean Read(TopoDS_Shape& Shapes,
     456                 :            :                     const Standard_CString File,
     457                 :            :                     TDF_Label label);
     458                 :            : 
     459                 :            :   CubitBoolean Read(TopoDS_Shape& Sh,
     460                 :            :                     const char* pBuffer,
     461                 :            :                     const int n_buffer_size,
     462                 :            :                     TDF_Label label);
     463                 :            : 
     464                 :            :   static OCCQueryEngine* instance_;
     465                 :            :     //- static pointer to unique instance of this class
     466                 :            : };
     467                 :            : 
     468                 :            : // ********** BEGIN INLINE FUNCTIONS          **********
     469                 :            : // ********** END INLINE FUNCTIONS            **********
     470                 :            : 
     471                 :            : // ********** BEGIN FRIEND FUNCTIONS          **********
     472                 :            : // ********** END FRIEND FUNCTIONS            **********
     473                 :            : 
     474                 :            : // ********** BEGIN EXTERN FUNCTIONS          **********
     475                 :            : // ********** END EXTERN FUNCTIONS            **********
     476                 :            : 
     477                 :            : // ********** BEGIN HELPER CLASS DECLARATIONS **********
     478                 :            : // ********** END HELPER CLASS DECLARATIONS   **********
     479                 :            : 
     480                 :            : #endif

Generated by: LCOV version 1.11