mirror of
https://github.com/NGSolve/netgen.git
synced 2024-12-24 21:10:33 +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)
|
OCCSolid(TopoDS_Shape dshape)
|
||||||
: solid(TopoDS::Solid(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
|
// Add identifications
|
||||||
auto add_identifications = [&](auto & shapes, auto & shape_map)
|
auto add_identifications = [&](auto & shapes, auto & shape_map)
|
||||||
{
|
{
|
||||||
|
@ -836,12 +836,7 @@ DLL_HEADER void ExportNgOCCShapes(py::module &m)
|
|||||||
},
|
},
|
||||||
[](TopoDS_Shape& self, double val)
|
[](TopoDS_Shape& self, double val)
|
||||||
{
|
{
|
||||||
for (auto typ : { TopAbs_SOLID, TopAbs_FACE, TopAbs_EDGE, TopAbs_VERTEX })
|
OCCGeometry::GetProperties(self).maxh = val;
|
||||||
for (TopExp_Explorer e(self, typ); e.More(); e.Next())
|
|
||||||
{
|
|
||||||
auto & maxh = OCCGeometry::GetProperties(e.Current()).maxh;
|
|
||||||
maxh = min2(val, maxh);
|
|
||||||
}
|
|
||||||
}, "maximal mesh-size for shape")
|
}, "maximal mesh-size for shape")
|
||||||
|
|
||||||
.def_property("hpref",
|
.def_property("hpref",
|
||||||
|
Loading…
Reference in New Issue
Block a user