diff --git a/libsrc/occ/python_occ_shapes.cpp b/libsrc/occ/python_occ_shapes.cpp index a6d76c8f..641a2213 100644 --- a/libsrc/occ/python_occ_shapes.cpp +++ b/libsrc/occ/python_occ_shapes.cpp @@ -982,7 +982,9 @@ DLL_HEADER void ExportNgOCCShapes(py::module &m) return CastShape(shape.Reversed()); }) .def("Extrude", [](const TopoDS_Shape & shape, double h, - optional dir) { + optional dir, bool identify, + Identifications::ID_TYPE idtype) + { for (TopExp_Explorer e(shape, TopAbs_FACE); e.More(); e.Next()) { Handle(Geom_Surface) surf = BRep_Tool::Surface (TopoDS::Face(e.Current())); @@ -996,7 +998,7 @@ DLL_HEADER void ExportNgOCCShapes(py::module &m) surf->D1 (0,0,p,du,dv); edir = du^dv; } - BRepPrimAPI_MakePrism builder(shape, h*edir, true); + BRepPrimAPI_MakePrism builder(shape, h*edir, false); for (auto typ : { TopAbs_SOLID, TopAbs_FACE, TopAbs_EDGE, TopAbs_VERTEX }) for (TopExp_Explorer e(shape, typ); e.More(); e.Next()) @@ -1005,11 +1007,17 @@ DLL_HEADER void ExportNgOCCShapes(py::module &m) for (auto mods : builder.Generated(e.Current())) OCCGeometry::GetProperties(mods).Merge(prop); } - + if(identify) + { + Transformation<3> trsf(h * occ2ng(edir)); + Identify(GetFaces(shape), GetFaces(builder.LastShape()), + "extrusion_cs", idtype, trsf); + } return builder.Shape(); } throw Exception("no face found for extrusion"); - }, py::arg("h"), py::arg("dir")=nullopt, "extrude shape to thickness 'h', shape must contain a plane surface, optionally give an extrusion direction") + }, py::arg("h"), py::arg("dir")=nullopt, py::arg("identify")=false, + py::arg("idtype")=Identifications::CLOSESURFACES, "extrude shape to thickness 'h', shape must contain a plane surface, optionally give an extrusion direction") .def("Extrude", [] (const TopoDS_Shape & face, gp_Vec vec) { return BRepPrimAPI_MakePrism (face, vec).Shape();