diff --git a/Geo/Geo.cpp b/Geo/Geo.cpp index fa2d5b4507347c9130b3d039d93fd80339b1f3ab..17d15258b1f9bf4df5e483f6a827ad82253ddaf3 100644 --- a/Geo/Geo.cpp +++ b/Geo/Geo.cpp @@ -1236,10 +1236,16 @@ void VisibilityShape(int Type, int Num, int Mode) switch (Type) { case MSH_POINT: + case MSH_POINT_FROM_GMODEL: if((v = FindPoint(Num))) v->Visible = Mode; - else - Msg::Warning("Unknown point %d (use '*' to hide/show all points)", Num); + else{ + GVertex *gv = GModel::current()->getVertexByTag(Num); + if(gv) + gv->setVisibility(Mode); + else + Msg::Warning("Unknown point %d (use '*' to hide/show all points)", Num); + } break; case MSH_SEGM_LINE: case MSH_SEGM_SPLN: @@ -1251,26 +1257,44 @@ void VisibilityShape(int Type, int Num, int Mode) case MSH_SEGM_ELLI_INV: case MSH_SEGM_NURBS: case MSH_SEGM_DISCRETE: + case MSH_SEGM_FROM_GMODEL: if((c = FindCurve(Num))) c->Visible = Mode; - else - Msg::Warning("Unknown line %d (use '*' to hide/show all lines)", Num); + else{ + GEdge *ge = GModel::current()->getEdgeByTag(Num); + if(ge) + ge->setVisibility(Mode); + else + Msg::Warning("Unknown line %d (use '*' to hide/show all lines)", Num); + } break; case MSH_SURF_TRIC: case MSH_SURF_REGL: case MSH_SURF_PLAN: case MSH_SURF_DISCRETE: + case MSH_SURF_FROM_GMODEL: if((s = FindSurface(Num))) s->Visible = Mode; - else - Msg::Warning("Unknown surface %d (use '*' to hide/show all surfaces)", Num); + else{ + GFace *gf = GModel::current()->getFaceByTag(Num); + if(gf) + gf->setVisibility(Mode); + else + Msg::Warning("Unknown surface %d (use '*' to hide/show all surfaces)", Num); + } break; case MSH_VOLUME: case MSH_VOLUME_DISCRETE: + case MSH_VOLUME_FROM_GMODEL: if((V = FindVolume(Num))) V->Visible = Mode; - else - Msg::Warning("Unknown volume %d (use '*' to hide/show all volumes)", Num); + else{ + GRegion *gr = GModel::current()->getRegionByTag(Num); + if(gr) + gr->setVisibility(Mode); + else + Msg::Warning("Unknown volume %d (use '*' to hide/show all volumes)", Num); + } break; default: break; @@ -1289,10 +1313,30 @@ void VisibilityShape(char *str, int Type, int Mode) if(!strcmp(str, "all") || !strcmp(str, "*")) { switch (Type) { - case 0: Tree_Action(GModel::current()->getGEOInternals()->Points, vis_nod); break; - case 1: Tree_Action(GModel::current()->getGEOInternals()->Curves, vis_cur); break; - case 2: Tree_Action(GModel::current()->getGEOInternals()->Surfaces, vis_sur); break; - case 3: Tree_Action(GModel::current()->getGEOInternals()->Volumes, vis_vol); break; + case 0: + Tree_Action(GModel::current()->getGEOInternals()->Points, vis_nod); + for(GModel::viter it = GModel::current()->firstVertex(); + it != GModel::current()->lastVertex(); it++) + (*it)->setVisibility(Mode); + break; + case 1: + Tree_Action(GModel::current()->getGEOInternals()->Curves, vis_cur); + for(GModel::eiter it = GModel::current()->firstEdge(); + it != GModel::current()->lastEdge(); it++) + (*it)->setVisibility(Mode); + break; + case 2: + Tree_Action(GModel::current()->getGEOInternals()->Surfaces, vis_sur); + for(GModel::fiter it = GModel::current()->firstFace(); + it != GModel::current()->lastFace(); it++) + (*it)->setVisibility(Mode); + break; + case 3: + Tree_Action(GModel::current()->getGEOInternals()->Volumes, vis_vol); + for(GModel::riter it = GModel::current()->firstRegion(); + it != GModel::current()->lastRegion(); it++) + (*it)->setVisibility(Mode); + break; } } else {