DATAKIT API  V2025.4
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 
64 {
65 protected:
66  struct Dtk_Handle; // Not defined here
67  Dtk_Handle *_Private; // Handle
68  enum { _typeID = DTK_TYPE_VERTEX };
69 
70 
71 
72  void _Init();
73  void _Reset();
74  void _Copy(const Dtk_Vertex &inTopo, Dtk_Body *inParentBody);
76  Dtk_Vertex(const Dtk_Vertex &inTopo, Dtk_Body *inParentBody);
77  virtual ~Dtk_Vertex();
78  void _Clone( Dtk_TopologicalEntityPtr &outTopo,Dtk_Body * _inParentBody);
79  friend class Dtk_SmartPtr<Dtk_Vertex>;
80  friend class Dtk_TopologicalEntity;
81 
82 public:
83 
84  Dtk_ID GetTopoID() const;
85 
90  static Dtk_VertexPtr Create(const Dtk_BodyPtr &inParentBody);
94  int DtkDynamicType(const int& inId);
98  static Dtk_Vertex * DtkDynamicCast(Dtk_Object * inObject);
101  enum type_detk get_type_detk() const;
109  Dtk_ErrorStatus GetParentEdge(const Dtk_Size_t& inIndex,Dtk_EdgePtr &outParentEdge) const;
117  Dtk_ErrorStatus AddParentEdge(const Dtk_ID &inParentEdgeId);
124  void SetGeom(const Dtk_PointPtr& inPoint);
129  SetAsDeprecated("2022.1", "Use 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", "Use 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 
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 
487 
492 
497  Dtk_ErrorStatus SetParentFace(const Dtk_ID &inParentFaceId);
498 
502 
509 
515 
516  virtual Dtk_ErrorStatus _Store(void*);
517  virtual Dtk_Size_t GetSize() const;
518 };
519 
526 {
527 protected:
528  struct Dtk_Handle; // Not defined here
529  Dtk_Handle *_Private; // Handle
530  enum { _typeID = DTK_TYPE_FACE };
531 
532  void _Init();
533  void _Reset();
534  void _Copy(const Dtk_Face &inTopo,Dtk_Body *inParentBody);
535  Dtk_ErrorStatus SetLoop(const Dtk_Size_t &inIndex, const Dtk_LoopPtr &inLoop);
536  void _Clone( Dtk_TopologicalEntityPtr &outTopo,Dtk_Body * _inParentBody);
537 
538  friend class Dtk_SmartPtr<Dtk_Face>;
539  friend class Dtk_TopologicalEntity;
540 
541  //constructors
543  Dtk_Face(const Dtk_Face &inTopo,Dtk_Body *inParentBody);
544 
545  virtual ~Dtk_Face();
546 public:
547  Dtk_ID GetTopoID() const;
548 
551 
553 
557  static Dtk_FacePtr Create(const Dtk_BodyPtr &inParentBody);
558 
559  //downcasting
560  int DtkDynamicType(const int& inId);
561  static Dtk_Face * DtkDynamicCast(Dtk_Object * inObject);
562 
565 
568 
573  Dtk_ErrorStatus GetParentShell(const Dtk_Size_t & inIndex,Dtk_ShellPtr &outParentShell) const;
574 
580  Dtk_ErrorStatus GetParentShell(const Dtk_Size_t & inIndex,Dtk_ShellPtr &outParentShell, Dtk_bool& outOrient) const;
581 
586  Dtk_ErrorStatus AddParentShell(const Dtk_ID &inParentShellId);
587 
590 
595  Dtk_ErrorStatus GetLoop(const Dtk_Size_t& inIndex,Dtk_LoopPtr &outLoop) const;
596  Dtk_ErrorStatus GetLoop(const Dtk_Size_t & inIndex,Dtk_ID &outLoopId) const;
600 
617  Dtk_ErrorStatus AddLoop(const Dtk_LoopPtr & inLoop,const Dtk_bool& inOuterInfo);
618 
619  enum type_detk get_type_detk() const;
620 
624  Dtk_SurfacePtr GetGeom( Dtk_bool inWithSetTrim = DTK_TRUE ) const;
628  void SetGeom(const Dtk_SurfacePtr& inSurface);
629 
631  Dtk_ErrorStatus GetTrimUVBox(Dtk_Double64 outTrimValues[]) const;
634 
638 
640  virtual Dtk_ErrorStatus _Store(void*);
641  virtual Dtk_Size_t GetSize() const;
642 
645  void RemoveParentShell( const Dtk_ID &inShellId );
646 };
647 
648 
649 
656 {
657 protected:
658  struct Dtk_Handle; // Not defined here
659  Dtk_Handle *_Private; // Handle
661 
662  void _Init();
663  void _Reset();
664  void _Copy(const Dtk_Volume& inToCopy,Dtk_Body *inParentBody);
665  Dtk_Volume(const Dtk_Volume& inEdgeTpCopy, Dtk_Body *inParentBody);
667  virtual ~Dtk_Volume();
668  Dtk_ErrorStatus GetParentBody(Dtk_Body* &outParentBody) const;
670  friend class Dtk_SmartPtr<Dtk_Volume>;
671  friend class Dtk_TopologicalEntity;
672  void _Clone( Dtk_TopologicalEntityPtr &outTopo,Dtk_Body * _inParentBody);
673 
674 public:
675  Dtk_ID GetTopoID() const;
676 
677 
681  static Dtk_VolumePtr Create(const Dtk_BodyPtr &inParentBody);
682 
683  //downcasting
684  int DtkDynamicType(const int& inId);
685  static Dtk_Volume * DtkDynamicCast(Dtk_Object * inObject);
686 
689 
698  Dtk_ErrorStatus SetParentLump(const Dtk_ID& inParentLumpId);
699 
703 
708  Dtk_ErrorStatus GetShell(const Dtk_Size_t& inIndex,Dtk_ShellPtr &outShell) const;
709  Dtk_ErrorStatus GetShell(const Dtk_Size_t& inIndex,Dtk_ID &outShellId) const;
710 
726  Dtk_ErrorStatus AddWireShell(const Dtk_ShellPtr &inShell);
727 
728  enum type_detk get_type_detk() const;
730  virtual Dtk_ErrorStatus _Store(void*);
731  virtual Dtk_Size_t GetSize() const;
732 };
733 
740 {
741 protected:
742  struct Dtk_Handle; // Not defined here
743  Dtk_Handle *_Private; // Handle
744  enum { _typeID = DTK_TYPE_LUMP };
745 
746  void _Init();
747  void _Reset();
748 
749  void _Copy(const Dtk_Lump& inLumpToCopy,Dtk_Body *inParentBody);
751  Dtk_Lump(const Dtk_Lump& inLumpToCopy,Dtk_Body *inParentBody);
752  virtual ~Dtk_Lump();
753  friend class Dtk_SmartPtr<Dtk_Lump>;
754  friend class Dtk_TopologicalEntity;
755  void _Clone( Dtk_TopologicalEntityPtr &outTopo,Dtk_Body * _inParentBody);
756 
757 public:
758  Dtk_ID GetTopoID() const;
759 
763  static Dtk_LumpPtr Create(const Dtk_BodyPtr &inParentBody);
764 
765  //downcasting
766  int DtkDynamicType(const int& inId);
767  static Dtk_Lump * DtkDynamicCast(Dtk_Object * inObject);
768 
771 
779  Dtk_ErrorStatus GetVolume(const Dtk_Size_t inIndex,Dtk_VolumePtr &outVolume) const;
780  Dtk_ErrorStatus GetVolume(const Dtk_Size_t inIndex,Dtk_ID &outVolumeId) const;
793 
794  enum type_detk get_type_detk() const;
796  virtual Dtk_ErrorStatus _Store(void*);
797  virtual Dtk_Size_t GetSize() const;
798 };
799 
805 class Dtk_Body:public Dtk_Entity
806 {
807 protected:
808  struct Dtk_Handle; // Not defined here
809  Dtk_Handle *_Private; // Handle
810  enum { _typeID = DTK_TYPE_BODY };
811  void _Init();
812  void _Reset();
813 
814  void _Copy(const Dtk_Body& inBodyToCopy);
815  Dtk_Body(const Dtk_Body& inBodyToCopy);
816  virtual ~Dtk_Body();
817  friend class Dtk_SmartPtr<Dtk_Body>;
818  inline virtual Dtk_Object* Clone() { return new Dtk_Body(*this); }
819 public:
821 
824  static Dtk_BodyPtr Create();
825 
826  //downcasting
827  int DtkDynamicType(const int& inId);
828  static Dtk_Body* DtkDynamicCast(Dtk_Object * inObject);
829 
830 
836  Dtk_ErrorStatus GetLump(const Dtk_Size_t& inIndex,Dtk_LumpPtr &outLump) const;
837  Dtk_ErrorStatus GetLump(const Dtk_Size_t& inIndex,Dtk_ID &outLumpId) const;
840  Dtk_ID AddPtr(const Dtk_TopologicalEntityPtr &outEntityPtr);
841 
848  SetAsDeprecated("2025.1", "Use Dtk_Body::AddOpenShell, Dtk_Volume::AddOuterShell or Dtk_Volume::AddInnerShell to get valid topology")
849  Dtk_ErrorStatus AddShell(const Dtk_ShellPtr &inShell, const Dtk_bool &inOuterInfo,const Dtk_bool &inClosedInfo);
850  //
854  Dtk_ErrorStatus AddOpenShell(const Dtk_ShellPtr &inShell);
855  Dtk_ErrorStatus AddOpenShell2(const Dtk_ShellPtr &inShell, Dtk_VolumePtr &volume);
856 
859  Dtk_Size_t GetNumOpenShells()const;
864  Dtk_ErrorStatus GetOpenShell(Dtk_Size_t inIndex,Dtk_ShellPtr &outShell)const;
865 
869  Dtk_ErrorStatus AddUnboundedFace(Dtk_SurfacePtr inSurface);
870 
874  Dtk_ErrorStatus AddWireShell(const Dtk_ShellPtr &inShell);
875 
877  enum type_detk get_type_detk() const;
878 
879  int GetWireCurves (Dtk_tab<Dtk_CurvePtr> &curves);
880  int GetWireEntities (Dtk_tab<Dtk_CurvePtr> &curves,Dtk_tab<Dtk_PointPtr>& points);
881 
882  Dtk_ErrorStatus ComputeBoundingBox(Dtk_pnt& outMin, Dtk_pnt& outMax);
883  Dtk_ErrorStatus Store(FILE* inFile,Dtk_Size_t inIo=1);
884  Dtk_ErrorStatus Store(const Dtk_string& inFile,Dtk_Size_t inIo=1);
886  virtual Dtk_Size_t GetSize() const;
887 
892  Dtk_ErrorStatus MergeVertices(Dtk_VertexPtr inVertexToKeep,Dtk_VertexPtr inVertexToRemove);
893 
895  Dtk_bool HasFaces();
896 
898  Dtk_bool HasWire();
899 
901  Dtk_bool HasPeriodicSurface();
902 
904  Dtk_bool HasMeshSurface();
905 
909  Dtk_ErrorStatus ToNurbs(Dtk_bool inRemoveTrimmedCurve = 0);
913  SetAsDeprecated("2022.1", "Use GetTolerance(Dtk_Double64 &outTolerance) method instead.")
915 
920 
924 
927  Dtk_Size_t GetNumTopologicalEntities(type_detk inType);
928 
933  Dtk_EntityPtr GetEntity(const Dtk_ID& inInfoId) const;
934 
938  Dtk_ErrorStatus GetEntities(const Dtk_ID& inInfoId, Dtk_tab<Dtk_EntityPtr> &outTab) const;
939 
940  Dtk_ErrorStatus Normalize(Dtk_bool updateEdgeGeometry = DTK_TRUE);
941  Dtk_ErrorStatus RevolToStandardRevol();
942  Dtk_ErrorStatus TorusWithNegativeMaxRadiusToRevol();
943  Dtk_ErrorStatus TrimUnlimitedFaces ();
944  Dtk_ErrorStatus GetVertexBound (Dtk_pnt& pmin, Dtk_pnt& pmax);
945  Dtk_ErrorStatus GetVertexGravity(Dtk_pnt& pcenter);
946  Dtk_bool LimitInfinitEntities( Dtk_Double64 lenFoundMin, Dtk_Double64 lenNew = 1.0);
947  Dtk_ErrorStatus ExtractEdgeBody(Dtk_BodyPtr &outEdgeBody);
948  void AddStream(Dtk_StreamPtr inStream);
949  Dtk_StreamPtr GetStream(Dtk_Size_t inStreamIndex) const;
950  Dtk_Size_t GetNumStream()const;
951 
952 };
953 
960 {
961 protected:
962  struct Dtk_Handle; // Not defined here
963  Dtk_Handle *_Private; // Handle
965 
966  void _Init();
967  void _Reset();
968  void _Clone(Dtk_TopologicalEntityPtr &outTopo, Dtk_Body * _inParentBody);
969 
970  void _Copy(const Dtk_Shell &inTopo, Dtk_Body *inParentBody);
971 
973  Dtk_Shell(const Dtk_Shell &inTopo, Dtk_Body *inParentBody);
974  virtual ~Dtk_Shell();
975  friend class Dtk_SmartPtr<Dtk_Shell>;
976  friend class Dtk_TopologicalEntity;
978 
979  Dtk_ErrorStatus SetFace(const Dtk_Size_t &inIndex, const Dtk_FacePtr &inFace, const Dtk_bool &inFaceOrientation);
980 
981 public:
982  Dtk_ID GetTopoID() const;
985 
987 
991  static Dtk_ShellPtr Create(const Dtk_BodyPtr &inParentBody);
997  static Dtk_ShellPtr Create(const Dtk_BodyPtr &inParentBody, Dtk_UInt32 inFacesReserve, Dtk_UInt32 inWireReserve = 0);
998 
999  //downcasting
1000  int DtkDynamicType(const int& inId);
1001  static Dtk_Shell * DtkDynamicCast(Dtk_Object * inObject);
1002 
1015  Dtk_ErrorStatus SetParentVolume(const Dtk_ID &inParentVolumeId);
1016 
1019 
1037 
1042 
1048 
1049 
1055  Dtk_ErrorStatus GetWireSetTopo(const Dtk_Size_t& inIndex, Dtk_tab<Dtk_EntityPtr>& outWire, Dtk_tab<Dtk_bool>& outOrientation, Dtk_bool &outLoopOrientation) const;
1057 
1064  Dtk_ErrorStatus GetFace(const Dtk_Size_t & inIndex, Dtk_FacePtr &outFace, Dtk_bool &outOrientation, DtkFaceType inFaceType = DtkFaceType_Bounded) const;
1065  Dtk_ErrorStatus GetFace(const Dtk_Size_t & inIndex, Dtk_ID &outFaceId, Dtk_bool &outOrientation, DtkFaceType inFaceType = DtkFaceType_Bounded) const;
1066 
1072  Dtk_ErrorStatus AddFace(const Dtk_FacePtr &inFace, Dtk_bool inFaceOrientation, DtkFaceType inFaceType = DtkFaceType_Bounded);
1073 
1079 
1085 
1088  Dtk_bool CheckIfClosed();
1089 
1090  enum type_detk get_type_detk() const;
1092  virtual Dtk_ErrorStatus _Store(void*);
1093  virtual Dtk_Size_t GetSize() const;
1094 };
1095 
1096 
1097 #endif
1098 
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:691
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:526
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:127
Dtk_Body::Clone
virtual Dtk_Object * Clone()
Definition: util_topology_dtk.hpp:818
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:622
Dtk_Vertex::_Private
Dtk_Handle * _Private
Definition: util_topology_dtk.hpp:66
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:729
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_Edge::SetAsDeprecated
SetAsDeprecated("2022.1", "Use GetTolerance(Dtk_Double64 &outTolerance) method instead.") Dtk_Double64 GetTolerance()
Get Tolerance.
Dtk_Volume::_Copy
void _Copy(const Dtk_Volume &inToCopy, Dtk_Body *inParentBody)
Dtk_Body::DtkDynamicType
int DtkDynamicType(const int &inId)
Dtk_Lump::_Init
void _Init()
Dtk_UInt32
uint32_t Dtk_UInt32
Definition: define.h:690
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:714
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:730
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:727
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:701
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:528
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:493
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:495
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:960
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:742
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:492
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:143
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_Vertex::SetAsDeprecated
SetAsDeprecated("2022.1", "Use GetTolerance(Dtk_Double64 &outTolerance) method instead.") Dtk_Double64 GetTolerance()
Get Tolerance.
Dtk_TopologicalEntity::Clone
virtual Dtk_Object * Clone()
Definition: util_topology_dtk.hpp:37
Dtk_Body::_Private
Dtk_Handle * _Private
Definition: util_topology_dtk.hpp:808
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:962
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:136
DTK_TYPE_TOPOLOGICAL_REPRESENTATION_ITEM
@ DTK_TYPE_TOPOLOGICAL_REPRESENTATION_ITEM
Definition: define.h:169
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:64
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:494
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
Return 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:130
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:68
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:740
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:656
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:155
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:806
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:658
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
Return 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_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:349