Skip to content

Commit

Permalink
WIP7
Browse files Browse the repository at this point in the history
  • Loading branch information
HuguesDelorme committed Jun 7, 2024
1 parent 8ff38c9 commit 4c702b7
Show file tree
Hide file tree
Showing 2 changed files with 137 additions and 68 deletions.
149 changes: 113 additions & 36 deletions src/qtscripting/script_geom_surface.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,14 +63,15 @@ QVariant ScriptGeomSurface::torus() const

QVariant ScriptGeomSurface::bezier() const
{
return QVariant::fromValue(ScriptGeomBezierSurface(m_surface));
return QVariant::fromValue(ScriptGeomBezierSurface(m_surface.Bezier()));
}

QVariant ScriptGeomSurface::bspline() const
{
return QVariant::fromValue(ScriptGeomBSplineSurface(m_surface));
return QVariant::fromValue(ScriptGeomBSplineSurface(m_surface.BSpline()));
}


ScriptGeomCylinder::ScriptGeomCylinder(const gp_Cylinder& cyl)
: m_cyl(cyl)
{
Expand All @@ -81,6 +82,7 @@ QVariant ScriptGeomCylinder::position() const
return ScriptGeom::toScriptValue(m_cyl.Position());
}


ScriptGeomPlane::ScriptGeomPlane(const gp_Pln& pln)
: m_pln(pln)
{
Expand All @@ -91,6 +93,7 @@ QVariant ScriptGeomPlane::position() const
return ScriptGeom::toScriptValue(m_pln.Position());
}


ScriptGeomCone::ScriptGeomCone(const gp_Cone& cone)
: m_cone(cone)
{
Expand All @@ -106,6 +109,7 @@ QVariant ScriptGeomCone::apex() const
return ScriptGeom::toScriptValue(m_cone.Apex());
}


ScriptGeomSphere::ScriptGeomSphere(const gp_Sphere& sphere)
: m_sphere(sphere)
{
Expand All @@ -116,6 +120,7 @@ QVariant ScriptGeomSphere::position() const
return ScriptGeom::toScriptValue(m_sphere.Position());
}


ScriptGeomTorus::ScriptGeomTorus(const gp_Torus& torus)
: m_torus(torus)
{
Expand All @@ -126,105 +131,177 @@ QVariant ScriptGeomTorus::position() const
return ScriptGeom::toScriptValue(m_torus.Position());
}

ScriptGeomGeneralSplineSurface::ScriptGeomGeneralSplineSurface(const BRepAdaptor_Surface& surface)
: m_surface(surface.ShallowCopy())

ScriptGeomGeneralSplineSurface::ScriptGeomGeneralSplineSurface(const OccHandle<Geom_BezierSurface>& bezier)
: m_bezier(bezier)
{
this->throwIfNullSupportSurface();
}

ScriptGeomGeneralSplineSurface::ScriptGeomGeneralSplineSurface(const OccHandle<Geom_BSplineSurface>& bspline)
: m_bspline(bspline)
{
this->throwIfNullSupportSurface();
}

int ScriptGeomGeneralSplineSurface::uDegree() const
{
if (m_bezier)
return m_bezier->UDegree();
else if (m_bspline)
return m_bspline->UDegree();

return 0;
}

int ScriptGeomGeneralSplineSurface::vDegree() const
{
if (m_bezier)
return m_bezier->VDegree();
else if (m_bspline)
return m_bspline->VDegree();

return 0;
}

int ScriptGeomGeneralSplineSurface::uPoleCount() const
{
if (m_bezier)
return m_bezier->NbUPoles();
else if (m_bspline)
return m_bspline->NbUPoles();

return 0;
}

ScriptGeomBezierSurface::ScriptGeomBezierSurface(const BRepAdaptor_Surface& surface)
: ScriptGeomGeneralSplineSurface(surface),
m_bezier(surface.Bezier())
int ScriptGeomGeneralSplineSurface::vPoleCount() const
{
if (!m_bezier)
throw std::runtime_error("GeomSurface is not of type Bezier");
if (m_bezier)
return m_bezier->NbVPoles();
else if (m_bspline)
return m_bspline->NbVPoles();

return 0;
}

QVariant ScriptGeomBezierSurface::pole(int uIndex, int vIndex) const
bool ScriptGeomGeneralSplineSurface::isURational() const
{
return ScriptGeom::toScriptValue(m_bezier->Pole(uIndex, vIndex));
if (m_bezier)
return m_bezier->IsURational();
else if (m_bspline)
return m_bspline->IsURational();

return false;
}

double ScriptGeomBezierSurface::weight(int uIndex, int vIndex) const
bool ScriptGeomGeneralSplineSurface::isVRational() const
{
return m_bezier->Weight(uIndex, vIndex);
if (m_bezier)
return m_bezier->IsVRational();
else if (m_bspline)
return m_bspline->IsVRational();

return false;
}

ScriptGeomBSplineSurface::ScriptGeomBSplineSurface(const BRepAdaptor_Surface& surface)
: ScriptGeomGeneralSplineSurface(surface),
m_bspline(surface.BSpline())
QVariant ScriptGeomGeneralSplineSurface::pole(int uIndex, int vIndex) const
{
if (!m_bspline)
throw std::runtime_error("GeomSurface is not of type BSpline");
this->throwIfNullSupportSurface();
if (m_bezier)
return ScriptGeom::toScriptValue(m_bezier->Pole(uIndex, vIndex));
else if (m_bspline)
return ScriptGeom::toScriptValue(m_bspline->Pole(uIndex, vIndex));

return QVariant();
}

QVariant ScriptGeomBSplineSurface::pole(int uIndex, int vIndex) const
double ScriptGeomGeneralSplineSurface::weight(int uIndex, int vIndex) const
{
return ScriptGeom::toScriptValue(m_bspline->Pole(uIndex, vIndex));
this->throwIfNullSupportSurface();
if (m_bezier)
return m_bezier->Weight(uIndex, vIndex);
else if (m_bspline)
return m_bspline->Weight(uIndex, vIndex);

return 0.;
}

double ScriptGeomBSplineSurface::weight(int uIndex, int vIndex) const
void ScriptGeomGeneralSplineSurface::throwIfNullSupportSurface() const
{
if (!m_bezier && !m_bspline)
throw std::runtime_error("Geom_BezierSurface and Geom_BSplineSurface pointers are null");
}


ScriptGeomBezierSurface::ScriptGeomBezierSurface(const OccHandle<Geom_BezierSurface>& bezier)
: ScriptGeomGeneralSplineSurface(bezier)
{
}


ScriptGeomBSplineSurface::ScriptGeomBSplineSurface(const OccHandle<Geom_BSplineSurface>& bspline)
: ScriptGeomGeneralSplineSurface(bspline)
{
return m_bspline->Weight(uIndex, vIndex);
}

double ScriptGeomBSplineSurface::uKnot(int uIndex) const
{
return m_bspline->UKnot(uIndex);
return this->bspline()->UKnot(uIndex);
}

double ScriptGeomBSplineSurface::vKnot(int vIndex) const
{
return m_bspline->VKnot(vIndex);
return this->bspline()->VKnot(vIndex);
}

int ScriptGeomBSplineSurface::uMultiplicity(int uIndex) const
{
return m_bspline->UMultiplicity(uIndex);
return this->bspline()->UMultiplicity(uIndex);
}

int ScriptGeomBSplineSurface::vMultiplicity(int vIndex) const
{
return m_bspline->UMultiplicity(vIndex);
return this->bspline()->UMultiplicity(vIndex);
}

int ScriptGeomBSplineSurface::uKnotIndexFirst() const
{
return m_bspline->FirstUKnotIndex();
return this->bspline()->FirstUKnotIndex();
}

int ScriptGeomBSplineSurface::uKnotIndexLast() const
{
return m_bspline->LastUKnotIndex();
return this->bspline()->LastUKnotIndex();
}

int ScriptGeomBSplineSurface::vKnotIndexFirst() const
{
return m_bspline->FirstVKnotIndex();
return this->bspline()->FirstVKnotIndex();
}

int ScriptGeomBSplineSurface::vKnotIndexLast() const
{
return m_bspline->LastVKnotIndex();
return this->bspline()->LastVKnotIndex();
}

int ScriptGeomBSplineSurface::uKnotCount() const
{
return m_bspline->NbUKnots();
return this->bspline()->NbUKnots();
}

int ScriptGeomBSplineSurface::vKnotCount() const
{
return m_bspline->NbVKnots();
return this->bspline()->NbVKnots();
}

unsigned ScriptGeomBSplineSurface::uKnotDistribution() const
unsigned int ScriptGeomBSplineSurface::uKnotDistribution() const
{
return m_bspline->UKnotDistribution();
return this->bspline()->UKnotDistribution();
}

unsigned ScriptGeomBSplineSurface::vKnotDistribution() const
unsigned int ScriptGeomBSplineSurface::vKnotDistribution() const
{
return m_bspline->VKnotDistribution();
return this->bspline()->VKnotDistribution();
}

} // namespace Mayo
Loading

0 comments on commit 4c702b7

Please sign in to comment.