Skip to content
Snippets Groups Projects
Select Git revision
  • b8ebf2892715aafe7496f190e8d2fc962e2b0296
  • master default
  • cgnsUnstructured
  • partitioning
  • poppler
  • HighOrderBLCurving
  • gmsh_3_0_4
  • gmsh_3_0_3
  • gmsh_3_0_2
  • gmsh_3_0_1
  • gmsh_3_0_0
  • gmsh_2_16_0
  • gmsh_2_15_0
  • gmsh_2_14_1
  • gmsh_2_14_0
  • gmsh_2_13_2
  • gmsh_2_13_1
  • gmsh_2_12_0
  • gmsh_2_11_0
  • gmsh_2_10_1
  • gmsh_2_10_0
  • gmsh_2_9_3
  • gmsh_2_9_2
  • gmsh_2_9_1
  • gmsh_2_9_0
  • gmsh_2_8_6
26 results

GModel.cpp

Blame
  • Forked from gmsh / gmsh
    Source project has a limited visibility.
    • Thomas Boleman's avatar
      b8ebf289
      Some steps to a better usability with compounds. Improvements in drawing of... · b8ebf289
      Thomas Boleman authored
      Some steps to a better usability with compounds. Improvements in drawing of compounds: Edges of compounded surfaces in the CAD are hidden, only the collection of compounded surfaces is shown, the single surfaces are hidden. The draw command is called for the compound and then piped to the underlying surfaces. Can be controled with commandline parameter 'compound_only'. Further steps will follow in near future (high order meshes using compounds etc.).
      b8ebf289
      History
      Some steps to a better usability with compounds. Improvements in drawing of...
      Thomas Boleman authored
      Some steps to a better usability with compounds. Improvements in drawing of compounds: Edges of compounded surfaces in the CAD are hidden, only the collection of compounded surfaces is shown, the single surfaces are hidden. The draw command is called for the compound and then piped to the underlying surfaces. Can be controled with commandline parameter 'compound_only'. Further steps will follow in near future (high order meshes using compounds etc.).
    GEntity.cpp 2.98 KiB
    // Gmsh - Copyright (C) 1997-2016 C. Geuzaine, J.-F. Remacle
    //
    // See the LICENSE.txt file for license information. Please report all
    // bugs and problems to the public mailing list <gmsh@onelab.info>.
    
    #include <sstream>
    #include "GModel.h"
    #include "GEntity.h"
    #include "MElement.h"
    #include "VertexArray.h"
    #include "Context.h"
    #include "GVertex.h"
    #include "GEdge.h"
    #include "GFace.h"
    #include "GRegion.h"
    
    GEntity::GEntity(GModel *m,int t)
      : _model(m), _tag(t),_meshMaster(this),_visible(1), _selection(0),
        _allElementsVisible(1), _obb(0), va_lines(0), va_triangles(0)
    {
      _color = CTX::instance()->packColor(0, 0, 255, 0);
    }
    
    void GEntity::deleteVertexArrays()
    {
      if(va_lines) delete va_lines; va_lines = 0;
      if(va_triangles) delete va_triangles; va_triangles = 0;
    }
    
    char GEntity::getVisibility()
    {
      if(CTX::instance()->hideUnselected && !CTX::instance()->pickElements &&
         !getSelection() && geomType() != ProjectionFace)
        return false;
      return _visible;
    }
    
    bool GEntity::useColor()
    {
      int r = CTX::instance()->unpackRed(_color);
      int g = CTX::instance()->unpackGreen(_color);
      int b = CTX::instance()->unpackBlue(_color);
      int a = CTX::instance()->unpackAlpha(_color);
      if(r == 0 && g == 0 && b == 255 && a == 0)
        return false;
      return true;
    }
    
    std::string GEntity::getInfoString()
    {
      std::ostringstream sstream;
      sstream << getTypeString() << " " << tag();
    
      std::string info = getAdditionalInfoString();
      if(info.size()) sstream << " " << info;
    
      if(physicals.size()){
        sstream << " (Physical:";
        for(unsigned int i = 0; i < physicals.size(); i++)
          sstream << " " << physicals[i];
        sstream << ")";
      }
    
      return sstream.str();
    }
    
    GVertex *GEntity::cast2Vertex() { return dynamic_cast<GVertex*>(this); }
    GEdge *GEntity::cast2Edge() { return dynamic_cast<GEdge*>(this); }
    GFace *GEntity::cast2Face() { return dynamic_cast<GFace*>(this); }
    GRegion *GEntity::cast2Region() { return dynamic_cast<GRegion*>(this); }
    
    // sets the entity m from which the mesh will be copied
    void GEntity::setMeshMaster(GEntity* gMaster)
    {
      if (gMaster->dim() != dim()){
        Msg::Error("Model entity %d of dimension %d cannot"
                   "be the mesh master of entity %d of dimension %d",
                   gMaster->tag(),gMaster->dim(),tag(),dim());
        return;
      }
      _meshMaster = gMaster;
    }
    
    void GEntity::setMeshMaster(GEntity* gMaster,const std::vector<double>& tfo)
    {
      if (gMaster->dim() != dim()){
        Msg::Error("Model entity %d of dimension %d cannot"
                   "be the mesh master of entity %d of dimension %d",
                   gMaster->tag(),gMaster->dim(),tag(),dim());
        return;
      }
    
      if (tfo.size() != 16) {
        Msg::Error("Periodicity transformation from entity %d to %d (dim %d) has %d components"
                   ", while 16 are required",
                   gMaster->tag(),tag(),gMaster->dim(),tfo.size());
        return;
      }
    
      affineTransform = tfo;
      _meshMaster = gMaster;
    }
    
    // gets the entity from which the mesh will be copied
    GEntity* GEntity::meshMaster() const { return _meshMaster; }