Py::Object projectToDXF(const Py::Tuple& args) { PyObject *pcObjShape; PyObject *pcObjDir=0; const char *type=0; float scale=1.0f; float tol=0.1f; if (!PyArg_ParseTuple(args.ptr(), "O!|O!sff", &(TopoShapePy::Type), &pcObjShape, &(Base::VectorPy::Type), &pcObjDir, &type, &scale, &tol)) throw Py::Exception(); TopoShapePy* pShape = static_cast<TopoShapePy*>(pcObjShape); Base::Vector3d Vector(0,0,1); if (pcObjDir) Vector = static_cast<Base::VectorPy*>(pcObjDir)->value(); ProjectionAlgos Alg(pShape->getTopoShapePtr()->getShape(),Vector); bool hidden = false; if (type && std::string(type) == "ShowHiddenLines") hidden = true; Py::String result(Alg.getDXF(hidden?ProjectionAlgos::WithHidden:ProjectionAlgos::Plain, scale, tol)); return result; }
Py::Object projectEx(const Py::Tuple& args) { PyObject *pcObjShape; PyObject *pcObjDir=0; if (!PyArg_ParseTuple(args.ptr(), "O!|O!", &(TopoShapePy::Type), &pcObjShape, &(Base::VectorPy::Type), &pcObjDir)) throw Py::Exception(); TopoShapePy* pShape = static_cast<TopoShapePy*>(pcObjShape); Base::Vector3d Vector(0,0,1); if (pcObjDir) Vector = *static_cast<Base::VectorPy*>(pcObjDir)->getVectorPtr(); ProjectionAlgos Alg(pShape->getTopoShapePtr()->getShape(),Vector); Py::List list; list.append(Py::Object(new TopoShapePy(new TopoShape(Alg.V)) , true)); list.append(Py::Object(new TopoShapePy(new TopoShape(Alg.V1)), true)); list.append(Py::Object(new TopoShapePy(new TopoShape(Alg.VN)), true)); list.append(Py::Object(new TopoShapePy(new TopoShape(Alg.VO)), true)); list.append(Py::Object(new TopoShapePy(new TopoShape(Alg.VI)), true)); list.append(Py::Object(new TopoShapePy(new TopoShape(Alg.H)) , true)); list.append(Py::Object(new TopoShapePy(new TopoShape(Alg.H1)), true)); list.append(Py::Object(new TopoShapePy(new TopoShape(Alg.HN)), true)); list.append(Py::Object(new TopoShapePy(new TopoShape(Alg.HO)), true)); list.append(Py::Object(new TopoShapePy(new TopoShape(Alg.HI)), true)); return list; }
static PyObject * projectEx(PyObject *self, PyObject *args) { PyObject *pcObjShape; PyObject *pcObjDir=0; if (!PyArg_ParseTuple(args, "O!|O!", &(TopoShapePy::Type), &pcObjShape,&(Base::VectorPy::Type), &pcObjDir)) // convert args: Python->C return NULL; // NULL triggers exception PY_TRY { TopoShapePy* pShape = static_cast<TopoShapePy*>(pcObjShape); Base::Vector3d Vector(0,0,1); if (pcObjDir) Vector = *static_cast<Base::VectorPy*>(pcObjDir)->getVectorPtr(); ProjectionAlgos Alg(pShape->getTopoShapePtr()->_Shape,Base::Vector3f((float)Vector.x,(float)Vector.y,(float)Vector.z)); Py::List list; list.append(Py::Object(new TopoShapePy(new TopoShape(Alg.V)) , true)); list.append(Py::Object(new TopoShapePy(new TopoShape(Alg.V1)), true)); list.append(Py::Object(new TopoShapePy(new TopoShape(Alg.VN)), true)); list.append(Py::Object(new TopoShapePy(new TopoShape(Alg.VO)), true)); list.append(Py::Object(new TopoShapePy(new TopoShape(Alg.VI)), true)); list.append(Py::Object(new TopoShapePy(new TopoShape(Alg.H)) , true)); list.append(Py::Object(new TopoShapePy(new TopoShape(Alg.H1)), true)); list.append(Py::Object(new TopoShapePy(new TopoShape(Alg.HN)), true)); list.append(Py::Object(new TopoShapePy(new TopoShape(Alg.HO)), true)); list.append(Py::Object(new TopoShapePy(new TopoShape(Alg.HI)), true)); return Py::new_reference_to(list); } PY_CATCH; }
static PyObject * projectToDXF(PyObject *self, PyObject *args) { PyObject *pcObjShape; PyObject *pcObjDir=0; const char *type=0; float scale=1.0f; float tol=0.1f; if (!PyArg_ParseTuple(args, "O!|O!sff", &(TopoShapePy::Type), &pcObjShape, &(Base::VectorPy::Type), &pcObjDir, &type, &scale, &tol)) return NULL; PY_TRY { TopoShapePy* pShape = static_cast<TopoShapePy*>(pcObjShape); Base::Vector3d Vector(0,0,1); if (pcObjDir) Vector = static_cast<Base::VectorPy*>(pcObjDir)->value(); ProjectionAlgos Alg(pShape->getTopoShapePtr()->_Shape,Base::Vector3f((float)Vector.x,(float)Vector.y,(float)Vector.z)); bool hidden = false; if (type && std::string(type) == "ShowHiddenLines") hidden = true; Py::String result(Alg.getDXF(hidden?ProjectionAlgos::WithHidden:ProjectionAlgos::Plain, scale, tol)); return Py::new_reference_to(result); } PY_CATCH; }
void PropertyPartShape::setPyObject(PyObject *value) { if (PyObject_TypeCheck(value, &(TopoShapePy::Type))) { TopoShapePy *pcObject = static_cast<TopoShapePy*>(value); setValue(*pcObject->getTopoShapePtr()); } else { std::string error = std::string("type must be 'Shape', not "); error += value->ob_type->tp_name; throw Base::TypeError(error); } }
Py::Object projectToSVG(const Py::Tuple& args, const Py::Dict& keys) { static char* argNames[] = {"topoShape", "direction", "type", "tolerance", "vStyle", "v0Style", "v1Style", "hStyle", "h0Style", "h1Style", NULL}; PyObject *pcObjShape = 0; PyObject *pcObjDir = 0; const char *extractionTypePy = 0; ProjectionAlgos::ExtractionType extractionType = ProjectionAlgos::Plain; const float tol = 0.1f; PyObject* vStylePy = 0; ProjectionAlgos::XmlAttributes vStyle; PyObject* v0StylePy = 0; ProjectionAlgos::XmlAttributes v0Style; PyObject* v1StylePy = 0; ProjectionAlgos::XmlAttributes v1Style; PyObject* hStylePy = 0; ProjectionAlgos::XmlAttributes hStyle; PyObject* h0StylePy = 0; ProjectionAlgos::XmlAttributes h0Style; PyObject* h1StylePy = 0; ProjectionAlgos::XmlAttributes h1Style; // Get the arguments if (!PyArg_ParseTupleAndKeywords( args.ptr(), keys.ptr(), "O!|O!sfOOOOOO", argNames, &(TopoShapePy::Type), &pcObjShape, &(Base::VectorPy::Type), &pcObjDir, &extractionTypePy, &tol, &vStylePy, &v0StylePy, &v1StylePy, &hStylePy, &h0StylePy, &h1StylePy)) throw Py::Exception(); // Convert all arguments into the right format TopoShapePy* pShape = static_cast<TopoShapePy*>(pcObjShape); Base::Vector3d directionVector(0,0,1); if (pcObjDir) directionVector = static_cast<Base::VectorPy*>(pcObjDir)->value(); if (extractionTypePy && string(extractionTypePy) == "ShowHiddenLines") extractionType = ProjectionAlgos::WithHidden; if (vStylePy) copy(Py::Dict(vStylePy), inserter(vStyle, vStyle.begin())); if (v0StylePy) copy(Py::Dict(v0StylePy), inserter(v0Style, v0Style.begin())); if (v1StylePy) copy(Py::Dict(v1StylePy), inserter(v1Style, v1Style.begin())); if (hStylePy) copy(Py::Dict(hStylePy), inserter(hStyle, hStyle.begin())); if (h0StylePy) copy(Py::Dict(h0StylePy), inserter(h0Style, h0Style.begin())); if (h1StylePy) copy(Py::Dict(h1StylePy), inserter(h1Style, h1Style.begin())); // Execute the SVG generation ProjectionAlgos Alg(pShape->getTopoShapePtr()->getShape(), directionVector); Py::String result(Alg.getSVG(extractionType, tol, vStyle, v0Style, v1Style, hStyle, h0Style, h1Style)); return result; }