Itasca C++ Interface
iextrudepath.h
Go to the documentation of this file.
1 #pragma once
2 
9 #include "utility/interface/igroup.h"
10 #include "base/src/farray.h"
11 
12 namespace itasca {
13  class IGroup;
14  class IThing;
15 }
16 namespace itascaxd {
17  class IGeomPoint;
18  class IRange;
19 }
20 
21 namespace extruder {
22  using namespace itascaxd;
23 
24  class IExtrudePoint;
25  class IExtrudeEdge;
26  class IExtrudeRegion;
27 
28 
29 
32  class IExtrudePath {
33  public:
34  enum ExtrudeMode { eParallel = 0, ePerpendicular, eAdjusted, eTest};
36  inline static const TType type_ = 0x4cb61c36;
37 #ifdef THREED
38 
39  shared::Signal<uint64> pointAdded;
40  shared::Signal<uint64> pointRemoved;
41  shared::Signal<uint64> edgeAdded;
42  shared::Signal<uint64> edgeRemoved;
43  shared::Signal<uint64> pointMoved;
44  shared::Signal<uint64> edgeMoved;
45  shared::Signal<uint64> edgePointChanged;
46  shared::Signal<uint64> edgeTypeChanged;
47  shared::Signal<uint64, uint32> edgeControlPointAdded;// eid, index
48  shared::Signal<uint64, uint32> edgeSizeChanged;
49  shared::Signal<uint64, double> edgeRatioChanged; // id, ratio
50  shared::Signal<int32> metaAdded;
51  shared::Signal<int32> metaRemoved;
52  shared::Signal<int32> metaChanged;
54  virtual IThing * getIThing()=0;
56  virtual const IThing * getIThing() const=0;
57 
59  virtual IString getName() const=0;
60 
62  virtual IExtrudePoint * createPoint(const DVect &pos)=0;
64  virtual IExtrudeEdge * createEdge(IExtrudePoint *end1,IExtrudePoint *end2,bool useDefaultSize, QString* str)=0;
66  //virtual IExtrudeRegion * createBlock()=0;
67 
69  virtual IContainer * getPointContainer()=0;
71  virtual const IContainer * getPointContainer() const=0;
73  virtual const IExtrudePoint *findPointWithID(uint64 id) const=0;
75  virtual IExtrudePoint * findPointWithID(uint64 id)=0;
77  virtual const IGeomPoint * findClosestPoint(const DVect &pos,const double &radius=limits<double>::max()) const=0;
79  virtual IGeomPoint * findClosestPoint(const DVect &pos,const double &radius=limits<double>::max())=0;
80 
82  virtual IContainer * getEdgeContainer()=0;
84  virtual const IContainer * getEdgeContainer() const=0;
86  virtual const IExtrudeEdge * findEdgeWithID(uint64 id) const=0;
88  virtual IExtrudeEdge * findEdgeWithID(uint64 id)=0;
90  virtual const IExtrudeEdge * findClosestEdge(const DVect &pos,const double &radius=limits<double>::max()) const=0;
92  virtual IExtrudeEdge * findClosestEdge(const DVect &pos,const double &radius=limits<double>::max())=0;
94  virtual const IExtrudeEdge * findMatchingEdge(const IGeomPoint *end1,const IGeomPoint *end2) const=0;
96  virtual IExtrudeEdge * findMatchingEdge(const IGeomPoint *end1,const IGeomPoint *end2)=0;
98  virtual void deletePoint(uint64 pid, uint32* edgeCount = 0) = 0;
100  virtual void deleteEdge(uint64 edgeid) = 0;
102  virtual int getPointSize() const =0;
104  virtual int getEdgeSize() const =0;
106  virtual bool valid(QList<QString> *problems = nullptr) const=0;
108  virtual bool isValidParameter(QList<QString>* problems = nullptr) const = 0;
110  virtual bool isValidGeometry(QList<QString>* problems = nullptr) const = 0;
112  virtual bool isContinued() const=0;
114  virtual bool isClosed() const=0;
116  virtual const IExtrudePoint* getFirstEnd() const=0;
118  virtual const IExtrudePoint* getLastEnd() const=0;
120  virtual DVect getPathTangent(uint64 id, double mu, DVect vProj) const = 0;
122  virtual DVect getPathTangent(const IExtrudeEdge* seg, double mu, DVect vProj) const = 0;
124  virtual DVect getPathTangentAtNode(uint64 id, DVect vProj) const = 0;
126  virtual DVect getPathTangentAtNode(const IExtrudePoint* p, DVect vProj) const = 0;
128  virtual void getSegmentLocalAxes(uint64 id, double mu, Axes* axe) const = 0;
130  virtual void getSegmentLocalAxes(const IExtrudeEdge* seg, double mu, Axes* axe) const = 0;
133  virtual DVect getSweepPosition(uint64 id, double mu, const DVect& pos, const uint32& currentView = 0) const=0;
135  virtual bool setOrigin(const DVect& pos) =0;
137  virtual const DVect& getOrigin() const =0;
139  virtual uint32 getPointGroupNotice() const=0;
141  virtual uint32 getEdgeGroupNotice() const=0;
142 
144  virtual uint32 getSegmentGroupNotice() const=0;
146  virtual uint32 getSegmentNodeGroupNotice() const=0;
147 
150  virtual void clearMetaData()=0;
152  virtual void setMetaKeyValue(const QString &key, const QString &value)=0;
154  virtual int getMetaCount() const=0;
156  virtual QString getMetaKey(int index) const=0;
158  virtual QString getMetaValue(int index) const=0;
160  virtual int findMetaKeyIndex(const QString &key) const=0;
162  virtual QString findMetaKeyValue(const QString &key) const=0;
163 #endif // THREED
164 
165  };
166 } // namespace f3i
167 // EoF
Class for specifying a particular 3D cartesian axes system, and converting to and from it.
Definition: axes.h:121
Definition: istring.h:14
Definition: idef.h:50
Interface for IExtrudeEdge objects.
Definition: iextrudeedge.h:27
Provides interface to IExtrudePath. Contains containers for points, edges and blocks objects.
Definition: iextrudepath.h:32
Interface for IExtrudePoint objects.
Definition: iextrudepoint.h:20
Interface for containers of IThings.
Definition: icontainer.h:21
Base class for items that will be stored in containers.
Definition: ithing.h:30
Interface for a user-defined geometric point.
Definition: igeompoint.h:18
debug checked shorthand for std::numeric_limits<T>::
Definition: limit.h:25
An array class that attempts to minimize unnecessary heap access.
uint32 TType
class type indicator
Definition: basedef.h:46
EXPORT_TAG const char * getName()
Definition: fishexample.cpp:43
DVect3 DVect
Vector of doubles, either 2D or 3D.
Definition: dim.h:150
Interface for container of IThings.
namespace Itasca
Definition: basememory.cpp:10
Itasca Library standard namespace, specific to 2D or 3D.
Definition: icontactmodule.h:4