DATAKIT API  V2025.1
util_topology_dtk.hpp
Go to the documentation of this file.
1 #ifndef _UTIL_TOPOLOGY_DTK_HPP_
2 #define _UTIL_TOPOLOGY_DTK_HPP_
3 
4 
5 class Dtk_Coedge;
6 class Dtk_Edge;
7 class Dtk_Loop;
8 class Dtk_Face;
9 class Dtk_Shell;
10 class Dtk_Volume;
11 class Dtk_Lump;
12 class Dtk_Body;
13 
14 #include "util/util_geom_dtk.hpp"
16 #include <cstdio>
17 #include <def/define.h>
18 
20 {
24 };
25 
27 {
28 protected:
30 
32  Dtk_TopologicalEntity(const Dtk_TopologicalEntity& inToBeCopied) : Dtk_Entity(inToBeCopied){}
34  friend class Dtk_SmartPtr<Dtk_TopologicalEntity>;
35  friend class Dtk_Body;
36  virtual void _Clone( Dtk_TopologicalEntityPtr &outTopo,Dtk_Body * _inParentBody) = 0;
37  virtual Dtk_Object* Clone() {return NULL;}
38 
39 public:
40  virtual Dtk_ID GetTopoID() const;
41  virtual Dtk_ErrorStatus SetParentBody(const Dtk_BodyPtr &inParentBody);
45  int DtkDynamicType(const int& inId);
52  virtual enum type_detk get_type_detk() const;
57 };
58 
65 {
66 protected:
67  struct Dtk_Handle; // Not defined here
68  Dtk_Handle *_Private; // Handle
69  enum { _typeID = DTK_TYPE_VERTEX };
70 
71 
72 
73  void _Init();
74  void _Reset();
75  void _Copy(const Dtk_Vertex &inTopo, Dtk_Body *inParentBody);
77  Dtk_Vertex(const Dtk_Vertex &inTopo, Dtk_Body *inParentBody);
78  virtual ~Dtk_Vertex();
79  void _Clone( Dtk_TopologicalEntityPtr &outTopo,Dtk_Body * _inParentBody);
80  friend class Dtk_SmartPtr<Dtk_Vertex>;
81  friend class Dtk_TopologicalEntity;
82 
83 public:
84 
85  Dtk_ID GetTopoID() const;
86 
91  static Dtk_VertexPtr Create(const Dtk_BodyPtr &inParentBody);
95  int DtkDynamicType(const int& inId);
99  static Dtk_Vertex * DtkDynamicCast(Dtk_Object * inObject);
102  enum type_detk get_type_detk() const;
110  Dtk_ErrorStatus GetParentEdge(const Dtk_Size_t& inIndex,Dtk_EdgePtr &outParentEdge) const;
118  Dtk_ErrorStatus AddParentEdge(const Dtk_ID &inParentEdgeId);
125  void SetGeom(const Dtk_PointPtr& inPoint);
129  SetAsDeprecated("2022.1", "GetTolerance(Dtk_Double64 &outTolerance) method instead.")
131 
136 
140 
142  virtual Dtk_ErrorStatus _Store(void*);
144  virtual Dtk_Size_t GetSize() const;
145 };
146 
147 
154 {
155 protected:
156  struct Dtk_Handle; // Not defined here
157  Dtk_Handle *_Private; // Handle
158  enum { _typeID = DTK_TYPE_EDGE };
159 
160  void _Init();
161  void _Reset();
162  void _Copy(const Dtk_Edge &inTopo, Dtk_Body *inParentBody);
163  void _Clone( Dtk_TopologicalEntityPtr &outTopo,Dtk_Body * _inParentBody);
164 
166  Dtk_Edge(const Dtk_Edge& inEdgeTpCopy, Dtk_Body *inParentBody);
167  virtual ~Dtk_Edge();
168  friend class Dtk_SmartPtr<Dtk_Edge>;
169  friend class Dtk_TopologicalEntity;
170 
171 public:
172  Dtk_ID GetTopoID() const;
173 
175 
176 
180  static Dtk_EdgePtr Create(const Dtk_BodyPtr &inParentBody);
181 
182  int DtkDynamicType(const int& inId);
183  static Dtk_Edge * DtkDynamicCast(Dtk_Object * inObject);
184 
189  Dtk_ErrorStatus GetStartVertex(Dtk_ID &outVertexId) const;
195 
200  Dtk_ErrorStatus GetEndVertex(Dtk_ID &outVertexId) const;
201 
207 
211 
216  Dtk_ErrorStatus GetParentCoedge(const Dtk_Size_t &inIndex,Dtk_CoedgePtr &outCoedge) const;
217  Dtk_ErrorStatus GetParentCoedge(const Dtk_Size_t &inIndex,Dtk_ID &outCoedgeId) const;
218 
223  Dtk_ErrorStatus SetCoedges(const Dtk_CoedgePtr& inFirstCoedge,const Dtk_CoedgePtr& inSecondCoedge);
224 
229  Dtk_ErrorStatus AddCoedge(const Dtk_ID& inCoedgeId);
230 
233  void RemoveCoedge(const Dtk_ID &inCoedgeId);
234 
235 
236  enum type_detk get_type_detk() const;
237 
241  Dtk_CurvePtr GetGeom(Dtk_bool inWithVerticesTrim = DTK_TRUE) const;
245  void SetGeom(const Dtk_CurvePtr& inCurve3D);
249  SetAsDeprecated("2022.1", "GetTolerance(Dtk_Double64 &outTolerance) method instead.")
251 
256 
260 
262  virtual Dtk_ErrorStatus _Store(void*);
263 
265  virtual Dtk_Size_t GetSize() const;
266 };
267 
273 
275 {
276 protected:
277  struct Dtk_Handle; // Not defined here
278  Dtk_Handle *_Private; // Handle
280 
281  void _Init();
282  void _Reset();
283 
284  void _Copy(const Dtk_Coedge &inTopo,Dtk_Body *inParentBody);
285  void _Clone( Dtk_TopologicalEntityPtr &outTopo,Dtk_Body * _inParentBody);
286 
288  Dtk_Coedge(const Dtk_Coedge& inCoedgeToCopy,Dtk_Body *inParentBody);
289  virtual ~Dtk_Coedge();
290  friend class Dtk_SmartPtr<Dtk_Coedge>;
291  friend class Dtk_TopologicalEntity;
292 
293 public:
294  Dtk_ID GetTopoID() const;
295 
297 
301  static Dtk_CoedgePtr Create(const Dtk_BodyPtr &inParentBody);
302 
303  //downcasting
304  int DtkDynamicType(const int& inId);
305  static Dtk_Coedge * DtkDynamicCast(Dtk_Object * inObject);
306 
313  Dtk_ErrorStatus SetOrientation(const Dtk_bool& inOrientation);
314 
321 
322 
327 
332  Dtk_ErrorStatus SetEdge(const Dtk_ID &inEdgeId);
333 
337 
342  Dtk_ErrorStatus GetAdjacentCoedge(const Dtk_Size_t &inIndex, Dtk_CoedgePtr &outAdjacentCoedge) const;
343 
348 
353 
358 
363  Dtk_ErrorStatus SetParentLoop(const Dtk_ID &inParentLoopId);
364 
365  enum type_detk get_type_detk() const;
366 
372  void SetGeom(const Dtk_CurvePtr& inCurveUV);
373  virtual Dtk_ErrorStatus _Store(void*);
374  virtual Dtk_Size_t GetSize() const;
376 };
377 
384 {
385 protected:
386  struct Dtk_Handle; // Not defined here
387  Dtk_Handle *_Private; // Handle
388  enum { _typeID = DTK_TYPE_LOOP };
389 
390  void _Init();
391  void _Reset();
392  Dtk_ErrorStatus SetCoedge(const Dtk_Size_t &inIndex, const Dtk_CoedgePtr &inCoedge,const Dtk_bool &inOrientation);
393 
394  void _Copy(const Dtk_Loop &inTopo,Dtk_Body *inParentBody);
395  void _Clone( Dtk_TopologicalEntityPtr &outTopo,Dtk_Body * _inParentBody);
396 
398  Dtk_Loop(const Dtk_Loop &inTopo,Dtk_Body *inParentBody);
399  virtual ~Dtk_Loop();
400  Dtk_ErrorStatus GetParentBody(Dtk_Body* &outParentBody) const;
401  friend class Dtk_SmartPtr<Dtk_Loop>;
402  friend class Dtk_TopologicalEntity;
403 
404 public:
405  Dtk_ID GetTopoID() const;
408 
409  //downcasting
410  int DtkDynamicType(const int& inId);
412 
417 
418 
422  static Dtk_LoopPtr Create(const Dtk_BodyPtr &inParentBody);
423 
428  static Dtk_LoopPtr Create(const Dtk_BodyPtr &inParentBody,Dtk_UInt32 inCoedgeReserve);
429 
431  Dtk_bool IsOuter() const;
434 
441  Dtk_ErrorStatus SetOrientation(const Dtk_bool& inOrientation);
442 
450  Dtk_ErrorStatus GetCoedge(const Dtk_Size_t& inIndex,Dtk_CoedgePtr &outCoedge,Dtk_bool &outCoedgeOrientation) const;
451  Dtk_ErrorStatus GetCoedge(const Dtk_Size_t& inIndex,Dtk_ID &outCoedgeId,Dtk_bool &outCoedgeOrientation) const;
452 
453 
459 
460 
465  Dtk_ErrorStatus AddCoedge(const Dtk_CoedgePtr &inCoedge,const Dtk_bool &inCoedgeOrientation);
466  Dtk_ErrorStatus SetCoedges(const Dtk_tab<Dtk_CoedgePtr>& inCoedgeArray,const Dtk_tab<Dtk_bool > &inCoedgeOrientationArray);
467 
476 
485 
490 
495  Dtk_ErrorStatus SetParentFace(const Dtk_ID &inParentFaceId);
496 
500 
507 
513 
514  virtual Dtk_ErrorStatus _Store(void*);
515  virtual Dtk_Size_t GetSize() const;
516 };
517 
524 {
525 protected:
526  struct Dtk_Handle; // Not defined here
527  Dtk_Handle *_Private; // Handle
528  enum { _typeID = DTK_TYPE_FACE };
529 
530  void _Init();
531  void _Reset();
532  void _Copy(const Dtk_Face &inTopo,Dtk_Body *inParentBody);
533  Dtk_ErrorStatus SetLoop(const Dtk_Size_t &inIndex, const Dtk_LoopPtr &inLoop);
534  void _Clone( Dtk_TopologicalEntityPtr &outTopo,Dtk_Body * _inParentBody);
535 
536  friend class Dtk_SmartPtr<Dtk_Face>;
537  friend class Dtk_TopologicalEntity;
538 
539  //constructors
541  Dtk_Face(const Dtk_Face &inTopo,Dtk_Body *inParentBody);
542 
543  virtual ~Dtk_Face();
544 public:
545  Dtk_ID GetTopoID() const;
546 
549 
551 
555  static Dtk_FacePtr Create(const Dtk_BodyPtr &inParentBody);
556 
557  //downcasting
558  int DtkDynamicType(const int& inId);
559  static Dtk_Face * DtkDynamicCast(Dtk_Object * inObject);
560 
563 
566 
571  Dtk_ErrorStatus GetParentShell(const Dtk_Size_t & inIndex,Dtk_ShellPtr &outParentShell) const;
572 
578  Dtk_ErrorStatus GetParentShell(const Dtk_Size_t & inIndex,Dtk_ShellPtr &outParentShell, Dtk_bool& outOrient) const;
579 
584  Dtk_ErrorStatus AddParentShell(const Dtk_ID &inParentShellId);
585 
588 
593  Dtk_ErrorStatus GetLoop(const Dtk_Size_t& inIndex,Dtk_LoopPtr &outLoop) const;
594  Dtk_ErrorStatus GetLoop(const Dtk_Size_t & inIndex,Dtk_ID &outLoopId) const;
598 
615  Dtk_ErrorStatus AddLoop(const Dtk_LoopPtr & inLoop,const Dtk_bool& inOuterInfo);
616 
617  enum type_detk get_type_detk() const;
618 
622  Dtk_SurfacePtr GetGeom( Dtk_bool inWithSetTrim = DTK_TRUE ) const;
626  void SetGeom(const Dtk_SurfacePtr& inSurface);
627 
629  Dtk_ErrorStatus GetTrimUVBox(Dtk_Double64 outTrimValues[]) const;
632 
636 
638  virtual Dtk_ErrorStatus _Store(void*);
639  virtual Dtk_Size_t GetSize() const;
640 
643  void RemoveParentShell( const Dtk_ID &inShellId );
644 };
645 
646 
647 
653 {
654 protected:
655  struct Dtk_Handle; // Not defined here
656  Dtk_Handle *_Private; // Handle
658 
659  void _Init();
660  void _Reset();
661  void _Copy(const Dtk_Volume& inToCopy,Dtk_Body *inParentBody);
662  Dtk_Volume(const Dtk_Volume& inEdgeTpCopy, Dtk_Body *inParentBody);
664  virtual ~Dtk_Volume();
665  Dtk_ErrorStatus GetParentBody(Dtk_Body* &outParentBody) const;
667  friend class Dtk_SmartPtr<Dtk_Volume>;
668  friend class Dtk_TopologicalEntity;
669  void _Clone( Dtk_TopologicalEntityPtr &outTopo,Dtk_Body * _inParentBody);
670 
671 public:
672  Dtk_ID GetTopoID() const;
673 
674 
678  static Dtk_VolumePtr Create(const Dtk_BodyPtr &inParentBody);
679 
680  //downcasting
681  int DtkDynamicType(const int& inId);
682  static Dtk_Volume * DtkDynamicCast(Dtk_Object * inObject);
683 
686 
695  Dtk_ErrorStatus SetParentLump(const Dtk_ID& inParentLumpId);
696 
700 
705  Dtk_ErrorStatus GetShell(const Dtk_Size_t& inIndex,Dtk_ShellPtr &outShell) const;
706  Dtk_ErrorStatus GetShell(const Dtk_Size_t& inIndex,Dtk_ID &outShellId) const;
707 
723  Dtk_ErrorStatus AddWireShell(const Dtk_ShellPtr &inShell);
724 
725  enum type_detk get_type_detk() const;
727  virtual Dtk_ErrorStatus _Store(void*);
728  virtual Dtk_Size_t GetSize() const;
729 };
730 
736 {
737 protected:
738  struct Dtk_Handle; // Not defined here
739  Dtk_Handle *_Private; // Handle
740  enum { _typeID = DTK_TYPE_LUMP };
741 
742  void _Init();
743  void _Reset();
744 
745  void _Copy(const Dtk_Lump& inLumpToCopy,Dtk_Body *inParentBody);
747  Dtk_Lump(const Dtk_Lump& inLumpToCopy,Dtk_Body *inParentBody);
748  virtual ~Dtk_Lump();
749  friend class Dtk_SmartPtr<Dtk_Lump>;
750  friend class Dtk_TopologicalEntity;
751  void _Clone( Dtk_TopologicalEntityPtr &outTopo,Dtk_Body * _inParentBody);
752 
753 public:
754  Dtk_ID GetTopoID() const;
755 
759  static Dtk_LumpPtr Create(const Dtk_BodyPtr &inParentBody);
760 
761  //downcasting
762  int DtkDynamicType(const int& inId);
763  static Dtk_Lump * DtkDynamicCast(Dtk_Object * inObject);
764 
767 
775  Dtk_ErrorStatus GetVolume(const Dtk_Size_t inIndex,Dtk_VolumePtr &outVolume) const;
776  Dtk_ErrorStatus GetVolume(const Dtk_Size_t inIndex,Dtk_ID &outVolumeId) const;
789 
790  enum type_detk get_type_detk() const;
792  virtual Dtk_ErrorStatus _Store(void*);
793  virtual Dtk_Size_t GetSize() const;
794 };
795 
800 class Dtk_Body:public Dtk_Entity
801 {
802 protected:
803  struct Dtk_Handle; // Not defined here
804  Dtk_Handle *_Private; // Handle
805  enum { _typeID = DTK_TYPE_BODY };
806  void _Init();
807  void _Reset();
808 
809  void _Copy(const Dtk_Body& inBodyToCopy);
810  Dtk_Body(const Dtk_Body& inBodyToCopy);
811  virtual ~Dtk_Body();
812  friend class Dtk_SmartPtr<Dtk_Body>;
813  inline virtual Dtk_Object* Clone() { return new Dtk_Body(*this); }
814 public:
816 
819  static Dtk_BodyPtr Create();
820 
821  //downcasting
822  int DtkDynamicType(const int& inId);
823  static Dtk_Body* DtkDynamicCast(Dtk_Object * inObject);
824 
825 
831  Dtk_ErrorStatus GetLump(const Dtk_Size_t& inIndex,Dtk_LumpPtr &outLump) const;
832  Dtk_ErrorStatus GetLump(const Dtk_Size_t& inIndex,Dtk_ID &outLumpId) const;
835  Dtk_ID AddPtr(const Dtk_TopologicalEntityPtr &outEntityPtr);
836 
843  SetAsDeprecated("2025.1", "Use Dtk_Body::AddOpenShell, Dtk_Volume::AddOuterShell or Dtk_Volume::AddInnerShell to get valid topology")
844  Dtk_ErrorStatus AddShell(const Dtk_ShellPtr &inShell, const Dtk_bool &inOuterInfo,const Dtk_bool &inClosedInfo);
845  //
849  Dtk_ErrorStatus AddOpenShell(const Dtk_ShellPtr &inShell);
850  Dtk_ErrorStatus AddOpenShell2(const Dtk_ShellPtr &inShell, Dtk_VolumePtr &volume);
851 
854  Dtk_Size_t GetNumOpenShells()const;
859  Dtk_ErrorStatus GetOpenShell(Dtk_Size_t inIndex,Dtk_ShellPtr &outShell)const;
860 
864  Dtk_ErrorStatus AddUnboundedFace(Dtk_SurfacePtr inSurface);
865 
869  Dtk_ErrorStatus AddWireShell(const Dtk_ShellPtr &inShell);
870 
872  enum type_detk get_type_detk() const;
873 
874  int GetWireCurves (Dtk_tab<Dtk_CurvePtr> &curves);
875  int GetWireEntities (Dtk_tab<Dtk_CurvePtr> &curves,Dtk_tab<Dtk_PointPtr>& points);
876 
877  Dtk_ErrorStatus ComputeBoundingBox(Dtk_pnt& outMin, Dtk_pnt& outMax);
878  Dtk_ErrorStatus Store(FILE* inFile,Dtk_Size_t inIo=1);
879  Dtk_ErrorStatus Store(const Dtk_string& inFile,Dtk_Size_t inIo=1);
881  virtual Dtk_Size_t GetSize() const;
882 
887  Dtk_ErrorStatus MergeVertices(Dtk_VertexPtr inVertexToKeep,Dtk_VertexPtr inVertexToRemove);
888 
890  Dtk_bool HasFaces();
891 
893  Dtk_bool HasWire();
894 
896  Dtk_bool HasPeriodicSurface();
897 
899  Dtk_bool HasMeshSurface();
900 
904  Dtk_ErrorStatus ToNurbs(Dtk_bool inRemoveTrimmedCurve = 0);
908  SetAsDeprecated("2022.1", "GetTolerance(Dtk_Double64 &outTolerance) method instead.")
910 
915 
919 
922  Dtk_Size_t GetNumTopologicalEntities(type_detk inType);
923 
928  Dtk_EntityPtr GetEntity(const Dtk_ID& inInfoId) const;
929 
933  Dtk_ErrorStatus GetEntities(const Dtk_ID& inInfoId, Dtk_tab<Dtk_EntityPtr> &outTab) const;
934 
935  Dtk_ErrorStatus Normalize(Dtk_bool updateEdgeGeometry = DTK_TRUE);
936  Dtk_ErrorStatus RevolToStandardRevol();
937  Dtk_ErrorStatus TorusWithNegativeMaxRadiusToRevol();
938  Dtk_ErrorStatus TrimUnlimitedFaces ();
939  Dtk_ErrorStatus GetVertexBound (Dtk_pnt& pmin, Dtk_pnt& pmax);
940  Dtk_ErrorStatus GetVertexGravity(Dtk_pnt& pcenter);
941  Dtk_bool LimitInfinitEntities( Dtk_Double64 lenFoundMin, Dtk_Double64 lenNew = 1.0);
942  Dtk_ErrorStatus ExtractEdgeBody(Dtk_BodyPtr &outEdgeBody);
943  void AddStream(Dtk_StreamPtr inStream);
944  Dtk_StreamPtr GetStream(Dtk_Size_t inStreamIndex) const;
945  Dtk_Size_t GetNumStream()const;
946 
947 };
948 
955 {
956 protected:
957  struct Dtk_Handle; // Not defined here
958  Dtk_Handle *_Private; // Handle
960 
961  void _Init();
962  void _Reset();
963  void _Clone(Dtk_TopologicalEntityPtr &outTopo, Dtk_Body * _inParentBody);
964 
965  void _Copy(const Dtk_Shell &inTopo, Dtk_Body *inParentBody);
966 
968  Dtk_Shell(const Dtk_Shell &inTopo, Dtk_Body *inParentBody);
969  virtual ~Dtk_Shell();
970  friend class Dtk_SmartPtr<Dtk_Shell>;
971  friend class Dtk_TopologicalEntity;
973 
974  Dtk_ErrorStatus SetFace(const Dtk_Size_t &inIndex, const Dtk_FacePtr &inFace, const Dtk_bool &inFaceOrientation);
975 
976 public:
977  Dtk_ID GetTopoID() const;
980 
982 
986  static Dtk_ShellPtr Create(const Dtk_BodyPtr &inParentBody);
992  static Dtk_ShellPtr Create(const Dtk_BodyPtr &inParentBody, Dtk_UInt32 inFacesReserve, Dtk_UInt32 inWireReserve = 0);
993 
994  //downcasting
995  int DtkDynamicType(const int& inId);
996  static Dtk_Shell * DtkDynamicCast(Dtk_Object * inObject);
997 
1010  Dtk_ErrorStatus SetParentVolume(const Dtk_ID &inParentVolumeId);
1011 
1014 
1032 
1037 
1043 
1044 
1050  Dtk_ErrorStatus GetWireSetTopo(const Dtk_Size_t& inIndex, Dtk_tab<Dtk_EntityPtr>& outWire, Dtk_tab<Dtk_bool>& outOrientation, Dtk_bool &outLoopOrientation) const;
1052 
1059  Dtk_ErrorStatus GetFace(const Dtk_Size_t & inIndex, Dtk_FacePtr &outFace, Dtk_bool &outOrientation, DtkFaceType inFaceType = DtkFaceType_Bounded) const;
1060  Dtk_ErrorStatus GetFace(const Dtk_Size_t & inIndex, Dtk_ID &outFaceId, Dtk_bool &outOrientation, DtkFaceType inFaceType = DtkFaceType_Bounded) const;
1061 
1067  Dtk_ErrorStatus AddFace(const Dtk_FacePtr &inFace, Dtk_bool inFaceOrientation, DtkFaceType inFaceType = DtkFaceType_Bounded);
1068 
1074 
1080 
1083  Dtk_bool CheckIfClosed();
1084 
1085  enum type_detk get_type_detk() const;
1087  virtual Dtk_ErrorStatus _Store(void*);
1088  virtual Dtk_Size_t GetSize() const;
1089 };
1090 
1091 
1092 #endif
1093 
Dtk_Coedge::SetEdge
Dtk_ErrorStatus SetEdge(const Dtk_ID &inEdgeId)
Dtk_Face::SetTrimUVBox
Dtk_ErrorStatus SetTrimUVBox(Dtk_Double64 inTrimValues[])
Set Surface Trim Box : Umin = inTrimValues[0] Umax = inTrimValues[1] Vmin = inTrimValues[2] Vmax = in...
Dtk_Face::AddParentShell
Dtk_ErrorStatus AddParentShell(const Dtk_ID &inParentShellId)
Dtk_Coedge::GetGeom
Dtk_CurvePtr GetGeom() const
Get Geometry.
Dtk_Shell::DtkDynamicCast
static Dtk_Shell * DtkDynamicCast(Dtk_Object *inObject)
Dtk_Shell::SetParentVolume
Dtk_ErrorStatus SetParentVolume(const Dtk_ID &inParentVolumeId)
Dtk_Face::GetSize
virtual Dtk_Size_t GetSize() const
Dtk_Edge::AddCoedge
Dtk_ErrorStatus AddCoedge(const Dtk_CoedgePtr &inCoedge)
Add a Coedge to Edge.
Dtk_Shell::AddWire
Dtk_ErrorStatus AddWire(Dtk_tab< Dtk_VertexPtr > inPointArray)
Dtk_Volume::AddInnerShell
Dtk_ErrorStatus AddInnerShell(const Dtk_ShellPtr &inShell)
Add Inner Shell.
Dtk_Coedge::GetOrientation
Dtk_bool GetOrientation() const
Return orientation for coedge relative to Edge.
Dtk_Edge::Dtk_Edge
Dtk_Edge()
Dtk_Shell::DtkDynamicType
int DtkDynamicType(const int &inId)
Get smart pointer type.
Dtk_Face::Dtk_Face
Dtk_Face(const Dtk_Face &inTopo, Dtk_Body *inParentBody)
Dtk_ID
uint32_t Dtk_ID
Definition: define.h:689
Dtk_Body::_Reset
void _Reset()
Dtk_transfo
This is the Transformation dedicated class.
Definition: dtk_transfo.hpp:19
Dtk_Coedge::_Copy
void _Copy(const Dtk_Coedge &inTopo, Dtk_Body *inParentBody)
Dtk_Vertex::SetGeom
void SetGeom(const Dtk_PointPtr &inPoint)
Set Geometry.
Dtk_Volume::SetParentBody
Dtk_ErrorStatus SetParentBody(const Dtk_BodyPtr &inParentBody)
Dtk_Body::AddLump
Dtk_ErrorStatus AddLump(const Dtk_LumpPtr &inLump)
Dtk_Loop
Dtk_Loop is bound of a face it can be outer or inner.
Definition: util_topology_dtk.hpp:384
Dtk_Volume::SetTopologyStatus
void SetTopologyStatus(Dtk_ErrorStatus inStatus)
Dtk_Edge::GetTopoID
Dtk_ID GetTopoID() const
Dtk_Coedge::_Clone
void _Clone(Dtk_TopologicalEntityPtr &outTopo, Dtk_Body *_inParentBody)
Dtk_Edge::GetStartVertex
Dtk_ErrorStatus GetStartVertex(Dtk_ID &outVertexId) const
Dtk_Face::_Store
virtual Dtk_ErrorStatus _Store(void *)
Dtk_Volume::AddOuterShell
Dtk_ErrorStatus AddOuterShell(const Dtk_ShellPtr &inShell)
Add Outer Shell (only one supported)
Dtk_Face::DtkDynamicType
int DtkDynamicType(const int &inId)
Get smart pointer type.
Dtk_Volume::_Clone
void _Clone(Dtk_TopologicalEntityPtr &outTopo, Dtk_Body *_inParentBody)
Dtk_Coedge::HasDegeneratedFlag
Dtk_bool HasDegeneratedFlag()
Dtk_Loop::SetOuterInfo
Dtk_ErrorStatus SetOuterInfo(const Dtk_bool &inIsOuter)
Dtk_Shell::_Init
void _Init()
Dtk_Edge::GetParentCoedge
Dtk_ErrorStatus GetParentCoedge(const Dtk_Size_t &inIndex, Dtk_CoedgePtr &outCoedge) const
Get Corresponding coedges from index.
Dtk_Lump::_Reset
void _Reset()
Dtk_Lump::Dtk_Lump
Dtk_Lump()
Dtk_Loop::AddCoedge
Dtk_ErrorStatus AddCoedge(const Dtk_CoedgePtr &inCoedge, const Dtk_bool &inCoedgeOrientation)
Add coedge to the loop.
Dtk_Loop::_Init
void _Init()
DtkFaceType_Wire
@ DtkFaceType_Wire
Definition: util_topology_dtk.hpp:23
Dtk_Body::SetTopologyStatus
void SetTopologyStatus(Dtk_ErrorStatus inStatus)
Dtk_Face::~Dtk_Face
virtual ~Dtk_Face()
Dtk_Coedge::Dtk_Coedge
Dtk_Coedge()
Dtk_Coedge::DtkDynamicCast
static Dtk_Coedge * DtkDynamicCast(Dtk_Object *inObject)
Dtk_Lump::AddVolume
Dtk_ErrorStatus AddVolume(const Dtk_VolumePtr &inVolume)
Add Volume.
Dtk_Edge::GetEndVertex
Dtk_ErrorStatus GetEndVertex(Dtk_VertexPtr &outVertex) const
Get End Vertex for edge.
Dtk_Edge
Edge has two vertex for bounds. It has a 3D curve as geometry value.
Definition: util_topology_dtk.hpp:154
Dtk_Face::AddInnerLoop
Dtk_ErrorStatus AddInnerLoop(const Dtk_LoopPtr &inLoop)
Add inner loop on a face.
Dtk_Face
is a surface bounded by Dtk_Loop.
Definition: util_topology_dtk.hpp:524
Dtk_Shell::Create
static Dtk_ShellPtr Create(const Dtk_BodyPtr &inParentBody, Dtk_UInt32 inFacesReserve, Dtk_UInt32 inWireReserve=0)
Create a shell in a body.
Dtk_Shell::IsClosed
Dtk_bool IsClosed() const
Return DTK_TRUE if shell is closed.
Dtk_Shell::IsOuter
Dtk_bool IsOuter() const
Return DTK_TRUE if shell is outer.
Dtk_Loop::DtkDynamicType
int DtkDynamicType(const int &inId)
Get smart pointer type.
DTK_TYPE_VERTEX
@ DTK_TYPE_VERTEX
Definition: define.h:125
Dtk_Body::Clone
virtual Dtk_Object * Clone()
Definition: util_topology_dtk.hpp:813
Dtk_Loop::_Reset
void _Reset()
Dtk_Lump::GetTopoID
Dtk_ID GetTopoID() const
Dtk_Coedge::GetEdge
Dtk_ErrorStatus GetEdge(Dtk_EdgePtr &outEdge) const
Get Edge for coedge.
Dtk_Coedge::GetParentFace
Dtk_ErrorStatus GetParentFace(Dtk_FacePtr &outParentFace) const
Get parent face.
Dtk_Loop::Create
static Dtk_LoopPtr Create(const Dtk_BodyPtr &inParentBody)
Create a loop in a body.
catiav5w::inTransfo
const Dtk_string const Dtk_transfo & inTransfo
Definition: catiav5w.hpp:619
Dtk_Vertex::_Private
Dtk_Handle * _Private
Definition: util_topology_dtk.hpp:67
Dtk_TopologicalEntity::Dtk_TopologicalEntity
Dtk_TopologicalEntity()
Definition: util_topology_dtk.hpp:31
Dtk_Vertex::GetTopoID
Dtk_ID GetTopoID() const
Dtk_Loop::Dtk_Loop
Dtk_Loop(const Dtk_Loop &inTopo, Dtk_Body *inParentBody)
DTK_TRUE
#define DTK_TRUE
Definition: define.h:727
Dtk_Coedge::Dtk_Coedge
Dtk_Coedge(const Dtk_Coedge &inCoedgeToCopy, Dtk_Body *inParentBody)
Dtk_Shell::GetTopologyStatus
Dtk_ErrorStatus GetTopologyStatus() const
Dtk_Vertex::AddParentEdge
Dtk_ErrorStatus AddParentEdge(const Dtk_EdgePtr &inParentEdge)
Add parent Edge.
Dtk_Lump::DtkDynamicCast
static Dtk_Lump * DtkDynamicCast(Dtk_Object *inObject)
Dtk_Body::~Dtk_Body
virtual ~Dtk_Body()
Dtk_TopologicalEntity::_typeID
@ _typeID
Definition: util_topology_dtk.hpp:29
Dtk_TopologicalEntity
Definition: util_topology_dtk.hpp:27
Dtk_Face::_Init
void _Init()
Dtk_Volume::_Copy
void _Copy(const Dtk_Volume &inToCopy, Dtk_Body *inParentBody)
Dtk_Vertex::SetAsDeprecated
SetAsDeprecated("2022.1", "GetTolerance(Dtk_Double64 &outTolerance) method instead.") Dtk_Double64 GetTolerance()
Get Tolerance.
Dtk_Body::DtkDynamicType
int DtkDynamicType(const int &inId)
Dtk_Lump::_Init
void _Init()
Dtk_UInt32
uint32_t Dtk_UInt32
Definition: define.h:688
Dtk_Edge::SetStartVertex
Dtk_ErrorStatus SetStartVertex(const Dtk_ID &inVertex)
Dtk_string
This is a high level string class.
Definition: dtk_string.hpp:58
Dtk_Face::_Copy
void _Copy(const Dtk_Face &inTopo, Dtk_Body *inParentBody)
Dtk_Lump::GetVolume
Dtk_ErrorStatus GetVolume(const Dtk_Size_t inIndex, Dtk_VolumePtr &outVolume) const
Get Volume.
Dtk_Shell::ComputeBoundingBox
Dtk_ErrorStatus ComputeBoundingBox(Dtk_pnt &outMin, Dtk_pnt &outMax)
DtkFaceType_Bounded
@ DtkFaceType_Bounded
Definition: util_topology_dtk.hpp:22
Dtk_Coedge::_Init
void _Init()
Dtk_Vertex::Dtk_Vertex
Dtk_Vertex()
Dtk_Size_t
size_t Dtk_Size_t
Definition: define.h:712
Dtk_Shell::GetParentBody
Dtk_ErrorStatus GetParentBody(Dtk_BodyPtr &outParentBody) const
Get Parent Body.
Dtk_Vertex::GetTolerance
Dtk_ErrorStatus GetTolerance(Dtk_Double64 &outTolerance)
Get Tolerance.
DtkFaceType_All
@ DtkFaceType_All
Definition: util_topology_dtk.hpp:21
Dtk_Loop::GetNumCoedges
Dtk_Size_t GetNumCoedges() const
Return number of coedge in the loop.
Dtk_Loop::Create
static Dtk_LoopPtr Create(const Dtk_BodyPtr &inParentBody, Dtk_UInt32 inCoedgeReserve)
Create a loop in a body.
Dtk_Loop::_Clone
void _Clone(Dtk_TopologicalEntityPtr &outTopo, Dtk_Body *_inParentBody)
Dtk_Face::SetLoop
Dtk_ErrorStatus SetLoop(const Dtk_Size_t &inIndex, const Dtk_LoopPtr &inLoop)
Dtk_Loop::GetCoedgeIndex
Dtk_ErrorStatus GetCoedgeIndex(Dtk_CoedgePtr &inCoedge, Dtk_Size_t &outIndex) const
Get an index of a coedge in the loop.
Dtk_Lump::GetNumVolumes
Dtk_Size_t GetNumVolumes() const
Get Number of Volumes in lump.
Dtk_Shell::AddWire
Dtk_ErrorStatus AddWire(Dtk_tab< Dtk_CurvePtr > inCurveArray)
Add Wire entities.
Dtk_Coedge::GetTopoID
Dtk_ID GetTopoID() const
Dtk_Vertex::_Store
virtual Dtk_ErrorStatus _Store(void *)
Internal Use.
Dtk_Face::Dtk_Face
Dtk_Face()
Dtk_Volume::_Reset
void _Reset()
Dtk_Coedge::SetParentLoop
Dtk_ErrorStatus SetParentLoop(const Dtk_LoopPtr &inParentLoop)
Set parent loop.
Dtk_Body::Create
static Dtk_BodyPtr Create()
Create a body.
Dtk_Loop::get_type_detk
type_detk get_type_detk() const
Return Type of entity.
DTK_FALSE
#define DTK_FALSE
Definition: define.h:728
Dtk_Face::AddOuterLoop
Dtk_ErrorStatus AddOuterLoop(const Dtk_LoopPtr &inLoop)
Add outer loop on a face.
Dtk_TopologicalEntity::DtkDynamicType
int DtkDynamicType(const int &inId)
Get smart pointer type.
Dtk_Body::GetLump
Dtk_ErrorStatus GetLump(const Dtk_Size_t &inIndex, Dtk_ID &outLumpId) const
Dtk_Shell::InverseFaceInShell
Dtk_ErrorStatus InverseFaceInShell(const Dtk_FacePtr &inFace)
util_geom_dtk.hpp
Dtk_Loop::GetParentFace
Dtk_ErrorStatus GetParentFace(Dtk_FacePtr &outParentFace) const
Return pointer on parent face.
Dtk_Body::SetBodyStatus
Dtk_ErrorStatus SetBodyStatus(Dtk_ErrorStatus inBodyStatus)
Dtk_bool
char Dtk_bool
Definition: define.h:725
Dtk_Loop::InverseCoedgeOrientation
Dtk_ErrorStatus InverseCoedgeOrientation() const
Inverse sens of all coedges in the loop.
Dtk_Face::AddDegeneratedEdges
Dtk_ErrorStatus AddDegeneratedEdges() const
Add Degenerated UV curves in loops.
Dtk_Volume::ComputeBoundingBox
Dtk_ErrorStatus ComputeBoundingBox(Dtk_pnt &outMin, Dtk_pnt &outMax)
Dtk_Vertex::get_type_detk
enum type_detk get_type_detk() const
Return Type of entity.
Dtk_Loop::GetTopologyStatus
Dtk_ErrorStatus GetTopologyStatus() const
Dtk_Loop::~Dtk_Loop
virtual ~Dtk_Loop()
Dtk_Double64
double Dtk_Double64
Definition: define.h:699
Dtk_Face::GetNumLoops
Dtk_Size_t GetNumLoops() const
Return number of bounding loop for face.
Dtk_Face::_Private
Dtk_Handle * _Private
Definition: util_topology_dtk.hpp:526
Dtk_Loop::SetCoedges
Dtk_ErrorStatus SetCoedges(const Dtk_tab< Dtk_CoedgePtr > &inCoedgeArray, const Dtk_tab< Dtk_bool > &inCoedgeOrientationArray)
Dtk_Vertex::_Init
void _Init()
Dtk_Volume::DtkDynamicType
int DtkDynamicType(const int &inId)
Get smart pointer type.
Dtk_TopologicalEntity::_Clone
virtual void _Clone(Dtk_TopologicalEntityPtr &outTopo, Dtk_Body *_inParentBody)=0
Dtk_Face::_Reset
void _Reset()
Dtk_Volume::GetShell
Dtk_ErrorStatus GetShell(const Dtk_Size_t &inIndex, Dtk_ID &outShellId) const
Dtk_Loop::GetSize
virtual Dtk_Size_t GetSize() const
Dtk_Loop::IsOuter
Dtk_bool IsOuter() const
Return true if Loop is outer.
Dtk_Vertex::AddParentEdge
Dtk_ErrorStatus AddParentEdge(const Dtk_ID &inParentEdgeId)
Add parent Edge.
DtkFaceType
DtkFaceType
Definition: util_topology_dtk.hpp:20
Dtk_Volume::GetSize
virtual Dtk_Size_t GetSize() const
Dtk_Coedge::_Reset
void _Reset()
DTK_TYPE_LUMP
@ DTK_TYPE_LUMP
Definition: define.h:491
Dtk_Vertex::GetParentEdge
Dtk_ErrorStatus GetParentEdge(const Dtk_Size_t &inIndex, Dtk_EdgePtr &outParentEdge) const
Return parent edge at inIndex.
Dtk_Face::GetLoop
Dtk_ErrorStatus GetLoop(const Dtk_Size_t &inIndex, Dtk_ID &outLoopId) const
Dtk_Coedge::SetEdge
Dtk_ErrorStatus SetEdge(const Dtk_EdgePtr &inEdge)
Set Edge for coedge.
Dtk_Volume::GetShell
Dtk_ErrorStatus GetShell(const Dtk_Size_t &inIndex, Dtk_ShellPtr &outShell) const
Get Shell.
Dtk_Edge::GetStartVertex
Dtk_ErrorStatus GetStartVertex(Dtk_VertexPtr &outVertex) const
Get Start Vertex for edge.
Dtk_Shell::Dtk_Shell
Dtk_Shell()
DTK_TYPE_COEDGE
@ DTK_TYPE_COEDGE
Definition: define.h:493
Dtk_Shell
Dtk_Shell is a set of faces bounding a volume. Dtk_Shell can be outer or inner. A Dtk_Body contain at...
Definition: util_topology_dtk.hpp:955
Dtk_Face::Create
static Dtk_FacePtr Create(const Dtk_BodyPtr &inParentBody)
Create a face in a body.
Dtk_Shell::AddWire
Dtk_ErrorStatus AddWire(Dtk_tab< Dtk_EdgePtr > inCurveArray)
Dtk_Loop::SetParentBody
Dtk_ErrorStatus SetParentBody(const Dtk_BodyPtr &inParentBody)
Dtk_TopologicalEntity::DtkDynamicCast
static Dtk_TopologicalEntity * DtkDynamicCast(Dtk_Object *inObject)
Cast object in vertex.
Dtk_Volume::_Init
void _Init()
Dtk_Shell::GetSize
virtual Dtk_Size_t GetSize() const
Dtk_Lump::_Private
Dtk_Handle * _Private
Definition: util_topology_dtk.hpp:738
util_topology_ptr_dtk.hpp
Dtk_Vertex::_Clone
void _Clone(Dtk_TopologicalEntityPtr &outTopo, Dtk_Body *_inParentBody)
Dtk_Shell::GetNumFaces
Dtk_Size_t GetNumFaces(DtkFaceType inFaceType=DtkFaceType_Bounded) const
Return Number of Faces following Face type.
Dtk_Body::ExtractEdgeBody
Dtk_ErrorStatus ExtractEdgeBody(Dtk_BodyPtr &outEdgeBody)
Dtk_Loop::SetParentFace
Dtk_ErrorStatus SetParentFace(const Dtk_ID &inParentFaceId)
Dtk_Volume::SetParentLump
Dtk_ErrorStatus SetParentLump(const Dtk_ID &inParentLumpId)
Dtk_Volume::GetTopologyStatus
Dtk_ErrorStatus GetTopologyStatus() const
Dtk_Lump::GetTopologyStatus
Dtk_ErrorStatus GetTopologyStatus() const
Dtk_Loop::DtkDynamicCast
static Dtk_Loop * DtkDynamicCast(Dtk_Object *s)
Dtk_Lump::SetTopologyStatus
void SetTopologyStatus(Dtk_ErrorStatus inStatus)
Dtk_Body::GetNumLumps
Dtk_Size_t GetNumLumps() const
Dtk_Coedge::SetGeom
void SetGeom(const Dtk_CurvePtr &inCurveUV)
Set Geometry.
Dtk_Edge::_Clone
void _Clone(Dtk_TopologicalEntityPtr &outTopo, Dtk_Body *_inParentBody)
Dtk_Shell::SetParentBody
Dtk_ErrorStatus SetParentBody(const Dtk_BodyPtr &inParentBody)
Dtk_Loop::ComputeBoundingBox
Dtk_ErrorStatus ComputeBoundingBox(Dtk_pnt &outMin, Dtk_pnt &outMax)
Compute bounding Box of 3d Boundaries if they exist.
Dtk_Loop::_Store
virtual Dtk_ErrorStatus _Store(void *)
Dtk_Face::ComputeBoundingBox
Dtk_ErrorStatus ComputeBoundingBox(Dtk_pnt &outMin, Dtk_pnt &outMax)
Dtk_Face::DtkDynamicCast
static Dtk_Face * DtkDynamicCast(Dtk_Object *inObject)
Dtk_Lump::_Clone
void _Clone(Dtk_TopologicalEntityPtr &outTopo, Dtk_Body *_inParentBody)
Dtk_Loop::RemoveCoedgeFromLoop
Dtk_ErrorStatus RemoveCoedgeFromLoop(const Dtk_CoedgePtr &inCoedge)
Dtk_Body::_Copy
void _Copy(const Dtk_Body &inBodyToCopy)
Dtk_Shell::Dtk_Shell
Dtk_Shell(const Dtk_Shell &inTopo, Dtk_Body *inParentBody)
Dtk_TopologicalEntity::get_type_detk
virtual enum type_detk get_type_detk() const
Return Type of entity.
Dtk_Shell::GetParentVolume
Dtk_ErrorStatus GetParentVolume(Dtk_VolumePtr &outParentVolume) const
Return parent volume of shell.
Dtk_Vertex::DtkDynamicCast
static Dtk_Vertex * DtkDynamicCast(Dtk_Object *inObject)
Cast object in vertex.
Dtk_Coedge::SetOrientation
Dtk_ErrorStatus SetOrientation(const Dtk_bool &inOrientation)
Set orientation for coedge relative to Edge.
Dtk_Edge::RemoveCoedge
void RemoveCoedge(const Dtk_ID &inCoedgeId)
Remove a Coedge to Edge's list of coedges.
Dtk_Edge::SetCoedges
Dtk_ErrorStatus SetCoedges(const Dtk_CoedgePtr &inFirstCoedge, const Dtk_CoedgePtr &inSecondCoedge)
Set Corresponding coedges.
Dtk_Edge::SetGeom
void SetGeom(const Dtk_CurvePtr &inCurve3D)
Set Geometry.
Dtk_Lump::DtkDynamicType
int DtkDynamicType(const int &inId)
Get smart pointer type.
Dtk_Shell::~Dtk_Shell
virtual ~Dtk_Shell()
DTK_TYPE_BODY
@ DTK_TYPE_BODY
Definition: define.h:490
Dtk_Coedge::GetParentLoop
Dtk_ErrorStatus GetParentLoop(Dtk_LoopPtr &outParentLoop) const
Get parent loop.
Dtk_Edge::_Reset
void _Reset()
Dtk_Shell::SetTopologyStatus
void SetTopologyStatus(Dtk_ErrorStatus inStatus)
Dtk_Shell::GetTopoID
Dtk_ID GetTopoID() const
Dtk_Shell::_Reset
void _Reset()
DTK_TYPE_FACE
@ DTK_TYPE_FACE
Definition: define.h:141
Dtk_Volume::GetTopoID
Dtk_ID GetTopoID() const
Dtk_Shell::GetWireSet
Dtk_ErrorStatus GetWireSet(const Dtk_Size_t &inIndex, Dtk_tab< Dtk_EntityPtr > &outWire) const
Get Wire Set.
Dtk_Face::ReverseNormal
Dtk_FacePtr ReverseNormal() const
Create a new face with reversed surface.
Dtk_Lump::ComputeBoundingBox
Dtk_ErrorStatus ComputeBoundingBox(Dtk_pnt &outMin, Dtk_pnt &outMax)
Dtk_TopologicalEntity::Clone
virtual Dtk_Object * Clone()
Definition: util_topology_dtk.hpp:37
Dtk_Body::_Private
Dtk_Handle * _Private
Definition: util_topology_dtk.hpp:803
Dtk_Volume::GetParentBody
Dtk_ErrorStatus GetParentBody(Dtk_Body *&outParentBody) const
Dtk_Vertex::_Reset
void _Reset()
Dtk_Edge::DtkDynamicType
int DtkDynamicType(const int &inId)
Get smart pointer type.
Dtk_Lump::Create
static Dtk_LumpPtr Create(const Dtk_BodyPtr &inParentBody)
Create a lump in a body.
Dtk_Loop::GetCoedge
Dtk_ErrorStatus GetCoedge(const Dtk_Size_t &inIndex, Dtk_CoedgePtr &outCoedge, Dtk_bool &outCoedgeOrientation) const
Get a coedge in the loop.
Dtk_Body::GetLump
Dtk_ErrorStatus GetLump(const Dtk_Size_t &inIndex, Dtk_LumpPtr &outLump) const
Dtk_Edge::Dtk_Edge
Dtk_Edge(const Dtk_Edge &inEdgeTpCopy, Dtk_Body *inParentBody)
Dtk_Coedge::SetParentBody
Dtk_ErrorStatus SetParentBody(const Dtk_BodyPtr &inParentBody)
Dtk_Lump::SetParentBody
Dtk_ErrorStatus SetParentBody(const Dtk_BodyPtr &inParentBody)
Set Parent Body.
Dtk_Shell::_Private
Dtk_Handle * _Private
Definition: util_topology_dtk.hpp:957
Dtk_Shell::AddFace
Dtk_ErrorStatus AddFace(const Dtk_FacePtr &inFace, Dtk_bool inFaceOrientation, DtkFaceType inFaceType=DtkFaceType_Bounded)
Add Face to shell.
Dtk_Coedge
Dtk_Coedge is a part of a loop. It's geometry is a UV curve on a surface.
Definition: util_topology_dtk.hpp:275
Dtk_Coedge::GetBasisSurface
Dtk_ErrorStatus GetBasisSurface(Dtk_SurfacePtr &outBasisSurface) const
Get basis surface.
Dtk_Vertex::_Copy
void _Copy(const Dtk_Vertex &inTopo, Dtk_Body *inParentBody)
Dtk_Loop::_Private
Dtk_Handle * _Private
Definition: util_topology_dtk.hpp:386
Dtk_ErrorStatus
Dtk_ErrorStatus
Definition: error_dtk.hpp:6
Dtk_Shell::GetFace
Dtk_ErrorStatus GetFace(const Dtk_Size_t &inIndex, Dtk_ID &outFaceId, Dtk_bool &outOrientation, DtkFaceType inFaceType=DtkFaceType_Bounded) const
Dtk_Face::SetGeom
void SetGeom(const Dtk_SurfacePtr &inSurface)
Set Geometry.
Dtk_Vertex::GetGeom
Dtk_PointPtr GetGeom() const
Return associated geometry.
Dtk_Body::Dtk_Body
Dtk_Body()
Dtk_Face::GetTopologyStatus
Dtk_ErrorStatus GetTopologyStatus() const
Dtk_Face::RemoveLoopFromFace
Dtk_ErrorStatus RemoveLoopFromFace(const Dtk_LoopPtr &inLoop)
Dtk_TopologicalEntity::~Dtk_TopologicalEntity
virtual ~Dtk_TopologicalEntity()
Dtk_Coedge::SetDegeneratedFlag
Dtk_ErrorStatus SetDegeneratedFlag()
Active Degenerated flag for coedge.
Dtk_Face::AddVertexLoop
Dtk_ErrorStatus AddVertexLoop(const Dtk_VertexPtr &inVertexLoop)
Add vertex loop on a face.
Dtk_Face::GetTrimUVBox
Dtk_ErrorStatus GetTrimUVBox(Dtk_Double64 outTrimValues[]) const
Get Surface Trim Box : Umin = outTrimValues[0] Umax = outTrimValues[1] Vmin = outTrimValues[2] Vmax =...
Dtk_Loop::GetVertexLoop
Dtk_ErrorStatus GetVertexLoop(Dtk_VertexPtr &outVertexLoop) const
Return vertex loop.
Dtk_Vertex::GetNumParentEdges
Dtk_Size_t GetNumParentEdges() const
Return Number of Parent Edge.
Dtk_Face::GetParentShell
Dtk_ErrorStatus GetParentShell(const Dtk_Size_t &inIndex, Dtk_ShellPtr &outParentShell) const
Get parent shell of face.
DTK_TYPE_LOOP
@ DTK_TYPE_LOOP
Definition: define.h:134
DTK_TYPE_TOPOLOGICAL_REPRESENTATION_ITEM
@ DTK_TYPE_TOPOLOGICAL_REPRESENTATION_ITEM
Definition: define.h:167
Dtk_Shell::_Store
virtual Dtk_ErrorStatus _Store(void *)
Dtk_Volume::DtkDynamicCast
static Dtk_Volume * DtkDynamicCast(Dtk_Object *inObject)
Dtk_Vertex
Vertex indicates bound of an edge. Vertex has Dtk_Point as geometry value.
Definition: util_topology_dtk.hpp:65
Dtk_Lump::~Dtk_Lump
virtual ~Dtk_Lump()
Dtk_SmartPtr
Definition: util_ptr_dtk.hpp:37
Dtk_Shell::SetClosedInfo
Dtk_ErrorStatus SetClosedInfo(const Dtk_bool &inClosedInfo)
Set Closed Info DTK_TRUE if shell is closed.
Dtk_Coedge::GetNumAdjacentCoedges
Dtk_Size_t GetNumAdjacentCoedges() const
Get Number of adjacent coedges.
Dtk_Vertex::SetParentBody
Dtk_ErrorStatus SetParentBody(const Dtk_BodyPtr &inParentBody)
Dtk_Loop::SetTopologyStatus
void SetTopologyStatus(Dtk_ErrorStatus inStatus)
Dtk_Loop::Dtk_Loop
Dtk_Loop()
Dtk_Edge::Create
static Dtk_EdgePtr Create(const Dtk_BodyPtr &inParentBody)
Create an edge in a body.
Dtk_Edge::GetNumCoedges
Dtk_Size_t GetNumCoedges() const
Get Number of coedges.
Dtk_Shell::GetWireSetTopo
Dtk_ErrorStatus GetWireSetTopo(const Dtk_Size_t &inIndex, Dtk_tab< Dtk_EntityPtr > &outWire, Dtk_tab< Dtk_bool > &outOrientation, Dtk_bool &outLoopOrientation) const
Get Wire Set.
Dtk_Edge::_Private
Dtk_Handle * _Private
Definition: util_topology_dtk.hpp:156
Dtk_Edge::SetStartVertex
Dtk_ErrorStatus SetStartVertex(const Dtk_VertexPtr &inVertex)
Set Start Vertex for edge.
Dtk_Shell::SetFace
Dtk_ErrorStatus SetFace(const Dtk_Size_t &inIndex, const Dtk_FacePtr &inFace, const Dtk_bool &inFaceOrientation)
Dtk_Loop::ComputeUVBoundingBox
Dtk_ErrorStatus ComputeUVBoundingBox(Dtk_pnt &outMin, Dtk_pnt &outMax, Dtk_bool inComputeFlag=DTK_FALSE)
Compute bounding Box of UV Boundaries if they exist.
Dtk_Coedge::GetAdjacentCoedge
Dtk_ErrorStatus GetAdjacentCoedge(const Dtk_Size_t &inIndex, Dtk_CoedgePtr &outAdjacentCoedge) const
Get adjacent coedges from index.
Dtk_Vertex::Dtk_Vertex
Dtk_Vertex(const Dtk_Vertex &inTopo, Dtk_Body *inParentBody)
Dtk_TopologicalEntity::GetTopoID
virtual Dtk_ID GetTopoID() const
DTK_TYPE_VOLUME
@ DTK_TYPE_VOLUME
Definition: define.h:492
Dtk_Volume::AddOpenShell
Dtk_ErrorStatus AddOpenShell(const Dtk_ShellPtr &inShell)
Add Open Shell (only one supported)
Dtk_pnt
This is a mathematical point class.
Definition: dtk_pnt.hpp:22
Dtk_Edge::GetParentCoedge
Dtk_ErrorStatus GetParentCoedge(const Dtk_Size_t &inIndex, Dtk_ID &outCoedgeId) const
Dtk_Body::AddPtr
Dtk_ID AddPtr(const Dtk_TopologicalEntityPtr &outEntityPtr)
Dtk_Face::SetParentBody
Dtk_ErrorStatus SetParentBody(const Dtk_BodyPtr &inParentBody)
type_detk
type_detk
Definition: define.h:32
Dtk_Edge::DtkDynamicCast
static Dtk_Edge * DtkDynamicCast(Dtk_Object *inObject)
Dtk_Volume::~Dtk_Volume
virtual ~Dtk_Volume()
Dtk_Body::GetBodyStatus
Dtk_ErrorStatus GetBodyStatus() const
Dtk_Shell::AddWire
Dtk_ErrorStatus AddWire(Dtk_tab< Dtk_PointPtr > inPointArray)
Add Wire entities.
Dtk_Volume::Dtk_Volume
Dtk_Volume()
Dtk_Volume::Dtk_Volume
Dtk_Volume(const Dtk_Volume &inEdgeTpCopy, Dtk_Body *inParentBody)
Dtk_Face::GetLoop
Dtk_ErrorStatus GetLoop(const Dtk_Size_t &inIndex, Dtk_LoopPtr &outLoop) const
Get loop of face.
Dtk_Loop::ComputeUVBoundaries
Dtk_ErrorStatus ComputeUVBoundaries(Dtk_tab< Dtk_CurvePtr > &outUVBound, Dtk_bool inComputeFlag=0) const
Compute an array of consecutive UV curves representing the loop.
Dtk_Body::GetTopologyStatus
Dtk_ErrorStatus GetTopologyStatus() const
Dtk_Edge::SetEndVertex
Dtk_ErrorStatus SetEndVertex(const Dtk_ID &inVertex)
define.h
Dtk_Lump::_Copy
void _Copy(const Dtk_Lump &inLumpToCopy, Dtk_Body *inParentBody)
Dtk_Shell::SetParentVolume
Dtk_ErrorStatus SetParentVolume(const Dtk_VolumePtr &inParentVolume)
Set parent volume of shell.
Dtk_Face::GetParentBody
Dtk_BodyPtr GetParentBody() const
DTK_TYPE_EDGE
@ DTK_TYPE_EDGE
Definition: define.h:128
Dtk_Shell::_Copy
void _Copy(const Dtk_Shell &inTopo, Dtk_Body *inParentBody)
Dtk_Lump::GetParentBody
Dtk_ErrorStatus GetParentBody(Dtk_BodyPtr &outParentBody) const
Get Parent Body.
Dtk_tab
This is a high level array class.
Definition: util_stl_dtk.hpp:85
Dtk_Vertex::Create
static Dtk_VertexPtr Create(const Dtk_BodyPtr &inParentBody)
Create a vertex in a body.
Dtk_Coedge::Create
static Dtk_CoedgePtr Create(const Dtk_BodyPtr &inParentBody)
Create a coedge in a body.
Dtk_Body::DtkDynamicCast
static Dtk_Body * DtkDynamicCast(Dtk_Object *inObject)
Dtk_Loop::IsVertexLoop
Dtk_bool IsVertexLoop() const
Return true if Loop is a vertex loop.
Dtk_Face::AddParentShell
Dtk_ErrorStatus AddParentShell(const Dtk_ShellPtr &inParentShell)
Add parent shell on a face.
Dtk_Edge::SetParentBody
Dtk_ErrorStatus SetParentBody(const Dtk_BodyPtr &inParentBody)
Dtk_Face::GetTopoID
Dtk_ID GetTopoID() const
Dtk_Volume::GetNumShells
Dtk_Size_t GetNumShells() const
Get Number of Shell in Volume.
Dtk_Volume::GetParentLump
Dtk_ErrorStatus GetParentLump(Dtk_LumpPtr &outParentLump) const
Get Parent Lump.
Dtk_Body::_Init
void _Init()
Dtk_Vertex::_typeID
@ _typeID
Definition: util_topology_dtk.hpp:69
Dtk_Lump
A Dtk_Lump is a manifold part of a non manifold object If two volumes have a common edge you have to ...
Definition: util_topology_dtk.hpp:736
Dtk_Coedge::GetSize
virtual Dtk_Size_t GetSize() const
Dtk_Lump::GetVolume
Dtk_ErrorStatus GetVolume(const Dtk_Size_t inIndex, Dtk_ID &outVolumeId) const
Dtk_Coedge::IsDegenerated
Dtk_bool IsDegenerated() const
Indicates if Coedge is degenerated or not.
Dtk_Loop::SetCoedge
Dtk_ErrorStatus SetCoedge(const Dtk_Size_t &inIndex, const Dtk_CoedgePtr &inCoedge, const Dtk_bool &inOrientation)
Dtk_Vertex::DtkDynamicType
int DtkDynamicType(const int &inId)
Get smart pointer type.
Dtk_Loop::GetTopoID
Dtk_ID GetTopoID() const
Dtk_Vertex::~Dtk_Vertex
virtual ~Dtk_Vertex()
Dtk_Shell::HasWire
Dtk_bool HasWire() const
Return DTK_TRUE if shell has Wire entities.
Dtk_Loop::SetOrientation
Dtk_ErrorStatus SetOrientation(const Dtk_bool &inOrientation)
Set orientation for Loop relative to face.
Dtk_Body::SetAsDeprecated
SetAsDeprecated("2025.1", "Use Dtk_Body::AddOpenShell, Dtk_Volume::AddOuterShell or Dtk_Volume::AddInnerShell to get valid topology") Dtk_ErrorStatus AddShell(const Dtk_ShellPtr &inShell
Add Shell in Body in first volume of first lump (created if none)
Dtk_Shell::GetNumWireSet
Dtk_Size_t GetNumWireSet() const
Return Number of Wire set of entities equivalent to GetNumFaces with type DtkFaceType_Wire.
Dtk_Coedge::DtkDynamicType
int DtkDynamicType(const int &inId)
Get smart pointer type.
Dtk_Coedge::_Store
virtual Dtk_ErrorStatus _Store(void *)
Dtk_Edge::SetEndVertex
Dtk_ErrorStatus SetEndVertex(const Dtk_VertexPtr &inVertex)
Set End Vertex for edge.
Dtk_Object
Definition: dtk_object.hpp:8
Dtk_Edge::AddCoedge
Dtk_ErrorStatus AddCoedge(const Dtk_ID &inCoedgeId)
Dtk_Loop::GetParentBody
Dtk_ErrorStatus GetParentBody(Dtk_Body *&outParentBody) const
Dtk_TopologicalEntity::Transform
virtual Dtk_ErrorStatus Transform(const Dtk_transfo &inTransfo)
Transform object.
Dtk_TopologicalEntity::Dtk_TopologicalEntity
Dtk_TopologicalEntity(const Dtk_TopologicalEntity &inToBeCopied)
Definition: util_topology_dtk.hpp:32
Dtk_Vertex::SetTolerance
void SetTolerance(Dtk_Double64 inTol)
Set Tolerance.
Dtk_Loop::GetOrientation
Dtk_bool GetOrientation() const
Return orientation for Loop relative to face.
Dtk_Edge::GetGeom
Dtk_CurvePtr GetGeom(Dtk_bool inWithVerticesTrim=DTK_TRUE) const
Get edge geometry.
Dtk_Vertex::GetSize
virtual Dtk_Size_t GetSize() const
Internal Use.
Dtk_Face::SetTopologyStatus
void SetTopologyStatus(Dtk_ErrorStatus inStatus)
Dtk_Face::GetGeom
Dtk_SurfacePtr GetGeom(Dtk_bool inWithSetTrim=DTK_TRUE) const
Return associated geometry.
Dtk_Shell::Create
static Dtk_ShellPtr Create(const Dtk_BodyPtr &inParentBody)
Create a shell in a body.
Dtk_Volume
A Dtk_Volume is a space limited by edges. It contain one or several Dtk_Shell. If two objects have a ...
Definition: util_topology_dtk.hpp:653
Dtk_Edge::~Dtk_Edge
virtual ~Dtk_Edge()
Dtk_Coedge::~Dtk_Coedge
virtual ~Dtk_Coedge()
Dtk_TopologicalEntity::SetParentBody
virtual Dtk_ErrorStatus SetParentBody(const Dtk_BodyPtr &inParentBody)
Dtk_Edge::GetEndVertex
Dtk_ErrorStatus GetEndVertex(Dtk_ID &outVertexId) const
Dtk_Body::Dtk_Body
Dtk_Body(const Dtk_Body &inBodyToCopy)
Dtk_Volume::SetParentLump
Dtk_ErrorStatus SetParentLump(const Dtk_LumpPtr &inParentLump)
Set Parent Lump.
Dtk_Body::GetPtr
Dtk_TopologicalEntityPtr GetPtr(const Dtk_ID &inId) const
DTK_TYPE_SHELL
@ DTK_TYPE_SHELL
Definition: define.h:153
Dtk_Shell::_Clone
void _Clone(Dtk_TopologicalEntityPtr &outTopo, Dtk_Body *_inParentBody)
Dtk_Lump::GetSize
virtual Dtk_Size_t GetSize() const
Dtk_Loop::GetCoedge
Dtk_ErrorStatus GetCoedge(const Dtk_Size_t &inIndex, Dtk_ID &outCoedgeId, Dtk_bool &outCoedgeOrientation) const
Dtk_TopologicalEntity::Dtk_Body
friend class Dtk_Body
Definition: util_topology_dtk.hpp:35
Dtk_Loop::SetVertexLoop
Dtk_ErrorStatus SetVertexLoop(const Dtk_VertexPtr inVertexLoop)
Set vertex loop.
Dtk_Coedge::_Private
Dtk_Handle * _Private
Definition: util_topology_dtk.hpp:277
Dtk_Body
A Dtk_Body Dtk_Body is the highest level topological entity. It allow you to handle manifold and non-...
Definition: util_topology_dtk.hpp:801
Dtk_Shell::GetFace
Dtk_ErrorStatus GetFace(const Dtk_Size_t &inIndex, Dtk_FacePtr &outFace, Dtk_bool &outOrientation, DtkFaceType inFaceType=DtkFaceType_Bounded) const
Get Face following Face type.
Dtk_Face::GetNumParentShells
Dtk_Size_t GetNumParentShells() const
Return number of parent shell (1 if manifold body)
Dtk_Edge::_Init
void _Init()
Dtk_Loop::_Copy
void _Copy(const Dtk_Loop &inTopo, Dtk_Body *inParentBody)
Dtk_Edge::_Copy
void _Copy(const Dtk_Edge &inTopo, Dtk_Body *inParentBody)
Dtk_Volume::_Private
Dtk_Handle * _Private
Definition: util_topology_dtk.hpp:655
Dtk_Shell::RemoveFaceFromShell
Dtk_ErrorStatus RemoveFaceFromShell(const Dtk_FacePtr &inFace)
Dtk_Loop::Compute3DBoundaries
Dtk_ErrorStatus Compute3DBoundaries(Dtk_tab< Dtk_CurvePtr > &out3DBound, Dtk_bool inComputeFlag=0) const
Compute an array of consecutive 3D curves representing the loop.
Dtk_Face::RemoveParentShell
void RemoveParentShell(const Dtk_ID &inShellId)
Remove a Shell to Shell's list of face.
Dtk_Shell::GetWireSetTopo
Dtk_ErrorStatus GetWireSetTopo(const Dtk_Size_t &inIndex, Dtk_tab< Dtk_EntityPtr > &outWire) const
Dtk_Loop::SetParentFace
Dtk_ErrorStatus SetParentFace(const Dtk_FacePtr &inParentFace)
Set pointer on parent face.
Dtk_Shell::SetOuterInfo
Dtk_ErrorStatus SetOuterInfo(const Dtk_bool &inOuterInfo)
Set Outer Info DTK_TRUE if shell is outer.
Dtk_Volume::_Store
virtual Dtk_ErrorStatus _Store(void *)
Dtk_Coedge::SetParentLoop
Dtk_ErrorStatus SetParentLoop(const Dtk_ID &inParentLoopId)
Dtk_Lump::Dtk_Lump
Dtk_Lump(const Dtk_Lump &inLumpToCopy, Dtk_Body *inParentBody)
Dtk_Volume::Create
static Dtk_VolumePtr Create(const Dtk_BodyPtr &inParentBody)
Create a volume in a body.
Dtk_Edge::SetAsDeprecated
SetAsDeprecated("2022.1", "GetTolerance(Dtk_Double64 &outTolerance) method instead.") Dtk_Double64 GetTolerance()
Get Tolerance.
Dtk_Lump::_Store
virtual Dtk_ErrorStatus _Store(void *)
Dtk_Face::GetParentShell
Dtk_ErrorStatus GetParentShell(const Dtk_Size_t &inIndex, Dtk_ShellPtr &outParentShell, Dtk_bool &outOrient) const
Get parent shell of face.
Dtk_Entity
Definition: util_ent_dtk.hpp:329