Method to get SelectionObject from string

This commit is contained in:
wmayer 2013-05-13 15:25:31 +02:00
parent e1222202dd
commit bb65031594
2 changed files with 38 additions and 0 deletions

View File

@ -979,6 +979,8 @@ PyMethodDef SelectionSingleton::Methods[] = {
"document is given the selection of the active document is returned.\n"
"The SelectionObjects contain a variety of information about the selection,\n"
"e.g. sub-element names."},
{"getSelectionObject", (PyCFunction) SelectionSingleton::sGetSelectionObject, 1,
"getSelectionObject(doc,obj,sub,(x,y,z)) -- Return a SelectionObject"},
{"addObserver", (PyCFunction) SelectionSingleton::sAddSelObserver, 1,
"addObserver(Object) -- Install an observer\n"},
{"removeObserver", (PyCFunction) SelectionSingleton::sRemSelObserver, 1,
@ -1114,6 +1116,41 @@ PyObject *SelectionSingleton::sGetSelectionEx(PyObject * /*self*/, PyObject *arg
}
}
PyObject *SelectionSingleton::sGetSelectionObject(PyObject * /*self*/, PyObject *args, PyObject * /*kwd*/)
{
char *docName, *objName, *subName;
PyObject* tuple=0;
if (!PyArg_ParseTuple(args, "sss|O!", &docName, &objName, &subName,
&PyTuple_Type, &tuple))
return NULL;
try {
SelectionObject selObj;
selObj.DocName = docName;
selObj.FeatName = objName;
std::string sub = subName;
if (!sub.empty()) {
selObj.SubNames.push_back(sub);
if (tuple) {
Py::Tuple t(tuple);
double x = (double)Py::Float(t.getItem(0));
double y = (double)Py::Float(t.getItem(1));
double z = (double)Py::Float(t.getItem(2));
selObj.SelPoses.push_back(Base::Vector3d(x,y,z));
}
}
return selObj.getPyObject();
}
catch (const Py::Exception&) {
return 0;
}
catch (const Base::Exception& e) {
PyErr_SetString(PyExc_Exception, e.what());
return 0;
}
}
PyObject *SelectionSingleton::sAddSelObserver(PyObject * /*self*/, PyObject *args, PyObject * /*kwd*/)
{
PyObject* o;

View File

@ -309,6 +309,7 @@ protected:
static PyObject *sCountObjectsOfType (PyObject *self,PyObject *args,PyObject *kwd);
static PyObject *sGetSelection (PyObject *self,PyObject *args,PyObject *kwd);
static PyObject *sGetSelectionEx (PyObject *self,PyObject *args,PyObject *kwd);
static PyObject *sGetSelectionObject (PyObject *self,PyObject *args,PyObject *kwd);
static PyObject *sAddSelObserver (PyObject *self,PyObject *args,PyObject *kwd);
static PyObject *sRemSelObserver (PyObject *self,PyObject *args,PyObject *kwd);
static PyObject *sAddSelectionGate (PyObject *self,PyObject *args,PyObject *kwd);