3030#include < SofaPython3/Sofa/Core/Binding_VisualParams_doc.h>
3131
3232#include < SofaPython3/PythonFactory.h>
33-
34- #include < sofa/type/RGBAColor.h> ;
33+ # include < sofa/core/objectmodel/Data.h >
34+ #include < sofa/type/RGBAColor.h>
3535
3636namespace py { using namespace pybind11 ; }
37+ using sofa::core::objectmodel::BaseData;
38+ using sofa::core::objectmodel::Data;
3739using sofa::core::objectmodel::BaseObject;
3840using sofa::core::visual::VisualParams;
3941using sofa::core::visual::DrawTool;
@@ -43,12 +45,37 @@ namespace sofapython3 {
4345void moduleAddVisualParams (py::module &m)
4446{
4547 py::class_<VisualParams> vp (m, " VisualParams" , sofapython3::doc::visualParams::baseVisualParamsClass);
46- vp.def (" getDrawTool" , [](VisualParams *self){ return self->drawTool () ;});
48+ vp.def (" getDrawTool" , [](VisualParams *self){ return self->drawTool (); },
49+ pybind11::return_value_policy::reference);
4750
4851 py::class_<DrawTool> dt (m, " DrawTool" , sofapython3::doc::visualParams::baseVisualParamsClass);
4952 dt.def (" drawPoints" , [](DrawTool *self, const std::vector<sofa::type::Vec3> &points, float size ){
5053 self->drawPoints (points, size, sofa::type::RGBAColor::white ());
5154 });
55+ dt.def (" drawPoints" , [](DrawTool *self, BaseData* dpositions, float size ){
56+ auto positions = dynamic_cast <Data<sofa::type::vector<sofa::type::Vec3>>*>(dpositions);
57+ if (positions)
58+ self->drawPoints (positions->getValue (), size, sofa::type::RGBAColor::white ());
59+ });
60+ dt.def (" drawLines" , [](DrawTool *self, const std::vector<sofa::type::Vec3> &points, float size ){
61+ self->drawLines (points, size, sofa::type::RGBAColor::white ());
62+ });
63+ dt.def (" drawFrames" , [](DrawTool* self,
64+ const std::vector<sofa::type::Vec3d>& points,
65+ const std::vector<sofa::type::Quatd>& orientations,
66+ const sofa::type::Vec3& size ){
67+ for (unsigned int i=0 ;i<points.size ();i++)
68+ {
69+ self->drawFrame (points[i], orientations[i], size);
70+ }
71+ });
72+ dt.def (" draw3DText" , [](DrawTool* self,
73+ const sofa::type::Vec3d& point,
74+ const float size,
75+ const std::string& text)
76+ {
77+ self->draw3DText (point, size, sofa::type::RGBAColor::white (), text.c_str ());
78+ });
5279}
5380
5481} // / namespace sofapython3
0 commit comments