fix crash in uIso of Sphere

This commit is contained in:
wmayer 2017-02-19 20:36:40 +01:00
parent c1c4a90411
commit 448ac27e56
2 changed files with 12 additions and 30 deletions

View File

@ -279,6 +279,11 @@ PyObject* GeometrySurfacePy::uIso(PyObject * args)
Handle_Geom_Surface surf = Handle_Geom_Surface::DownCast
(getGeometryPtr()->handle());
Handle_Geom_Curve c = surf->UIso(v);
if (c.IsNull()) {
PyErr_SetString(PyExc_RuntimeError, "failed to create u iso curve");
return 0;
}
if (c->IsKind(STANDARD_TYPE(Geom_Line))) {
Handle_Geom_Line aLine = Handle_Geom_Line::DownCast(c);
GeomLine* line = new GeomLine();
@ -308,6 +313,11 @@ PyObject* GeometrySurfacePy::vIso(PyObject * args)
Handle_Geom_Surface surf = Handle_Geom_Surface::DownCast
(getGeometryPtr()->handle());
Handle_Geom_Curve c = surf->VIso(v);
if (c.IsNull()) {
PyErr_SetString(PyExc_RuntimeError, "failed to create v iso curve");
return 0;
}
if (c->IsKind(STANDARD_TYPE(Geom_Line))) {
Handle_Geom_Line aLine = Handle_Geom_Line::DownCast(c);
GeomLine* line = new GeomLine();

View File

@ -183,40 +183,12 @@ void SpherePy::setAxis(Py::Object arg)
PyObject *SpherePy::uIso(PyObject *args)
{
double v;
if (!PyArg_ParseTuple(args, "d", &v))
return 0;
try {
Handle_Geom_SphericalSurface sphere = Handle_Geom_SphericalSurface::DownCast
(getGeomSpherePtr()->handle());
Handle_Geom_Curve c = sphere->UIso(v);
return new CirclePy(new GeomCircle(Handle_Geom_Circle::DownCast(c)));
}
catch (Standard_Failure) {
Handle_Standard_Failure e = Standard_Failure::Caught();
PyErr_SetString(PartExceptionOCCError, e->GetMessageString());
return 0;
}
return GeometrySurfacePy::uIso(args);
}
PyObject *SpherePy::vIso(PyObject *args)
{
double v;
if (!PyArg_ParseTuple(args, "d", &v))
return 0;
try {
Handle_Geom_SphericalSurface sphere = Handle_Geom_SphericalSurface::DownCast
(getGeomSpherePtr()->handle());
Handle_Geom_Curve c = sphere->VIso(v);
return new CirclePy(new GeomCircle(Handle_Geom_Circle::DownCast(c)));
}
catch (Standard_Failure) {
Handle_Standard_Failure e = Standard_Failure::Caught();
PyErr_SetString(PartExceptionOCCError, e->GetMessageString());
return 0;
}
return GeometrySurfacePy::vIso(args);
}
PyObject *SpherePy::getCustomAttributes(const char* /*attr*/) const