void CirclePy::setAxis(Py::Object arg) { PyObject* p = arg.ptr(); Base::Vector3d val; if (PyObject_TypeCheck(p, &(Base::VectorPy::Type))) { val = static_cast<Base::VectorPy*>(p)->value(); } else if (PyTuple_Check(p)) { val = Base::getVectorFromTuple<double>(p); } else { std::string error = std::string("type must be 'Vector', not "); error += p->ob_type->tp_name; throw Py::TypeError(error); } Handle_Geom_Circle circle = Handle_Geom_Circle::DownCast(getGeomCirclePtr()->handle()); try { gp_Ax1 axis; axis.SetLocation(circle->Location()); axis.SetDirection(gp_Dir(val.x, val.y, val.z)); circle->SetAxis(axis); } catch (Standard_Failure) { throw Py::Exception("cannot set axis"); } }
Py::Object CirclePy::getCenter(void) const { Handle_Geom_Circle circle = Handle_Geom_Circle::DownCast(getGeomCirclePtr()->handle()); gp_Pnt loc = circle->Location(); return Py::Vector(Base::Vector3d(loc.X(), loc.Y(), loc.Z())); }