Itasca C++ Interface
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
igeomset.h
Go to the documentation of this file.
1 #pragma once
2 // igeomset.h
3 
5 #include "igeomimportexport.h"
11 namespace itasca {
12  class IThing;
13  class IContainer;
14 }
15 
16 namespace itascaxd {
17  using namespace itasca;
18 
19  class IGeomPoint;
20  class IGeomEdge;
21  class IGeomPoly;
22  class GeomBase;
23 
27  class IGeomSet {
28  public:
30  inline static const TType type_ = 0x4c815bd0;
31 
32  virtual const GeomBase *getGeomBase() const=0;
33 
35  virtual IThing * getIThing()=0;
37  virtual const IThing * getIThing() const=0;
39  virtual IGeomSet * getNext()=0;
41  virtual const IGeomSet *getNext() const=0;
42 
44  virtual QString getName() const=0;
47  virtual uint getGeometryCode() const=0;
49  virtual uint getGroupCode() const=0;
51  virtual uint getExtraCode() const=0;
52 
55  virtual IGeomPoint * createPoint(const DVect3 &pos,quint64 id=0)=0;
57  virtual IGeomPoint * getFirstPoint()=0;
59  virtual const IGeomPoint *getFirstPoint() const=0;
61  virtual IGeomPoint * findPointWithID(quint64 id)=0;
63  virtual const IGeomPoint *findPointWithID(quint64 id) const=0;
66  virtual IGeomPoint * findClosestPoint(const DVect &pos,const double &radius=limits<double>::max())=0;
68  virtual IContainer * getPointContainer()=0;
70  virtual const IContainer *getPointContainer() const=0;
71 
76  virtual IGeomEdge * createEdge(IGeomPoint *end1,IGeomPoint *end2)=0;
78  virtual IGeomEdge * getFirstEdge()=0;
80  virtual const IGeomEdge * getFirstEdge() const=0;
82  virtual IGeomEdge * findEdgeWithID(quint64 id)=0;
84  virtual const IGeomEdge * findEdgeWithID(quint64 id) const=0;
87  virtual IGeomEdge * findClosestEdge(const DVect &pos,const double &radius=limits<double>::max())=0;
90  virtual const IGeomEdge * findClosestEdge(const DVect &pos,const double &radius=limits<double>::max()) const=0;
92  virtual IGeomEdge * findMatchingEdge(const IGeomPoint *end1,const IGeomPoint *end2)=0;
94  virtual const IGeomEdge * findMatchingEdge(const IGeomPoint *end1,const IGeomPoint *end2) const=0;
96  virtual IContainer * getEdgeContainer()=0;
98  virtual const IContainer *getEdgeContainer() const=0;
99 
103  virtual IGeomPoly * createPoly()=0;
105  virtual IGeomPoly * getFirstPoly()=0;
107  virtual const IGeomPoly * getFirstPoly() const=0;
109  virtual IGeomPoly * findPolyWithID(quint64 id)=0;
111  virtual const IGeomPoly * findPolyWithID(quint64 id) const=0;
114  virtual IGeomPoly * findClosestPoly(const DVect &pos,const double &radius=limits<double>::max())=0;
117  virtual const IGeomPoly * findClosestPoly(const DVect &pos,const double &radius=limits<double>::max()) const=0;
122  virtual IGeomEdge * addNodeToPoly(IGeomPoly *poly,IGeomPoint *point)=0;
125  virtual IGeomEdge * closePoly(IGeomPoly *poly)=0;
127  virtual IContainer * getPolyContainer()=0;
129  virtual const IContainer *getPolyContainer() const=0;
131  virtual Signal2<const IThing *,const IContainer *> *getPointMovedSignal() const=0;
133  virtual Signal2<const IThing *,const IContainer *> *getEdgeMovedSignal() const=0;
135  virtual Signal2<const IThing *,const IContainer *> *getPolyMovedSignal() const=0;
136 
137  virtual QPair<DVect,bool> findClosestPointOnSet(const DVect &pos,bool polysOnly,double radius=limits<double>::max()) const=0;
138  virtual double findDistanceOnSetFromRay(const DVect &pos, const DVect &ray) const = 0;
139 
141  virtual QList<const IGeomPoly *> getEdgeConnectedMesh(const IGeomPoly *poly) const=0;
143  virtual QList<const IGeomEdge *> getVertexConnectedMesh(const IGeomEdge *edge) const=0;
145  virtual void exportData(IGeometryImportData *)=0;
146 #ifdef THREED
147  virtual bool checkClosedVolume()=0;
150 #endif
151  virtual QList<const IThing *> marqueeDeepSelect(bool perspective, const FArray<DVect>& nearSelRect,
160  const FArray<DVect>& farSelRect, const DVect& selectionDirection, TType objType)const=0;
162  virtual void listObjectAlongLine(const DVect &beg, const DVect &e,double radius, FArray<const IGeomPoint *> *retPoints,
163  FArray<QPair<const IGeomEdge *, DVect>> *retEdges,
164  FArray<QPair<const IGeomPoly *, DVect>> *intersectPolyPoints, const double tolerance)const =0;
168  virtual void listObjectAlongCone(const DVect &origin, const DVect &beginning,
169  const double &angle, FArray<const IGeomPoint *> *retPoints,
170  FArray<QPair<const IGeomEdge *, DVect>> *retEdges,
171  FArray<QPair<const IGeomPoly *, DVect>> *intersectPolyPoints, bool *nonPlanarPolyDetected,
172  double tolerance, const double *depth=0) const = 0;
177  virtual void listObjectAlongCylinder(const DVect &origin, const DVect &beginning, const double &radius,
178  FArray<const IGeomPoint *> *retPoints, FArray<QPair<const IGeomEdge *, DVect>> *retEdges,
179  FArray<QPair<const IGeomPoly *, DVect>> *intersectPolyPoints,
180  double tolerance, const double *depth=0) const = 0;
181  // returns true if at least a point is shared (no check for valid pointers)
182  virtual bool sharePoint(const IGeomEdge *edge1, const IGeomEdge *edge2, const IGeomPoint **shared=0) const = 0;
183 
184 
185  };
186 } // namespace itascaxd
187 // EoF
namespace Itasca
Definition: basememory.cpp:9
Definition of a Signal2 object, holding a list of ISlot2 objects.
Definition: isignalbase.h:76
Base class for items that will be stored in containers.
Definition: ithing.h:31
Definition: igeomimportexport.h:101
debug checked shorthand for std::numeric_limits<T>::
Definition: limit.h:25
A class representing a single closed polygon made up of a list of edges.
Definition: igeompoly.h:23
unsigned int TType
class type indicator
Definition: basedef.h:41
Interface for a user-defined geometric point.
Definition: igeompoint.h:18
A container for a single "set" of geometric elements. A geometric set is a named collection of geomet...
Definition: igeomset.h:27
Interface for a user-defined geometric edge, defined as the line between two IGeomPoint objects.
Definition: igeomedge.h:24
Itasca Library standard namespace, specific to 2D or 3D.
Definition: icontactmodule.h:4
EXPORT_TAG const char * getName()
Definition: fishexample.cpp:43
Interface for containers of IThings.
Definition: icontainer.h:23
DVect3 DVect
Vector of doubles, either 2D or 3D.
Definition: dim.h:145
Interface for geometric objects export-imports.
Definition of a Signal2 object, holding a list of ISlot2 objects.