implement OffsetCurve2d

This commit is contained in:
wmayer
2016-11-25 23:45:14 +01:00
parent c817c3334e
commit de8bfaafc3
5 changed files with 124 additions and 91 deletions

View File

@@ -68,7 +68,18 @@
#include <Base/Tools.h>
#include "Geometry2d.h"
#include <Mod/Part/App/Geom2d/Circle2dPy.h>
#include <Mod/Part/App/Geom2d/Ellipse2dPy.h>
#include <Mod/Part/App/Geom2d/Hyperbola2dPy.h>
#include <Mod/Part/App/Geom2d/Parabola2dPy.h>
#include <Mod/Part/App/Geom2d/ArcOfCircle2dPy.h>
#include <Mod/Part/App/Geom2d/ArcOfEllipse2dPy.h>
#include <Mod/Part/App/Geom2d/ArcOfHyperbola2dPy.h>
#include <Mod/Part/App/Geom2d/ArcOfParabola2dPy.h>
#include <Mod/Part/App/Geom2d/BezierCurve2dPy.h>
#include <Mod/Part/App/Geom2d/BSplineCurve2dPy.h>
#include <Mod/Part/App/Geom2d/Line2dSegmentPy.h>
#include <Mod/Part/App/Geom2d/OffsetCurve2dPy.h>
using namespace Part;
@@ -373,8 +384,7 @@ void Geom2dBezierCurve::Restore(Base::XMLReader &/*reader*/)
PyObject *Geom2dBezierCurve::getPyObject(void)
{
return 0;
//return new BezierCurvePy((GeomBezierCurve*)this->clone());
return new BezierCurve2dPy(static_cast<Geom2dBezierCurve*>(this->clone()));
}
// -------------------------------------------------
@@ -572,8 +582,7 @@ void Geom2dBSplineCurve::Restore(Base::XMLReader &/*reader*/)
PyObject *Geom2dBSplineCurve::getPyObject(void)
{
return 0;
//return new BSplineCurvePy((GeomBSplineCurve*)this->clone());
return new BSplineCurve2dPy(static_cast<Geom2dBSplineCurve*>(this->clone()));
}
// -------------------------------------------------
@@ -892,8 +901,7 @@ void Geom2dCircle::Restore(Base::XMLReader& reader)
PyObject *Geom2dCircle::getPyObject(void)
{
//return new CirclePy((GeomCircle*)this->clone());
return 0;
return new Circle2dPy(static_cast<Geom2dCircle*>(this->clone()));
}
// -------------------------------------------------
@@ -1018,8 +1026,7 @@ void Geom2dArcOfCircle::Restore(Base::XMLReader &reader)
PyObject *Geom2dArcOfCircle::getPyObject(void)
{
return 0;
//return new ArcOfCirclePy(static_cast<GeomArcOfCircle*>(this->clone()));
return new ArcOfCircle2dPy(static_cast<Geom2dArcOfCircle*>(this->clone()));
}
// -------------------------------------------------
@@ -1178,8 +1185,7 @@ void Geom2dEllipse::Restore(Base::XMLReader& reader)
PyObject *Geom2dEllipse::getPyObject(void)
{
return 0;
//return new EllipsePy((GeomEllipse*)this->clone());
return new Ellipse2dPy(static_cast<Geom2dEllipse*>(this->clone()));
}
void Geom2dEllipse::setHandle(const Handle_Geom2d_Ellipse &e)
@@ -1369,8 +1375,7 @@ void Geom2dArcOfEllipse::Restore(Base::XMLReader &reader)
PyObject *Geom2dArcOfEllipse::getPyObject(void)
{
return 0;
//return new ArcOfEllipsePy(static_cast<GeomArcOfEllipse*>(this->clone()));
return new ArcOfEllipse2dPy(static_cast<Geom2dArcOfEllipse*>(this->clone()));
}
// -------------------------------------------------
@@ -1493,8 +1498,7 @@ void Geom2dHyperbola::Restore(Base::XMLReader& reader)
PyObject *Geom2dHyperbola::getPyObject(void)
{
return 0;
//return new HyperbolaPy((GeomHyperbola*)this->clone());
return new Hyperbola2dPy(static_cast<Geom2dHyperbola*>(this->clone()));
}
// -------------------------------------------------
@@ -1639,8 +1643,7 @@ void Geom2dArcOfHyperbola::Restore(Base::XMLReader &reader)
PyObject *Geom2dArcOfHyperbola::getPyObject(void)
{
return 0;
//return new ArcOfHyperbolaPy(static_cast<GeomArcOfHyperbola*>(this->clone()));
return new ArcOfHyperbola2dPy(static_cast<Geom2dArcOfHyperbola*>(this->clone()));
}
// -------------------------------------------------
@@ -1867,8 +1870,7 @@ void Geom2dArcOfParabola::Restore(Base::XMLReader &reader)
PyObject *Geom2dArcOfParabola::getPyObject(void)
{
return 0;
//return new ArcOfParabolaPy(static_cast<GeomArcOfParabola*>(this->clone()));
return new ArcOfParabola2dPy(static_cast<Geom2dArcOfParabola*>(this->clone()));
}
// -------------------------------------------------
@@ -2115,8 +2117,7 @@ void Geom2dLineSegment::Restore(Base::XMLReader &reader)
PyObject *Geom2dLineSegment::getPyObject(void)
{
return 0;
//return new LinePy((GeomLineSegment*)this->clone());
return new Line2dSegmentPy(static_cast<Geom2dLineSegment*>(this->clone()));
}
// -------------------------------------------------
@@ -2174,8 +2175,7 @@ void Geom2dOffsetCurve::Restore(Base::XMLReader &/*reader*/)
PyObject *Geom2dOffsetCurve::getPyObject(void)
{
//return new OffsetCurvePy((GeomOffsetCurve*)this->clone());
return 0;
return new OffsetCurve2dPy(static_cast<Geom2dOffsetCurve*>(this->clone()));
}
// -------------------------------------------------
@@ -2228,5 +2228,45 @@ void Geom2dTrimmedCurve::Restore(Base::XMLReader &/*reader*/)
PyObject *Geom2dTrimmedCurve::getPyObject(void)
{
Handle_Geom2d_Curve basis = this->myCurve->BasisCurve();
if (basis.IsNull())
Py_Return;
if (basis->IsKind(STANDARD_TYPE (Geom2d_Parabola))) {
Geom2dArcOfParabola c;
c.setHandle(this->myCurve);
return c.getPyObject();
}
if (basis->IsKind(STANDARD_TYPE (Geom2d_Hyperbola))) {
Geom2dArcOfHyperbola c;
c.setHandle(this->myCurve);
return c.getPyObject();
}
if (basis->IsKind(STANDARD_TYPE (Geom2d_Ellipse))) {
Geom2dArcOfEllipse c;
c.setHandle(this->myCurve);
return c.getPyObject();
}
if (basis->IsKind(STANDARD_TYPE (Geom2d_Circle))) {
Geom2dArcOfCircle c;
c.setHandle(this->myCurve);
return c.getPyObject();
}
if (basis->IsKind(STANDARD_TYPE (Geom2d_Line))) {
Geom2dLineSegment c;
c.setHandle(this->myCurve);
return c.getPyObject();
}
if (basis->IsKind(STANDARD_TYPE (Geom2d_BSplineCurve))) {
Geom2dBSplineCurve c;
c.setHandle(Handle_Geom2d_BSplineCurve::DownCast(basis));
return c.getPyObject();
}
if (basis->IsKind(STANDARD_TYPE (Geom2d_BezierCurve))) {
Geom2dBezierCurve c;
c.setHandle(Handle_Geom2d_BezierCurve::DownCast(basis));
return c.getPyObject();
}
PyErr_SetString(PyExc_RuntimeError, "Unknown curve type");
return 0;
}