Itasca C++ Interface
Loading...
Searching...
No Matches
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
12namespace itasca {
13 class IGroup;
14 class IThing;
15}
16namespace itascaxd {
17 class IGeomPoint;
18 class IRange;
19}
20
21namespace extruder {
22 using namespace itascaxd;
23
24 class IExtrudePoint;
25 class IExtrudeEdge;
26 class IExtrudeRegion;
27
28
29
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
static const TType type_
The type identification number for this class, for use in convert_cast() and convert_getcast().
Definition iextrudepath.h:36
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:154
Interface for container of IThings.
namespace Itasca
Definition basememory.cpp:10
Itasca Library standard namespace, specific to 2D or 3D.
Definition icontactmodule.h:4