diff --git a/Geo/GModel.cpp b/Geo/GModel.cpp index ef1d3af007046028465fa32d1325da2c8ed93fa4..772ac25ea604daa2ce2b82b6280640bca389113a 100644 --- a/Geo/GModel.cpp +++ b/Geo/GModel.cpp @@ -742,16 +742,22 @@ SBoundingBox3d GModel::bounds(bool aroundVisible) { std::vector<GEntity*> entities; getEntities(entities); - // using the mesh vertices for now; should use entities[i]->bounds() instead SBoundingBox3d bb; - for(unsigned int i = 0; i < entities.size(); i++) + for(unsigned int i = 0; i < entities.size(); i++){ if(!aroundVisible || entities[i]->getVisibility()){ - if(entities[i]->dim() == 0) - bb += static_cast<GVertex*>(entities[i])->xyz(); - else - for(unsigned int j = 0; j < entities[i]->mesh_vertices.size(); j++) - bb += entities[i]->mesh_vertices[j]->point(); + if(entities[i]->getNativeType() == GEntity::OpenCascadeModel){ + bb += entities[i]->bounds(); + } + else{ + // using the mesh vertices for now + if(entities[i]->dim() == 0) + bb += static_cast<GVertex*>(entities[i])->xyz(); + else + for(unsigned int j = 0; j < entities[i]->mesh_vertices.size(); j++) + bb += entities[i]->mesh_vertices[j]->point(); + } } + } return bb; }