23
#include "PreCompiled.h"
26
# include <TopoDS_Edge.hxx>
27
# include <TopoDS_Face.hxx>
30
#include <Base/PyWrapParseTupleAndKeywords.h>
31
#include <Base/VectorPy.h>
33
#include "BRepFeat/MakePrismPy.h"
34
#include "BRepFeat/MakePrismPy.cpp"
36
#include "TopoShapeEdgePy.h"
37
#include "TopoShapeFacePy.h"
42
PyObject *MakePrismPy::PyMake(struct _typeobject *, PyObject *, PyObject *)
45
return new MakePrismPy(nullptr);
49
int MakePrismPy::PyInit(PyObject* args, PyObject* kwds)
57
static const std::array<const char *, 7> keywords{"Sbase", "Pbase", "Skface", "Direction", "Fuse", "Modify",
59
if (Base::Wrapped_ParseTupleAndKeywords(args, kwds, "O!O!O!O!iO!", keywords,
60
&(TopoShapePy::Type), &Sbase,
61
&(TopoShapePy::Type), &Pbase,
62
&(TopoShapeFacePy::Type), &Skface,
63
&(Base::VectorPy::Type), &Direction, &Fuse,
64
&(PyBool_Type), &Modify)) {
66
TopoDS_Shape sbase = static_cast<TopoShapePy*>(Sbase)->getTopoShapePtr()->getShape();
67
TopoDS_Shape pbase = static_cast<TopoShapePy*>(Pbase)->getTopoShapePtr()->getShape();
68
TopoDS_Face skface = TopoDS::Face(static_cast<TopoShapePy*>(Skface)->getTopoShapePtr()->getShape());
69
Base::Vector3d dir = static_cast<Base::VectorPy*>(Direction)->value();
70
std::unique_ptr<BRepFeat_MakePrism> ptr(new BRepFeat_MakePrism(sbase, pbase, skface, gp_Dir(dir.x, dir.y, dir.z), Fuse,
71
Base::asBoolean(Modify)));
73
setTwinPointer(ptr.release());
76
catch (const Standard_Failure& e) {
77
PyErr_SetString(PyExc_RuntimeError, e.GetMessageString());
83
if (PyArg_ParseTuple(args, "")) {
85
std::unique_ptr<BRepFeat_MakePrism> ptr(new BRepFeat_MakePrism());
86
setTwinPointer(ptr.release());
89
catch (const Standard_Failure& e) {
90
PyErr_SetString(PyExc_RuntimeError, e.GetMessageString());
95
PyErr_SetString(PyExc_TypeError, "supported signatures:\n"
97
"MakePrism(Sbase [shape], Pbase [shape], Skface [face], Direction [Vector], Fuse [int={0, 1}], Modify [bool])\n");
102
std::string MakePrismPy::representation() const
104
return {"<BRepFeat_MakePrism object>"};
107
PyObject* MakePrismPy::init(PyObject *args, PyObject* kwds)
115
static const std::array<const char *, 7> keywords{"Sbase", "Pbase", "Skface", "Direction", "Fuse", "Modify",
117
if (!Base::Wrapped_ParseTupleAndKeywords(args, kwds, "O!O!O!O!iO!", keywords,
118
&(TopoShapePy::Type), &Sbase,
119
&(TopoShapePy::Type), &Pbase,
120
&(TopoShapeFacePy::Type), &Skface,
121
&(Base::VectorPy::Type), &Direction, &Fuse,
122
&(PyBool_Type), &Modify)) {
128
TopoDS_Shape sbase = static_cast<TopoShapePy*>(Sbase)->getTopoShapePtr()->getShape();
129
TopoDS_Shape pbase = static_cast<TopoShapePy*>(Pbase)->getTopoShapePtr()->getShape();
130
TopoDS_Face skface = TopoDS::Face(static_cast<TopoShapePy*>(Skface)->getTopoShapePtr()->getShape());
131
Base::Vector3d dir = static_cast<Base::VectorPy*>(Direction)->value();
132
getBRepFeat_MakePrismPtr()->Init(sbase, pbase, skface, gp_Dir(dir.x, dir.y, dir.z), Fuse,
133
Base::asBoolean(Modify));
137
catch (const Standard_Failure& e) {
138
PyErr_SetString(PyExc_RuntimeError, e.GetMessageString());
143
PyObject* MakePrismPy::add(PyObject *args, PyObject* kwds)
147
static const std::array<const char *, 3> keywords{"Edge", "Face", nullptr};
148
if (!Base::Wrapped_ParseTupleAndKeywords(args, kwds, "O!O!", keywords,
149
&(TopoShapeEdgePy::Type), &Edge,
150
&(TopoShapeFacePy::Type), &Face)) {
156
TopoDS_Edge edge = TopoDS::Edge(static_cast<TopoShapePy*>(Edge)->getTopoShapePtr()->getShape());
157
TopoDS_Face face = TopoDS::Face(static_cast<TopoShapePy*>(Face)->getTopoShapePtr()->getShape());
158
getBRepFeat_MakePrismPtr()->Add(edge, face);
162
catch (const Standard_Failure& e) {
163
PyErr_SetString(PyExc_RuntimeError, e.GetMessageString());
168
PyObject* MakePrismPy::perform(PyObject *args, PyObject* kwds)
172
static const std::array<const char *, 3> keywords_fu{"From", "Until", nullptr};
173
if (Base::Wrapped_ParseTupleAndKeywords(args, kwds, "O!O!", keywords_fu,
174
&(TopoShapePy::Type), &From,
175
&(TopoShapePy::Type), &Until)) {
177
TopoDS_Shape from = static_cast<TopoShapePy*>(From)->getTopoShapePtr()->getShape();
178
TopoDS_Shape until = static_cast<TopoShapePy*>(Until)->getTopoShapePtr()->getShape();
179
getBRepFeat_MakePrismPtr()->Perform(from, until);
182
catch (const Standard_Failure& e) {
183
PyErr_SetString(PyExc_RuntimeError, e.GetMessageString());
189
static const std::array<const char *, 2> keywords_u {"Until", nullptr};
190
if (Base:: Wrapped_ParseTupleAndKeywords(args, kwds, "O!", keywords_u, &(TopoShapePy::Type), &Until)) {
192
TopoDS_Shape until = static_cast<TopoShapePy*>(Until)->getTopoShapePtr()->getShape();
193
getBRepFeat_MakePrismPtr()->Perform(until);
196
catch (const Standard_Failure& e) {
197
PyErr_SetString(PyExc_RuntimeError, e.GetMessageString());
204
static const std::array<const char *, 2> keywords_l {"Length", nullptr};
205
if (Base::Wrapped_ParseTupleAndKeywords(args, kwds, "d", keywords_l, &length)) {
207
getBRepFeat_MakePrismPtr()->Perform(length);
210
catch (const Standard_Failure& e) {
211
PyErr_SetString(PyExc_RuntimeError, e.GetMessageString());
216
PyErr_SetString(PyExc_TypeError, "supported signatures:\n"
217
"perform(From [shape], Until [shape])\n"
218
"perform(Until [shape])\n"
219
"perform(Length [float])\n");
223
PyObject* MakePrismPy::performUntilEnd(PyObject *args)
225
if (!PyArg_ParseTuple(args, ""))
229
getBRepFeat_MakePrismPtr()->PerformUntilEnd();
232
catch (const Standard_Failure& e) {
233
PyErr_SetString(PyExc_RuntimeError, e.GetMessageString());
238
PyObject* MakePrismPy::performFromEnd(PyObject *args)
241
if (!PyArg_ParseTuple(args, "O!", &(TopoShapePy::Type), &Until))
245
TopoDS_Shape until = static_cast<TopoShapePy*>(Until)->getTopoShapePtr()->getShape();
246
getBRepFeat_MakePrismPtr()->PerformFromEnd(until);
249
catch (const Standard_Failure& e) {
250
PyErr_SetString(PyExc_RuntimeError, e.GetMessageString());
255
PyObject* MakePrismPy::performThruAll(PyObject *args)
257
if (!PyArg_ParseTuple(args, ""))
261
getBRepFeat_MakePrismPtr()->PerformThruAll();
264
catch (const Standard_Failure& e) {
265
PyErr_SetString(PyExc_RuntimeError, e.GetMessageString());
270
PyObject* MakePrismPy::performUntilHeight(PyObject *args)
274
if (!PyArg_ParseTuple(args, "O!d", &(TopoShapePy::Type), &Until, &length))
278
TopoDS_Shape until = static_cast<TopoShapePy*>(Until)->getTopoShapePtr()->getShape();
279
getBRepFeat_MakePrismPtr()->PerformUntilHeight(until, length);
282
catch (const Standard_Failure& e) {
283
PyErr_SetString(PyExc_RuntimeError, e.GetMessageString());
288
PyObject* MakePrismPy::curves(PyObject *args)
290
if (!PyArg_ParseTuple(args, ""))
293
TColGeom_SequenceOfCurve S;
294
getBRepFeat_MakePrismPtr()->Curves(S);
296
Py::Tuple tuple(S.Length());
297
for (int i = S.Lower(); i <= S.Upper(); ++i) {
298
Handle(Geom_Curve) hC = S.Value(i);
301
std::unique_ptr<GeomCurve> gc(Part::makeFromCurve(hC));
302
tuple.setItem(i, Py::asObject(gc->getPyObject()));
305
return Py::new_reference_to(tuple);
308
PyObject* MakePrismPy::barycCurve(PyObject *args)
310
if (!PyArg_ParseTuple(args, ""))
313
Handle(Geom_Curve) hC = getBRepFeat_MakePrismPtr()->BarycCurve();
316
std::unique_ptr<GeomCurve> gc(Part::makeFromCurve(hC));
317
return gc->getPyObject();
320
PyObject* MakePrismPy::shape(PyObject *args)
322
if (!PyArg_ParseTuple(args, ""))
326
TopoShape shape(getBRepFeat_MakePrismPtr()->Shape());
327
return shape.getPyObject();
329
catch (const Standard_Failure& e) {
330
PyErr_SetString(PyExc_RuntimeError, e.GetMessageString());
335
PyObject *MakePrismPy::getCustomAttributes(const char* ) const
340
int MakePrismPy::setCustomAttributes(const char* , PyObject* )