diff --git a/Geo/CAD.cpp b/Geo/CAD.cpp index 82af487149a43c1978ed7498302ae135aaf331e7..88b7fd820e816336cc3187b5ff6fc6af69b5d3e1 100644 --- a/Geo/CAD.cpp +++ b/Geo/CAD.cpp @@ -1,4 +1,4 @@ -// $Id: CAD.cpp,v 1.40 2001-11-12 14:18:17 geuzaine Exp $ +// $Id: CAD.cpp,v 1.41 2001-11-12 15:29:39 geuzaine Exp $ #include "Gmsh.h" #include "Numeric.h" @@ -1305,8 +1305,8 @@ void ReplaceDuplicatePoints(Mesh *m){ /* Create unique points */ start = Tree_Nbr(m->Points); - All = Tree2List(m->Points); + All = Tree2List(m->Points); allNonDulpicatedPoints = Tree_Create(sizeof(Vertex*),comparePosition); for(i=0;i<List_Nbr(All);i++){ List_Read(All,i,&v); @@ -1316,14 +1316,21 @@ void ReplaceDuplicatePoints(Mesh *m){ else{ Tree_Suppress(m->Points,&v); Tree_Suppress(m->Vertices,&v); - // List_Add(points2delete,&v); + //List_Add(points2delete,&v); } } - List_Delete(All); end = Tree_Nbr(m->Points); - if(start-end) Msg(DEBUG, "Removed %d duplicate points", start-end); + + if(start == end){ + Tree_Delete(allNonDulpicatedPoints); + List_Delete(points2delete); + return; + } + + Msg(DEBUG, "Removed %d duplicate points", start-end); + if(CTX.geom.old_newreg){ m->MaxPointNum=0; Tree_Action(m->Points,MaxNumPoint); @@ -1333,7 +1340,6 @@ void ReplaceDuplicatePoints(Mesh *m){ /* Replace old points in curves */ All = Tree2List(m->Curves); - for(i=0;i<List_Nbr(All);i++){ List_Read(All,i,&c); Tree_Query(allNonDulpicatedPoints,&c->beg); @@ -1357,7 +1363,6 @@ void ReplaceDuplicatePoints(Mesh *m){ List_Pointer(s->Control_Points,j))); } } - List_Delete(All); for(int k = 0; k < List_Nbr(points2delete);k++){ @@ -1365,6 +1370,9 @@ void ReplaceDuplicatePoints(Mesh *m){ Free_Vertex(&v,0); } + Tree_Delete(allNonDulpicatedPoints); + List_Delete(points2delete); + } void ReplaceDuplicateCurves(Mesh *m){ @@ -1377,8 +1385,8 @@ void ReplaceDuplicateCurves(Mesh *m){ /* Create unique curves */ start = Tree_Nbr(m->Curves); - All = Tree2List(m->Curves); + All = Tree2List(m->Curves); allNonDulpicatedCurves = Tree_Create(sizeof(Curve*),compareTwoCurves); for(i=0;i<List_Nbr(All);i++){ List_Read(All,i,&c); @@ -1403,12 +1411,17 @@ void ReplaceDuplicateCurves(Mesh *m){ } } } - List_Delete(All); end = Tree_Nbr(m->Curves); - if(start-end) Msg(DEBUG, "Removed %d duplicate curves", start-end); + if(start == end){ + Tree_Delete(allNonDulpicatedCurves); + return; + } + + Msg(DEBUG, "Removed %d duplicate curves", start-end); + if(CTX.geom.old_newreg){ m->MaxLineNum=0; Tree_Action(m->Curves,MaxNumCurve); @@ -1427,7 +1440,9 @@ void ReplaceDuplicateCurves(Mesh *m){ End_Curve(*(Curve**)List_Pointer(s->Generatrices,j)); } } + List_Delete(All); + Tree_Delete(allNonDulpicatedCurves); } void ReplaceDuplicateSurfaces(Mesh *m){ @@ -1440,8 +1455,8 @@ void ReplaceDuplicateSurfaces(Mesh *m){ /* Create unique surfaces */ start = Tree_Nbr(m->Surfaces); + All = Tree2List(m->Surfaces); - allNonDulpicatedSurfaces = Tree_Create(sizeof(Curve*),compareTwoSurfaces); for(i=0;i<List_Nbr(All);i++){ List_Read(All,i,&s); @@ -1454,12 +1469,17 @@ void ReplaceDuplicateSurfaces(Mesh *m){ } } } - List_Delete(All); end = Tree_Nbr(m->Surfaces); - if(start-end) Msg(DEBUG, "Removed %d duplicate surfaces", start-end); + if(start == end){ + Tree_Delete(allNonDulpicatedSurfaces); + return; + } + + Msg(DEBUG, "Removed %d duplicate surfaces", start-end); + if(CTX.geom.old_newreg){ m->MaxSurfaceNum=0; Tree_Action(m->Surfaces,MaxNumSurface); @@ -1476,7 +1496,9 @@ void ReplaceDuplicateSurfaces(Mesh *m){ List_Pointer(vol->Surfaces,j))); } } + List_Delete(All); + Tree_Delete(allNonDulpicatedSurfaces); } void ReplaceAllDuplicates(Mesh *m){