Skip to content
Snippets Groups Projects
Commit 0c8d5f91 authored by Christophe Geuzaine's avatar Christophe Geuzaine
Browse files

memory leak + force recompute MaxPointNum, MaxLineNum & co after each Merge so...

memory leak + force recompute MaxPointNum, MaxLineNum & co after each Merge so we can easily append gmsh entities to other CAD models in the GUI
parent f34a3870
No related branches found
No related tags found
No related merge requests found
......@@ -157,6 +157,22 @@ void AddToTemporaryBoundingBox(double x, double y, double z)
for(int i = 0; i < 3; i++) CTX::instance()->cg[i] = temp_bb.center()[i];
}
static void ComputeMaxEntityNum()
{
GModel::current()->getGEOInternals()->MaxPointNum =
std::max(GModel::current()->getGEOInternals()->MaxPointNum,
GModel::current()->getMaxElementaryNumber(0));
GModel::current()->getGEOInternals()->MaxLineNum =
std::max(GModel::current()->getGEOInternals()->MaxLineNum,
GModel::current()->getMaxElementaryNumber(1));
GModel::current()->getGEOInternals()->MaxSurfaceNum =
std::max(GModel::current()->getGEOInternals()->MaxSurfaceNum,
GModel::current()->getMaxElementaryNumber(2));
GModel::current()->getGEOInternals()->MaxVolumeNum =
std::max(GModel::current()->getGEOInternals()->MaxVolumeNum,
GModel::current()->getMaxElementaryNumber(3));
}
static std::vector<FILE*> openedFiles;
int ParseFile(const std::string &fileName, bool close, bool warnIfMissing)
......@@ -444,6 +460,7 @@ int MergeFile(const std::string &fileName, bool warnIfMissing)
}
}
ComputeMaxEntityNum();
SetBoundingBox();
CTX::instance()->geom.draw = 1;
......
......@@ -47,7 +47,6 @@ int GModel::readGEO(const std::string &name)
int GModel::exportDiscreteGEOInternals()
{
if(_geo_internals) delete _geo_internals;
_geo_internals = new GEO_Internals;
......@@ -81,6 +80,7 @@ int GModel::exportDiscreteGEOInternals()
End_Curve(c);
Tree_Add(this->getGEOInternals()->Curves, &c);
CreateReversedCurve(c);
List_Delete(points);
}
}
......@@ -100,25 +100,22 @@ int GModel::exportDiscreteGEOInternals()
}
}
Tree_Add(this->getGEOInternals()->Surfaces, &s);
List_Delete(curves);
}
}
// TODO: create Volumes from discreteRegions
Msg::Debug("Geo internal model has:");
List_T *points = Tree2List(_geo_internals->Points);
List_T *curves = Tree2List(_geo_internals->Curves);
List_T *surfaces = Tree2List(_geo_internals->Surfaces);
Msg::Debug("%d Vertices", List_Nbr(points));
Msg::Debug("%d Edges", List_Nbr(curves));
Msg::Debug("%d Faces", List_Nbr(surfaces));
Msg::Debug("%d Vertices", Tree_Nbr(_geo_internals->Points));
Msg::Debug("%d Edges", Tree_Nbr(_geo_internals->Curves));
Msg::Debug("%d Faces", Tree_Nbr(_geo_internals->Surfaces));
return 1;
}
int GModel::importGEOInternals()
{
if(Tree_Nbr(_geo_internals->Points)) {
List_T *points = Tree2List(_geo_internals->Points);
for(int i = 0; i < List_Nbr(points); i++){
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment