mirror of
https://github.com/NGSolve/netgen.git
synced 2024-12-24 04:50:34 +05:00
Propagate maxh to children only in occgeom constructor
Allows resetting maxh to larger values again: ``` from netgen.occ import * from ngsolve import * b1 = Box((-1,-1,-1), (1,1,1)) b1.faces.Max(X).maxh = 0.1 b1.faces.Max(X).maxh = 0.2 geo = OCCGeometry(b1) mesh = Mesh(geo.GenerateMesh(maxh=0.5)) Draw(mesh) ``` Needed for example in meshing app. Before it was not possible to set maxh to larger value again.
This commit is contained in:
parent
eef79e64f2
commit
f808a2bb64
@ -16,6 +16,7 @@ namespace netgen
|
||||
OCCSolid(TopoDS_Shape dshape)
|
||||
: solid(TopoDS::Solid(dshape))
|
||||
{ }
|
||||
TopoDS_Solid& GetShape() { return solid; }
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -1261,6 +1261,24 @@ namespace netgen
|
||||
}
|
||||
}
|
||||
|
||||
// Propagate maxh to children
|
||||
for(auto& solid : solids)
|
||||
{
|
||||
auto& shape = static_cast<OCCSolid&>(*solid).GetShape();
|
||||
if(!OCCGeometry::HaveProperties(shape))
|
||||
continue;
|
||||
for(auto& f : GetFaces(shape))
|
||||
{
|
||||
auto& face = GetFace(f);
|
||||
face.properties.maxh = min2(face.properties.maxh,
|
||||
GetProperties(shape).maxh);
|
||||
}
|
||||
}
|
||||
for(auto& face : faces)
|
||||
for(auto& edge : face->edges)
|
||||
edge->properties.maxh = min2(edge->properties.maxh,
|
||||
face->properties.maxh);
|
||||
|
||||
// Add identifications
|
||||
auto add_identifications = [&](auto & shapes, auto & shape_map)
|
||||
{
|
||||
|
@ -836,12 +836,7 @@ DLL_HEADER void ExportNgOCCShapes(py::module &m)
|
||||
},
|
||||
[](TopoDS_Shape& self, double val)
|
||||
{
|
||||
for (auto typ : { TopAbs_SOLID, TopAbs_FACE, TopAbs_EDGE, TopAbs_VERTEX })
|
||||
for (TopExp_Explorer e(self, typ); e.More(); e.Next())
|
||||
{
|
||||
auto & maxh = OCCGeometry::GetProperties(e.Current()).maxh;
|
||||
maxh = min2(val, maxh);
|
||||
}
|
||||
OCCGeometry::GetProperties(self).maxh = val;
|
||||
}, "maximal mesh-size for shape")
|
||||
|
||||
.def_property("hpref",
|
||||
|
Loading…
Reference in New Issue
Block a user