Itasca C++ Interface
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
iextrudeedge.h
1 #pragma once
2 // iextrudeedge.h
3 
5 
6 namespace itasca {
7  class IThing;
8 }
9 namespace itascaxd {
10  class IGeomEdge;
11 }
12 
13 namespace extruder {
14  using namespace itasca;
15  using namespace itascaxd;
16 
17  class IExtrudePoint;
18  class IExtrudeRegion;
19 
21  enum EdgeType { edgeTypeSimple=0, edgeTypePoly, edgeTypeEllipse };
23  enum EdgePolyType { edgePolyTypeLinear=0, edgePolyTypeArc, edgePolyTypeSpline };
24 
27  class IExtrudeEdge {
28  public:
30  inline static const TType type_ = 0x4cb610e6;
31 
33  virtual const IThing * getIThing() const=0;
35  virtual IThing * getIThing()=0;
37  virtual const IGeomEdge * getIGeomEdge() const=0;
39  virtual IGeomEdge * getIGeomEdge()=0;
41  virtual bool isBlocked() const=0;
43  virtual bool isSimple() const=0;
45  virtual bool isPolyline() const=0;
47  virtual bool isCurved() const=0;
48 
50  virtual void setPointExtrude(IExtrudePoint *point,quint32 end)=0;
52  virtual IExtrudePoint * getIExtrudePoint(quint32 end)=0;
54  virtual const IExtrudePoint * getIExtrudePoint(quint32 end) const=0;
55 
57  virtual CLinkType<IExtrudeEdge> getNextExtrude(quint32 end) const=0;
59  virtual LinkType<IExtrudeEdge> getNextExtrude(quint32 end)=0;
61  virtual CLinkType<IExtrudeRegion> getStartExtrude() const=0;
63  virtual LinkType<IExtrudeRegion> getStartExtrude()=0;
64 
66  virtual quint32 getSize() const=0;
68  virtual double getRatio() const=0;
70  virtual bool getRatioIsolate() const=0;
72  virtual DVect getDiscretizedLocation(quint32 index,quint32 multiplier) const=0;
74  virtual DVect getParametricLocation(const double &frac0) const=0;
76  virtual QList<quint64> getConnectedEdges() const=0;
77 
79  virtual quint32 setSize(quint32 s)=0;
81  virtual quint32 setRatio(const double &r)=0;
83  virtual void setRatioIsolate(bool b)=0;
84 
86  virtual int getEdgeBlockCount() const=0; // 0-2 blocks connected to an edge
88  virtual DVect computeBlockSplitPoint(double mu, int index) const=0; // position for split on opposite edge of indexed block
89 
91  virtual quint32 getEdgeType() const=0;
93  virtual quint32 getHybridType() const=0;
95  virtual const IExtrudePoint* getEllipseArcCenter() const=0;
97  virtual const IExtrudePoint* getEllipseArcWith() const=0;
98 
100  virtual double getEdgePolylineLength() const=0;
102  virtual double computeEdgePolylineCurveLength() const=0;
103 
105  virtual quint32 getEdgePolylineType() const=0;
107  virtual quint32 getEdgePolylineSize() const=0;
109  virtual DVect getEdgePolylineControlPoint(int id) const=0;
110 
112  virtual double getEdgePolylineControlU(int id) const=0;
114  virtual double getEdgePolylineControlV(int id) const=0;
116  virtual void setEdgePolylineControlPoint(int index, DVect p)=0;
118  virtual void setEdgePolylineControlLocal(int index, double u, double v)=0;
120  virtual void setEdgePolylineControlLocalU(int index, double u)=0;
122  virtual void setEdgePolylineControlLocalV(int index, double v)=0;
123 
125  virtual void addEdgePolylineControlPoint(DVect p)=0;
127  virtual void addEdgePolylineControlLocal(double u, double v)=0;
129  virtual void removeEdgePolylineControlPoint(int id)=0;
130 
132  virtual double findParameterForPosition(DVect pos) const=0;
133 
135  virtual void setEdgeTypeSimple()=0;
137  virtual void setEdgeType(int edgeType)=0;
139  virtual void setEdgePolylineType(int curvetype=edgePolyTypeLinear)=0;
140 
142  virtual IExtrudeRegion* getOtherBlock(IExtrudeRegion* b)=0;
143 
144  // Check if the edge is connected to an irregular block
145  virtual bool belongsToIrregBlock() const=0;
146  };
147 
148 } // namespace f3
149 // EoF
namespace Itasca
Definition: basememory.cpp:9
Base class for items that will be stored in containers.
Definition: ithing.h:31
Interface for LinkType<> objects, POD that contain both the pointer to the next object and an index f...
Interface for IExtrudeEdge objects.
Definition: iextrudeedge.h:27
unsigned int TType
class type indicator
Definition: basedef.h:41
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
Interface for IExtrudePoint objects.
Definition: iextrudepoint.h:20
Interface for IExtrudeEdge objects.
Definition: iextruderegion.h:21
DVect3 DVect
Vector of doubles, either 2D or 3D.
Definition: dim.h:145