| |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| #ifndef FEATUREGEOMFILLSURFACE_H |
| #define FEATUREGEOMFILLSURFACE_H |
|
|
| #include <App/PropertyLinks.h> |
| #include <Mod/Part/App/FeaturePartSpline.h> |
| #include <Mod/Surface/SurfaceGlobal.h> |
|
|
| #include <GeomFill_FillingStyle.hxx> |
| #include <Geom_BoundedSurface.hxx> |
| #include <ShapeExtend_WireData.hxx> |
|
|
|
|
| namespace Surface |
| { |
|
|
| class SurfaceExport ShapeValidator |
| { |
| protected: |
| bool willBezier; |
| int edgeCount; |
|
|
| public: |
| ShapeValidator(); |
| void initValidator(); |
| void checkEdge(const TopoDS_Shape& shape); |
| void checkAndAdd(const TopoDS_Shape& shape, Handle(ShapeExtend_WireData) * aWD = nullptr); |
| void checkAndAdd( |
| const Part::TopoShape& ts, |
| const char* subName, |
| Handle(ShapeExtend_WireData) * aWire = nullptr |
| ); |
|
|
| bool isBezier() const |
| { |
| return willBezier; |
| } |
| int numEdges() const |
| { |
| return edgeCount; |
| } |
| }; |
|
|
| class SurfaceExport GeomFillSurface: public Part::Spline |
| { |
| PROPERTY_HEADER_WITH_OVERRIDE(Surface::GeomFillSurface); |
|
|
| public: |
| GeomFillSurface(); |
| App::PropertyLinkSubList BoundaryList; |
| App::PropertyBoolList ReversedList; |
| App::PropertyEnumeration FillType; |
|
|
| short mustExecute() const override; |
| void onChanged(const App::Property*) override; |
| App::DocumentObjectExecReturn* execute() override; |
|
|
| |
| const char* getViewProviderName() const override |
| { |
| return "SurfaceGui::ViewProviderGeomFillSurface"; |
| } |
|
|
| protected: |
| GeomFill_FillingStyle getFillingStyle(); |
| |
| bool getWire(TopoDS_Wire& aWire); |
| void createFace(const Handle(Geom_BoundedSurface) & aSurface); |
| void createBezierSurface(TopoDS_Wire& aWire); |
| void createBSplineSurface(TopoDS_Wire& aWire); |
|
|
| private: |
| static const char* FillTypeEnums[]; |
| }; |
|
|
| } |
|
|
| #endif |
|
|