mirror of
https://github.com/NGSolve/netgen.git
synced 2024-11-11 16:49:16 +05:00
Merge branch 'occ_extrude_identify' into 'master'
Occ extrude identify See merge request ngsolve/netgen!570
This commit is contained in:
commit
f802197576
@ -982,7 +982,9 @@ DLL_HEADER void ExportNgOCCShapes(py::module &m)
|
||||
return CastShape(shape.Reversed()); })
|
||||
|
||||
.def("Extrude", [](const TopoDS_Shape & shape, double h,
|
||||
optional<gp_Vec> dir) {
|
||||
optional<gp_Vec> 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();
|
||||
|
Loading…
Reference in New Issue
Block a user