Path.Area: clean up python binding error handling
This commit is contained in:
parent
2acc29de8f
commit
736cd39851
|
@ -124,7 +124,7 @@ int AreaPy::PyInit(PyObject* args, PyObject* kwd)
|
||||||
PyObject* AreaPy::setPlane(PyObject *args) {
|
PyObject* AreaPy::setPlane(PyObject *args) {
|
||||||
PyObject *pcObj;
|
PyObject *pcObj;
|
||||||
if (!PyArg_ParseTuple(args, "O!", &(Part::TopoShapePy::Type), &pcObj))
|
if (!PyArg_ParseTuple(args, "O!", &(Part::TopoShapePy::Type), &pcObj))
|
||||||
Py_Error(Base::BaseExceptionFreeCADError, "Wrong parameters");
|
return 0;
|
||||||
|
|
||||||
#define GET_TOPOSHAPE(_p) static_cast<Part::TopoShapePy*>(_p)->getTopoShapePtr()->getShape()
|
#define GET_TOPOSHAPE(_p) static_cast<Part::TopoShapePy*>(_p)->getTopoShapePtr()->getShape()
|
||||||
getAreaPtr()->setPlane(GET_TOPOSHAPE(pcObj));
|
getAreaPtr()->setPlane(GET_TOPOSHAPE(pcObj));
|
||||||
|
@ -137,7 +137,7 @@ PyObject* AreaPy::getShape(PyObject *args, PyObject *keywds)
|
||||||
short index=-1;
|
short index=-1;
|
||||||
static char *kwlist[] = {"index","rebuild", NULL};
|
static char *kwlist[] = {"index","rebuild", NULL};
|
||||||
if (!PyArg_ParseTupleAndKeywords(args, keywds,"|hO",kwlist,&pcObj))
|
if (!PyArg_ParseTupleAndKeywords(args, keywds,"|hO",kwlist,&pcObj))
|
||||||
Py_Error(Base::BaseExceptionFreeCADError, "Wrong parameters");
|
return 0;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if(PyObject_IsTrue(pcObj))
|
if(PyObject_IsTrue(pcObj))
|
||||||
|
@ -160,26 +160,31 @@ PyObject* AreaPy::add(PyObject *args, PyObject *keywds)
|
||||||
if (!PyArg_ParseTupleAndKeywords(args, keywds,
|
if (!PyArg_ParseTupleAndKeywords(args, keywds,
|
||||||
"O|" PARAM_PY_KWDS(AREA_PARAMS_OPCODE),
|
"O|" PARAM_PY_KWDS(AREA_PARAMS_OPCODE),
|
||||||
kwlist,&pcObj,PARAM_REF(PARAM_FARG,AREA_PARAMS_OPCODE)))
|
kwlist,&pcObj,PARAM_REF(PARAM_FARG,AREA_PARAMS_OPCODE)))
|
||||||
Py_Error(Base::BaseExceptionFreeCADError, "Wrong parameters");
|
return 0;
|
||||||
|
|
||||||
if (PyObject_TypeCheck(pcObj, &(Part::TopoShapePy::Type))) {
|
if (PyObject_TypeCheck(pcObj, &(Part::TopoShapePy::Type))) {
|
||||||
getAreaPtr()->add(GET_TOPOSHAPE(pcObj),op);
|
getAreaPtr()->add(GET_TOPOSHAPE(pcObj),op);
|
||||||
return Py_None;
|
return Py_None;
|
||||||
}
|
} else if (PyObject_TypeCheck(pcObj, &(PyList_Type)) ||
|
||||||
Py::Sequence shapeSeq(pcObj);
|
PyObject_TypeCheck(pcObj, &(PyTuple_Type))) {
|
||||||
for (Py::Sequence::iterator it = shapeSeq.begin(); it != shapeSeq.end(); ++it) {
|
Py::Sequence shapeSeq(pcObj);
|
||||||
PyObject* item = (*it).ptr();
|
for (Py::Sequence::iterator it = shapeSeq.begin(); it != shapeSeq.end(); ++it) {
|
||||||
if(!PyObject_TypeCheck(item, &(Part::TopoShapePy::Type))) {
|
PyObject* item = (*it).ptr();
|
||||||
PyErr_SetString(PyExc_TypeError, "non-shape object in sequence");
|
if(!PyObject_TypeCheck(item, &(Part::TopoShapePy::Type))) {
|
||||||
return 0;
|
PyErr_SetString(PyExc_TypeError, "non-shape object in sequence");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
for (Py::Sequence::iterator it = shapeSeq.begin(); it != shapeSeq.end(); ++it){
|
||||||
|
PyObject* item = (*it).ptr();
|
||||||
|
getAreaPtr()->add(GET_TOPOSHAPE(item),
|
||||||
|
PARAM_PY_FIELDS(PARAM_FARG,AREA_PARAMS_OPCODE));
|
||||||
|
}
|
||||||
|
return Py_None;
|
||||||
}
|
}
|
||||||
for (Py::Sequence::iterator it = shapeSeq.begin(); it != shapeSeq.end(); ++it){
|
|
||||||
PyObject* item = (*it).ptr();
|
PyErr_SetString(PyExc_TypeError, "shape must be 'TopoShape' or list of 'TopoShape'");
|
||||||
getAreaPtr()->add(GET_TOPOSHAPE(item),
|
return 0;
|
||||||
PARAM_PY_FIELDS(PARAM_FARG,AREA_PARAMS_OPCODE));
|
|
||||||
}
|
|
||||||
return Py_None;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PyObject* AreaPy::makeOffset(PyObject *args, PyObject *keywds)
|
PyObject* AreaPy::makeOffset(PyObject *args, PyObject *keywds)
|
||||||
|
@ -196,7 +201,7 @@ PyObject* AreaPy::makeOffset(PyObject *args, PyObject *keywds)
|
||||||
if (!PyArg_ParseTupleAndKeywords(args, keywds,
|
if (!PyArg_ParseTupleAndKeywords(args, keywds,
|
||||||
"|h" PARAM_PY_KWDS(AREA_PARAMS_OFFSET), kwlist,
|
"|h" PARAM_PY_KWDS(AREA_PARAMS_OFFSET), kwlist,
|
||||||
&index,PARAM_REF(PARAM_FARG,AREA_PARAMS_OFFSET)))
|
&index,PARAM_REF(PARAM_FARG,AREA_PARAMS_OFFSET)))
|
||||||
Py_Error(Base::BaseExceptionFreeCADError, "Wrong parameters");
|
return 0;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
//Expand the variable as function call arguments
|
//Expand the variable as function call arguments
|
||||||
|
@ -219,7 +224,7 @@ PyObject* AreaPy::makePocket(PyObject *args, PyObject *keywds)
|
||||||
if (!PyArg_ParseTupleAndKeywords(args, keywds,
|
if (!PyArg_ParseTupleAndKeywords(args, keywds,
|
||||||
"|h" PARAM_PY_KWDS(AREA_PARAMS_POCKET), kwlist,
|
"|h" PARAM_PY_KWDS(AREA_PARAMS_POCKET), kwlist,
|
||||||
&index,PARAM_REF(PARAM_FARG,AREA_PARAMS_POCKET)))
|
&index,PARAM_REF(PARAM_FARG,AREA_PARAMS_POCKET)))
|
||||||
Py_Error(Base::BaseExceptionFreeCADError, "Wrong parameters");
|
return 0;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
TopoDS_Shape resultShape = getAreaPtr()->makePocket(index,
|
TopoDS_Shape resultShape = getAreaPtr()->makePocket(index,
|
||||||
|
@ -265,7 +270,7 @@ PyObject* AreaPy::setParams(PyObject *args, PyObject *keywds)
|
||||||
PyObject* AreaPy::getParams(PyObject *args)
|
PyObject* AreaPy::getParams(PyObject *args)
|
||||||
{
|
{
|
||||||
if (!PyArg_ParseTuple(args, ""))
|
if (!PyArg_ParseTuple(args, ""))
|
||||||
Py_Error(Base::BaseExceptionFreeCADError, "This method accepts no argument");
|
return 0;
|
||||||
|
|
||||||
const AreaParams ¶ms =getAreaPtr()->getParams();
|
const AreaParams ¶ms =getAreaPtr()->getParams();
|
||||||
|
|
||||||
|
@ -280,7 +285,7 @@ PyObject* AreaPy::getParamsDesc(PyObject *args, PyObject *keywds)
|
||||||
PyObject *pcObj = Py_True;
|
PyObject *pcObj = Py_True;
|
||||||
static char *kwlist[] = {"as_string", NULL};
|
static char *kwlist[] = {"as_string", NULL};
|
||||||
if (!PyArg_ParseTupleAndKeywords(args, keywds,"|O",kwlist,&pcObj))
|
if (!PyArg_ParseTupleAndKeywords(args, keywds,"|O",kwlist,&pcObj))
|
||||||
Py_Error(Base::BaseExceptionFreeCADError, "This method accepts no argument");
|
return 0;
|
||||||
|
|
||||||
if(PyObject_IsTrue(pcObj))
|
if(PyObject_IsTrue(pcObj))
|
||||||
return PyString_FromString(PARAM_PY_DOC(NAME,AREA_PARAMS_CONF));
|
return PyString_FromString(PARAM_PY_DOC(NAME,AREA_PARAMS_CONF));
|
||||||
|
|
Loading…
Reference in New Issue
Block a user