X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FNETGENPlugin%2FNETGENPluginBuilder.py;h=3c851e6f8f82555dd0918d2384a08234f2016741;hb=63eaf4f39688cc3646ca786493a6fc460c9bf7b0;hp=5cb5758c6cef67cd9699ba954ee00979ea0b7ce2;hpb=5764dd74c2c8f25c28fd2910da504a27d1bef531;p=plugins%2Fnetgenplugin.git diff --git a/src/NETGENPlugin/NETGENPluginBuilder.py b/src/NETGENPlugin/NETGENPluginBuilder.py index 5cb5758..3c851e6 100644 --- a/src/NETGENPlugin/NETGENPluginBuilder.py +++ b/src/NETGENPlugin/NETGENPluginBuilder.py @@ -1,9 +1,9 @@ -# Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either -# version 2.1 of the License. +# version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -32,6 +32,8 @@ except ImportError: noNETGENPlugin = 1 pass +LIBRARY = "libNETGENEngine.so" + #---------------------------- # Mesh algo type identifiers #---------------------------- @@ -103,8 +105,12 @@ class NETGEN_Algorithm(Mesh_Algorithm): # if it is @c 0 (default), the algorithm is assigned to the main shape def __init__(self, mesh, geom=0): Mesh_Algorithm.__init__(self) - if noNETGENPlugin: print "Warning: NETGENPlugin module unavailable" - self.Create(mesh, geom, self.algoType, "libNETGENEngine.so") + if noNETGENPlugin: print("Warning: NETGENPlugin module unavailable") + if not mesh.GetMesh().HasShapeToMesh() and \ + self.meshMethod == "Triangle": # create a 2D remesher + self.Create(mesh, geom, "NETGEN_Remesher_2D", LIBRARY) + else: + self.Create(mesh, geom, self.algoType, LIBRARY) self.params = None pass @@ -159,20 +165,37 @@ class NETGEN_Algorithm(Mesh_Algorithm): else: hypType = "NETGEN_Parameters_3D" + if self.algo.GetName() == "NETGEN_Remesher_2D": + hypType = "NETGEN_RemesherParameters_2D" + if self.params and self.params.GetName() != hypType: self.mesh.RemoveHypothesis( self.params, self.geom ) self.params = None if not self.params: - self.params = self.Hypothesis(hypType, [],"libNETGENEngine.so",UseExisting=0) + self.params = self.Hypothesis(hypType, [], LIBRARY, UseExisting=0) return self.params + ## Defines a file specifying size of elements at points and lines + # @param file name of the file + def SetMeshSizeFile(self, file): + self.Parameters().SetMeshSizeFile(file) + pass + + ## Set size of elements on a shape + # @param shape - geometry + # @param size - element size + def SetLocalSizeOnShape(self, shape, size ): + self.Parameters().SetLocalSizeOnShape(shape, size) + pass + + pass # end of NETGEN_Algorithm class ## Tetrahedron 1D-2D-3D algorithm. # -# It can be created by calling smeshBuilder.Mesh.Tetrahedron( smesh.NETGEN_1D2D3D, geom=0 ). +# It can be created by calling smeshBuilder.Mesh.Tetrahedron( smeshBuilder.NETGEN_1D2D3D, geom=0 ). # This algorithm generates all 1D (edges), 2D (faces) and 3D (volumes) elements # for given geometrical shape. class NETGEN_1D2D3D_Algorithm(NETGEN_Algorithm): @@ -213,11 +236,36 @@ class NETGEN_1D2D3D_Algorithm(NETGEN_Algorithm): if self.Parameters(): self.params.SetNbSegPerRadius(theVal) pass + ## Sets @c ChordalError parameter + # @param theVal new value of the @c ChordalError parameter + def SetChordalError(self, theVal): + if self.Parameters(): + self.params.SetChordalError(theVal) + self.params.SetChordalErrorEnabled( theVal > 0 ) + pass + + ## Sets @c RidgeAngle parameter + # @param theVal new value of the @c RidgeAngle parameter + def SetRidgeAngle(self, theVal): + if self.Parameters(): + self.params.SetRidgeAngle(theVal) + pass + ## Sets @c QuadAllowed flag # @param toAllow new value of the @c QuadAllowed parameter (@c True by default) def SetQuadAllowed(self, toAllow=True): if self.Parameters(): self.params.SetQuadAllowed(toAllow) pass + ## Sets @c UseSurfaceCurvature flag + # @param toUse new value of the @c UseSurfaceCurvature parameter (@c True by default) + def SetUseSurfaceCurvature(self, toUse=True): + if self.Parameters(): self.params.SetUseSurfaceCurvature(toUse) + pass + ## Sets @c FuseEdges flag + # @param toFuse new value of the @c FuseEdges parameter (@c False by default) + def SetFuseEdges(self, toFuse=False): + if self.Parameters(): self.params.SetFuseEdges(toFuse) + pass ## Sets number of segments overriding the value set by SetLocalLength() # @param theVal new value of number of segments parameter @@ -262,7 +310,7 @@ class NETGEN_1D2D3D_Algorithm(NETGEN_Algorithm): ## Triangle NETGEN 1D-2D algorithm. # -# It can be created by calling smeshBuilder.Mesh.Triangle( smesh.NETGEN_1D2D, geom=0 ) +# It can be created by calling smeshBuilder.Mesh.Triangle( smeshBuilder.NETGEN_1D2D, geom=0 ) # # This algorithm generates 1D (edges) and 2D (faces) elements # for given geometrical shape. @@ -291,7 +339,7 @@ class NETGEN_1D2D_Algorithm(NETGEN_1D2D3D_Algorithm): ## Triangle NETGEN 2D algorithm # -# It can be created by calling smeshBuilder.Mesh.Triangle( smesh.NETGEN_2D, geom=0 ) +# It can be created by calling smeshBuilder.Mesh.Triangle( smeshBuilder.NETGEN_2D, geom=0 ) # # This algorithm generates only 2D (faces) elements for given geometrical shape # and, in contrast to NETGEN_1D2D_Algorithm class, should be used in conjunction @@ -335,6 +383,12 @@ class NETGEN_2D_Only_Algorithm(NETGEN_Algorithm): def LengthFromEdges(self): hyp = self.Hypothesis("LengthFromEdges", UseExisting=1, CompareMethod=self.CompareEqualHyp) return hyp + + ## Sets @c UseSurfaceCurvature flag + # @param toUse new value of the @c UseSurfaceCurvature parameter (@c True by default) + def SetUseSurfaceCurvature(self, toUse=True): + if self.Parameters(): self.params.SetUseSurfaceCurvature(toUse) + pass ## Sets @c QuadAllowed flag. # @param toAllow new value of the @c QuadAllowed parameter (@c True by default) @@ -368,7 +422,7 @@ class NETGEN_2D_Only_Algorithm(NETGEN_Algorithm): ## Tetrahedron 3D algorithm # -# It can be created by calling smeshBuilder.Mesh.Tetrahedron() or smeshBuilder.Mesh.Tetrahedron( smesh.NETGEN, geom=0 ) +# It can be created by calling smeshBuilder.Mesh.Tetrahedron() or smeshBuilder.Mesh.Tetrahedron( smeshBuilder.NETGEN, geom=0 ) # # This algorithm generates only 3D (volumes) elements for given geometrical shape # and, in contrast to NETGEN_1D2D3D_Algorithm class, should be used in conjunction @@ -415,11 +469,11 @@ class NETGEN_3D_Algorithm(NETGEN_Algorithm): ## Triangle (helper) 1D-2D algorithm # # This is the helper class that is used just to allow creating of create NETGEN_1D2D algorithm -# by calling smeshBuilder.Mesh.Triangle( smesh.NETGEN, geom=0 ); this is required for backward compatibility +# by calling smeshBuilder.Mesh.Triangle( smeshBuilder.NETGEN, geom=0 ); this is required for backward compatibility # with old Python scripts. # # @note This class (and corresponding smeshBuilder.Mesh function) is obsolete; -# use smeshBuilder.Mesh.Triangle( smesh.NETGEN_1D2D, geom=0 ) instead. +# use smeshBuilder.Mesh.Triangle( smeshBuilder.NETGEN_1D2D, geom=0 ) instead. class NETGEN_1D2D_Algorithm_2(NETGEN_1D2D_Algorithm): ## name of the dynamic method in smeshBuilder.Mesh class @@ -444,7 +498,7 @@ class NETGEN_1D2D_Algorithm_2(NETGEN_1D2D_Algorithm): # by calling smeshBuilder.Mesh.Netgen(); this is required for backward compatibility with old Python scripts. # # @note This class (and corresponding smeshBuilder.Mesh function) is obsolete; -# use smeshBuilder.Mesh.Tetrahedron( smesh.NETGEN_1D2D3D, geom=0 ) instead. +# use smeshBuilder.Mesh.Tetrahedron( smeshBuilder.NETGEN_1D2D3D, geom=0 ) instead. class NETGEN_1D2D3D_Algorithm_2(NETGEN_1D2D3D_Algorithm): ## name of the dynamic method in smeshBuilder.Mesh class