Skip to content
Snippets Groups Projects
Select Git revision
  • 75775fc569f7789caed04ec753ff30a42b6e13ad
  • 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

GModelIO_OCC.cpp

Blame
  • Forked from gmsh / gmsh
    Source project has a limited visibility.
    GModelIO_OCC.cpp 14.88 KiB
    // $Id: GModelIO_OCC.cpp,v 1.24 2008-01-19 22:06:01 geuzaine Exp $
    //
    // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle
    //
    // This program is free software; you can redistribute it and/or modify
    // it under the terms of the GNU General Public License as published by
    // the Free Software Foundation; either version 2 of the License, or
    // (at your option) any later version.
    //
    // This program is distributed in the hope that it will be useful,
    // but WITHOUT ANY WARRANTY; without even the implied warranty of
    // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    // GNU General Public License for more details.
    //
    // You should have received a copy of the GNU General Public License
    // along with this program; if not, write to the Free Software
    // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
    // USA.
    // 
    // Please report all bugs and problems to <gmsh@geuz.org>.
    
    #include "GModelIO_OCC.h"
    #include "Message.h"
    #include "Context.h"
    #include "OCCVertex.h"
    #include "OCCEdge.h"
    #include "OCCFace.h"
    #include "OCCRegion.h"
    
    extern Context_T CTX;
    
    #if defined(HAVE_OCC)
    
    void OCC_Internals::buildLists()
    {
      TopExp_Explorer exp0, exp1, exp2, exp3, exp4, exp5;
      somap.Clear();
      shmap.Clear();
      fmap.Clear();
      wmap.Clear();
      emap.Clear();
      vmap.Clear();
      
      for(exp0.Init(shape, TopAbs_SOLID); exp0.More(); exp0.Next()){
        TopoDS_Solid solid = TopoDS::Solid(exp0.Current());
        if(somap.FindIndex(TopoDS::Solid(exp0.Current())) < 1){
          somap.Add(TopoDS::Solid(exp0.Current()));
    
          for(exp1.Init(exp0.Current(), TopAbs_SHELL); exp1.More(); exp1.Next()){
    	TopoDS_Shell shell = TopoDS::Shell(exp1.Current().Composed(exp0.Current().Orientation()));
    	if(shmap.FindIndex(shell) < 1){
    	  shmap.Add(shell);
    
    	  for(exp2.Init(shell, TopAbs_FACE); exp2.More(); exp2.Next()){
    	    TopoDS_Face face = TopoDS::Face(exp2.Current().Composed(shell.Orientation()));
    	    if(fmap.FindIndex(face) < 1){
    	      fmap.Add(face);
    
    	      for(exp3.Init(exp2.Current(), TopAbs_WIRE); exp3.More(); exp3.Next()){
    		TopoDS_Wire wire = TopoDS::Wire(exp3.Current().Composed(face.Orientation()));
    		if(wmap.FindIndex(wire) < 1){
    		  wmap.Add(wire);
    
    		  for(exp4.Init(exp3.Current(), TopAbs_EDGE); exp4.More(); exp4.Next()){
    		    TopoDS_Edge edge = TopoDS::Edge(exp4.Current().Composed(wire.Orientation()));
    		    if(emap.FindIndex(edge) < 1){
    		      emap.Add(edge);
    
    		      for(exp5.Init(exp4.Current(), TopAbs_VERTEX); exp5.More(); exp5.Next()){
    			TopoDS_Vertex vertex = TopoDS::Vertex(exp5.Current());