diff --git a/Common/OpenFile.cpp b/Common/OpenFile.cpp index bbfd091acbac739af4a191efcaeb40ba53522e0e..f311029c36435ca903cf14b055739691377af39c 100644 --- a/Common/OpenFile.cpp +++ b/Common/OpenFile.cpp @@ -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; diff --git a/Geo/GModelIO_GEO.cpp b/Geo/GModelIO_GEO.cpp index a226150bc5afc251bd56305052a6ad8af1775687..86b079158d4d00e2fdc4fb51ef3882577d2b9737 100644 --- a/Geo/GModelIO_GEO.cpp +++ b/Geo/GModelIO_GEO.cpp @@ -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++){