/*************************************************************************** * Copyright (c) Luke Parry (l.parry@warwick.ac.uk) 2013 * * * * This file is part of the FreeCAD CAx development system. * * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Library General Public * * License as published by the Free Software Foundation; either * * version 2 of the License, or (at your option) any later version. * * * * This library is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU Library General Public License for more details. * * * * You should have received a copy of the GNU Library General Public * * License along with this library; see the file COPYING.LIB. If not, * * write to the Free Software Foundation, Inc., 59 Temple Place, * * Suite 330, Boston, MA 02111-1307, USA * * * ***************************************************************************/ #include "PreCompiled.h" #ifndef _PreComp_ # include #endif #include "Mod/Measure/App/Measurement.h" #include #include #include #include #include #include // inclusion of the generated files (generated out of SketchObjectSFPy.xml) #include "MeasurementPy.h" #include "MeasurementPy.cpp" using namespace Measure; // returns a string which represents the object e.g. when printed in python std::string MeasurementPy::representation(void) const { return ""; } PyObject *MeasurementPy::PyMake(struct _typeobject *, PyObject *, PyObject *) // Python wrapper { // create a new instance of BoundBoxPy and the Twin object return new MeasurementPy(new Measurement); } // constructor method int MeasurementPy::PyInit(PyObject* /*args*/, PyObject* /*kwd*/) { return 0; } PyObject* MeasurementPy::addReference3D(PyObject *args) { char *ObjectName; char *SubName; if (!PyArg_ParseTuple(args, "ss:Give an object and subelement name", &ObjectName,&SubName)) return 0; // get the target object for the external link App::DocumentObject * Obj = App::GetApplication().getActiveDocument()->getObject(ObjectName); if (!Obj) { std::stringstream str; str << ObjectName << "does not exist in the document"; PyErr_SetString(PyExc_ValueError, str.str().c_str()); return 0; } // add the external if (this->getMeasurementPtr()->addReference3D(Obj,SubName) < 0) { std::stringstream str; str << "Not able to add reference"; PyErr_SetString(PyExc_ValueError, str.str().c_str()); return 0; } Py_Return; } PyObject* MeasurementPy::has3DReferences(PyObject *args) { PyObject *result=Py_False; if (!PyArg_ParseTuple(args, "")) return 0; if (getMeasurementPtr()->has3DReferences()) { result = Py_True; } Py_IncRef(result); return result; } PyObject* MeasurementPy::clear(PyObject *args) { if (!PyArg_ParseTuple(args, "")) return 0; this->getMeasurementPtr()->clear(); Py_Return; } PyObject* MeasurementPy::delta(PyObject *args) { if (!PyArg_ParseTuple(args, "")) return 0; Py::Vector delta(this->getMeasurementPtr()->delta()); return Py::new_reference_to(delta); } PyObject* MeasurementPy::length(PyObject *args) { if (!PyArg_ParseTuple(args, "")) return 0; Py::Float length; length = this->getMeasurementPtr()->length(); return Py::new_reference_to(length); } PyObject* MeasurementPy::radius(PyObject *args) { if (!PyArg_ParseTuple(args, "")) return 0; Py::Float radius; radius = this->getMeasurementPtr()->radius(); return Py::new_reference_to(radius); } PyObject* MeasurementPy::angle(PyObject *args) { if (!PyArg_ParseTuple(args, "")) return 0; Py::Float angle; angle = this->getMeasurementPtr()->angle(); return Py::new_reference_to(angle); } PyObject* MeasurementPy::com(PyObject *args) { if (!PyArg_ParseTuple(args, "")) return 0; Py::Vector com(this->getMeasurementPtr()->massCenter()); return Py::new_reference_to(com); } PyObject *MeasurementPy::getCustomAttributes(const char* /*attr*/) const { return 0; } int MeasurementPy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/) { return 0; }