| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| |
|
| | #include <Base/PlacementPy.h> |
| | #include <Base/PyWrapParseTupleAndKeywords.h> |
| |
|
| | #include <Mod/Mesh/App/MeshPy.h> |
| | #include <Mod/CAM/App/CommandPy.h> |
| | #include <Mod/Part/App/TopoShapePy.h> |
| |
|
| | #include "PathSim.h" |
| | |
| | #include "PathSimPy.h" |
| | #include "PathSimPy.cpp" |
| |
|
| |
|
| | using namespace PathSimulator; |
| |
|
| | |
| | std::string PathSimPy::representation() const |
| | { |
| | return std::string("<PathSim object>"); |
| | } |
| |
|
| | PyObject* PathSimPy::PyMake(struct _typeobject*, PyObject*, PyObject*) |
| | { |
| | |
| | return new PathSimPy(new PathSim); |
| | } |
| |
|
| | |
| | int PathSimPy::PyInit(PyObject* , PyObject* ) |
| | { |
| | return 0; |
| | } |
| |
|
| |
|
| | PyObject* PathSimPy::BeginSimulation(PyObject* args, PyObject* kwds) |
| | { |
| | static const std::array<const char*, 3> kwlist {"stock", "resolution", nullptr}; |
| | PyObject* pObjStock; |
| | float resolution; |
| | if (!Base::Wrapped_ParseTupleAndKeywords( |
| | args, |
| | kwds, |
| | "O!f", |
| | kwlist, |
| | &(Part::TopoShapePy::Type), |
| | &pObjStock, |
| | &resolution |
| | )) { |
| | return nullptr; |
| | } |
| | PathSim* sim = getPathSimPtr(); |
| | Part::TopoShape* stock = static_cast<Part::TopoShapePy*>(pObjStock)->getTopoShapePtr(); |
| | sim->BeginSimulation(stock, resolution); |
| | Py_IncRef(Py_None); |
| | return Py_None; |
| | } |
| |
|
| | PyObject* PathSimPy::SetToolShape(PyObject* args) |
| | { |
| | PyObject* pObjToolShape; |
| | float resolution; |
| | if (!PyArg_ParseTuple(args, "O!f", &(Part::TopoShapePy::Type), &pObjToolShape, &resolution)) { |
| | return nullptr; |
| | } |
| | PathSim* sim = getPathSimPtr(); |
| | const TopoDS_Shape& toolShape |
| | = static_cast<Part::TopoShapePy*>(pObjToolShape)->getTopoShapePtr()->getShape(); |
| | sim->SetToolShape(toolShape, resolution); |
| | Py_IncRef(Py_None); |
| | return Py_None; |
| | } |
| |
|
| | PyObject* PathSimPy::GetResultMesh(PyObject* args) |
| | { |
| | if (!PyArg_ParseTuple(args, "")) { |
| | return nullptr; |
| | } |
| | cStock* stock = getPathSimPtr()->m_stock.get(); |
| | if (!stock) { |
| | PyErr_SetString(PyExc_RuntimeError, "Simulation has stock object"); |
| | return nullptr; |
| | } |
| |
|
| | Mesh::MeshObject* meshOuter = new Mesh::MeshObject(); |
| | Mesh::MeshPy* meshOuterpy = new Mesh::MeshPy(meshOuter); |
| | Mesh::MeshObject* meshInner = new Mesh::MeshObject(); |
| | Mesh::MeshPy* meshInnerpy = new Mesh::MeshPy(meshInner); |
| | stock->Tessellate(*meshOuter, *meshInner); |
| | PyObject* tuple = PyTuple_New(2); |
| | PyTuple_SetItem(tuple, 0, meshOuterpy); |
| | PyTuple_SetItem(tuple, 1, meshInnerpy); |
| | return tuple; |
| | } |
| |
|
| |
|
| | PyObject* PathSimPy::ApplyCommand(PyObject* args, PyObject* kwds) |
| | { |
| | static const std::array<const char*, 3> kwlist {"position", "command", nullptr}; |
| | PyObject* pObjPlace; |
| | PyObject* pObjCmd; |
| | if (!Base::Wrapped_ParseTupleAndKeywords( |
| | args, |
| | kwds, |
| | "O!O!", |
| | kwlist, |
| | &(Base::PlacementPy::Type), |
| | &pObjPlace, |
| | &(Path::CommandPy::Type), |
| | &pObjCmd |
| | )) { |
| | return nullptr; |
| | } |
| | PathSim* sim = getPathSimPtr(); |
| | Base::Placement* pos = static_cast<Base::PlacementPy*>(pObjPlace)->getPlacementPtr(); |
| | Path::Command* cmd = static_cast<Path::CommandPy*>(pObjCmd)->getCommandPtr(); |
| | Base::Placement* newpos = sim->ApplyCommand(pos, cmd); |
| | |
| | |
| | Base::PlacementPy* newposPy = new Base::PlacementPy(newpos); |
| | return newposPy; |
| | } |
| |
|
| | Py::Object PathSimPy::getTool() const |
| | { |
| | |
| | throw Py::AttributeError("Not yet implemented"); |
| | } |
| |
|
| | PyObject* PathSimPy::getCustomAttributes(const char* ) const |
| | { |
| | return nullptr; |
| | } |
| |
|
| | int PathSimPy::setCustomAttributes(const char* , PyObject* ) |
| | { |
| | return 0; |
| | } |
| |
|