]> SALOME platform Git repositories - plugins/hexoticplugin.git/commitdiff
Salome HOME
Merge from BR_plugins_pbyacs 03/04/2013
authorvsr <vsr@opencascade.com>
Thu, 4 Apr 2013 07:10:56 +0000 (07:10 +0000)
committervsr <vsr@opencascade.com>
Thu, 4 Apr 2013 07:10:56 +0000 (07:10 +0000)
17 files changed:
configure.ac
doc/salome/Makefile.am
doc/salome/examples/Makefile.am [new file with mode: 0644]
doc/salome/examples/hexoticdemo.py [new file with mode: 0644]
doc/salome/examples/hexoticsubdom1.py [new file with mode: 0644]
doc/salome/examples/hexoticsubdom2.py [new file with mode: 0644]
doc/salome/examples/hexoticsubdom3.py [new file with mode: 0644]
doc/salome/examples/hexoticsubdom4.py [new file with mode: 0644]
doc/salome/gui/HexoticPLUGIN/Makefile.am
doc/salome/gui/HexoticPLUGIN/doxyfile.in
doc/salome/gui/HexoticPLUGIN/doxyfile_py.in
doc/salome/gui/HexoticPLUGIN/input/hexoticplugin_python_interface.doc
resources/HexoticPLUGIN.xml
src/HexoticPlugin/HexoticPLUGINBuilder.py [new file with mode: 0644]
src/HexoticPlugin/HexoticPLUGINDC.py [deleted file]
src/HexoticPlugin/Makefile.am
src/HexoticPlugin/__init__.py [new file with mode: 0644]

index d65f17f79e37f1015f365c22626188c65994dadb..b68531fc679b8bb8542affdb790652cad6c913aa 100644 (file)
@@ -468,6 +468,7 @@ AC_OUTPUT([ \
   HexoticPLUGIN_version.h \
   doc/Makefile \
   doc/salome/Makefile \
+  doc/salome/examples/Makefile \
   doc/salome/gui/Makefile \
   doc/salome/gui/HexoticPLUGIN/Makefile \
   doc/salome/gui/HexoticPLUGIN/doxyfile \
index dc7addefb245c5fa8ce1ab5c69ed18eaded12995..ebdaae8903fb3eb045c14786350319c8bd7c2578 100644 (file)
@@ -23,7 +23,7 @@
 #  Modified by : Alexander BORODIN (OCN) - autotools usage
 # $Header:
 #
-SUBDIRS = gui
+SUBDIRS = examples gui
 SUBDIRSGUI = gui
 
 usr_docs:
diff --git a/doc/salome/examples/Makefile.am b/doc/salome/examples/Makefile.am
new file mode 100644 (file)
index 0000000..3c58122
--- /dev/null
@@ -0,0 +1,35 @@
+# Copyright (C) 2007-2013  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.
+#
+# This library 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+#  File   : Makefile
+#  Author : Alexander KOVALEV (Open Cascade NN)
+#  Modified by : 
+#  Module : doc
+#
+include $(top_srcdir)/adm_local/unix/make_common_starter.am
+
+pyexamplesdir = $(docdir)/examples/HexoticPLUGIN
+
+pyexamples_SCRIPTS = hexoticdemo.py \
+                    hexoticsubdom1.py \
+                    hexoticsubdom2.py \
+                    hexoticsubdom3.py \
+                    hexoticsubdom4.py
+                    
+EXTRA_DIST += $(pyexamples_SCRIPTS)
diff --git a/doc/salome/examples/hexoticdemo.py b/doc/salome/examples/hexoticdemo.py
new file mode 100644 (file)
index 0000000..188663b
--- /dev/null
@@ -0,0 +1,33 @@
+
+import salome
+salome.salome_init()
+import GEOM
+from salome.geom import geomBuilder
+geompy = geomBuilder.New(salome.myStudy)
+
+import SMESH, SALOMEDS
+from salome.smesh import smeshBuilder
+smesh =  smeshBuilder.New(salome.myStudy)
+
+
+# create a sphere
+sphere = geompy.MakeSphereR(100.)
+geompy.addToStudy(sphere, "sphere")
+
+# create a mesh on the sphere
+hexoticMesh = smesh.Mesh(sphere,"sphere: BLSurf and Hexotic mesh")
+
+# create a BLSurf algorithm for faces
+BLSURF = hexoticMesh.Triangle(algo=smeshBuilder.BLSURF)
+BLSURF.SetGeometricMesh( 1 )
+
+# create a Hexotic algorithm for volumes
+HEXOTIC = hexoticMesh.Hexahedron(algo=smeshBuilder.Hexotic)
+
+# compute the mesh
+hexoticMesh.Compute()
+
+# Change the level of subdivision
+HEXOTIC.SetMinMaxHexes(4, 8)
+
+# End of script
diff --git a/doc/salome/examples/hexoticsubdom1.py b/doc/salome/examples/hexoticsubdom1.py
new file mode 100644 (file)
index 0000000..6a1c343
--- /dev/null
@@ -0,0 +1,59 @@
+
+import salome
+salome.salome_init()
+import GEOM
+from salome.geom import geomBuilder
+geompy = geomBuilder.New(salome.myStudy)
+
+import SMESH, SALOMEDS
+from salome.smesh import smeshBuilder
+smesh =  smeshBuilder.New(salome.myStudy)
+
+
+# Create geometry: a box cut by a holed sphere
+Box_1 = geompy.MakeBoxDXDYDZ(200, 200, 200)
+Sphere_1 = geompy.MakeSphereR(75)
+Sphere_2 = geompy.MakeSphereR(25)
+geompy.TranslateDXDYDZ(Box_1, -100, -100, -100)
+Cut_1 = geompy.MakeCut(Sphere_1, Sphere_2)
+Cut_2 = geompy.MakeCut(Box_1, Cut_1)
+geompy.addToStudy( Box_1, 'Box_1' )
+geompy.addToStudy( Sphere_1, 'Sphere_1' )
+geompy.addToStudy( Sphere_2, 'Sphere_2' )
+geompy.addToStudy( Cut_1, 'Cut_1' )
+geompy.addToStudy( Cut_2, 'Cut_2' )
+
+# Create filters
+# aFilter1: elements inside small sphere
+aFilter1 = smesh.GetFilterFromCriteria([smesh.GetCriterion(SMESH.VOLUME,SMESH.FT_BelongToGeom,SMESH.FT_Undefined,Sphere_2)])
+# aFilter2: elements inside big sphere and not inside small sphere
+aFilter2 = smesh.GetFilterFromCriteria([smesh.GetCriterion(SMESH.VOLUME,SMESH.FT_BelongToGeom,SMESH.FT_Undefined,Sphere_1, SMESH.FT_LogicalAND),
+                                        smesh.GetCriterion(SMESH.VOLUME,SMESH.FT_BelongToGeom,SMESH.FT_Undefined,Sphere_2, SMESH.FT_LogicalNOT)])
+# aFilter3: elements not inside big sphere
+aFilter3 = smesh.GetFilterFromCriteria([smesh.GetCriterion(SMESH.VOLUME,SMESH.FT_BelongToGeom,SMESH.FT_Undefined,Sphere_1, SMESH.FT_LogicalNOT)])
+
+# Create mesh of Cut_2 with sd mode 1
+print "Create mesh of Cut_2 with sd mode 1"
+Mesh_hexotic_sd1 = smesh.Mesh(Cut_2, "Mesh_hexotic_sd1")
+
+# Create the 2D algo: BlSurf with geometrical mesh
+Mesh_hexotic_sd1.Triangle(algo=smeshBuilder.BLSURF).Parameters().SetGeometricMesh( 1 )
+
+# Create the 3D algo: Hexotic with:
+# - minl = 4
+# - maxl = 8
+# - sd = 1
+Mesh_hexotic_sd1.Hexahedron(algo=smeshBuilder.Hexotic).SetMinMaxHexes(4, 8).SetHexoticSdMode( 1 )
+
+# Create the groups on filters
+g1 = Mesh_hexotic_sd1.GroupOnFilter(SMESH.VOLUME, 'small sphere', aFilter1 )
+g1.SetColor( SALOMEDS.Color( 1, 0, 0 ))
+g2 = Mesh_hexotic_sd1.GroupOnFilter(SMESH.VOLUME, 'big sphere - small sphere', aFilter2 )
+g2.SetColor( SALOMEDS.Color( 0, 1, 0 ))
+g3 = Mesh_hexotic_sd1.GroupOnFilter(SMESH.VOLUME, 'box - big sphere', aFilter3 )
+g3.SetColor( SALOMEDS.Color( 0, 0, 1 ))
+
+# Compute
+Mesh_hexotic_sd1.Compute()
+
+# End of script
diff --git a/doc/salome/examples/hexoticsubdom2.py b/doc/salome/examples/hexoticsubdom2.py
new file mode 100644 (file)
index 0000000..58c22b4
--- /dev/null
@@ -0,0 +1,59 @@
+
+import salome
+salome.salome_init()
+import GEOM
+from salome.geom import geomBuilder
+geompy = geomBuilder.New(salome.myStudy)
+
+import SMESH, SALOMEDS
+from salome.smesh import smeshBuilder
+smesh =  smeshBuilder.New(salome.myStudy)
+
+# Create geometry: a box cut by a holed sphere
+Box_1 = geompy.MakeBoxDXDYDZ(200, 200, 200)
+Sphere_1 = geompy.MakeSphereR(75)
+Sphere_2 = geompy.MakeSphereR(25)
+geompy.TranslateDXDYDZ(Box_1, -100, -100, -100)
+Cut_1 = geompy.MakeCut(Sphere_1, Sphere_2)
+Cut_2 = geompy.MakeCut(Box_1, Cut_1)
+geompy.addToStudy( Box_1, 'Box_1' )
+geompy.addToStudy( Sphere_1, 'Sphere_1' )
+geompy.addToStudy( Sphere_2, 'Sphere_2' )
+geompy.addToStudy( Cut_1, 'Cut_1' )
+geompy.addToStudy( Cut_2, 'Cut_2' )
+
+# Create filters
+# aFilter1: elements inside small sphere
+aFilter1 = smesh.GetFilterFromCriteria([smesh.GetCriterion(SMESH.VOLUME,SMESH.FT_BelongToGeom,SMESH.FT_Undefined,Sphere_2)])
+# aFilter2: elements inside big sphere and not inside small sphere
+aFilter2 = smesh.GetFilterFromCriteria([smesh.GetCriterion(SMESH.VOLUME,SMESH.FT_BelongToGeom,SMESH.FT_Undefined,Sphere_1, SMESH.FT_LogicalAND),
+                                        smesh.GetCriterion(SMESH.VOLUME,SMESH.FT_BelongToGeom,SMESH.FT_Undefined,Sphere_2, SMESH.FT_LogicalNOT)])
+# aFilter3: elements not inside big sphere
+aFilter3 = smesh.GetFilterFromCriteria([smesh.GetCriterion(SMESH.VOLUME,SMESH.FT_BelongToGeom,SMESH.FT_Undefined,Sphere_1, SMESH.FT_LogicalNOT)])
+
+# Create mesh of Cut_2 with sd mode 2
+print "Create mesh of Cut_2 with sd mode 2"
+Mesh_hexotic_sd2 = smesh.Mesh(Cut_2, "Mesh_hexotic_sd2")
+
+# Create the 2D algo: BlSurf with geometrical mesh
+Mesh_hexotic_sd2.Triangle(algo=smeshBuilder.BLSURF).Parameters().SetGeometricMesh( 1 )
+
+# Create the 3D algo: Hexotic with:
+# - minl = 4
+# - maxl = 8
+# - sd = 2
+Mesh_hexotic_sd2.Hexahedron(algo=smeshBuilder.Hexotic).SetMinMaxHexes(4, 8).SetHexoticSdMode( 2 )
+
+# Create the groups on filters
+g1 = Mesh_hexotic_sd2.GroupOnFilter(SMESH.VOLUME, 'small sphere', aFilter1 )
+g1.SetColor( SALOMEDS.Color( 1, 0, 0 ))
+g2 = Mesh_hexotic_sd2.GroupOnFilter(SMESH.VOLUME, 'big sphere - small sphere', aFilter2 )
+g2.SetColor( SALOMEDS.Color( 0, 1, 0 ))
+g3 = Mesh_hexotic_sd2.GroupOnFilter(SMESH.VOLUME, 'box - big sphere', aFilter3 )
+g3.SetColor( SALOMEDS.Color( 0, 0, 1 ))
+
+# Compute
+Mesh_hexotic_sd2.Compute()
+
+# End of script
+
diff --git a/doc/salome/examples/hexoticsubdom3.py b/doc/salome/examples/hexoticsubdom3.py
new file mode 100644 (file)
index 0000000..f5bbcd8
--- /dev/null
@@ -0,0 +1,59 @@
+
+import salome
+salome.salome_init()
+import GEOM
+from salome.geom import geomBuilder
+geompy = geomBuilder.New(salome.myStudy)
+
+import SMESH, SALOMEDS
+from salome.smesh import smeshBuilder
+smesh =  smeshBuilder.New(salome.myStudy)
+
+# Create geometry: a box cut by a holed sphere
+Box_1 = geompy.MakeBoxDXDYDZ(200, 200, 200)
+Sphere_1 = geompy.MakeSphereR(75)
+Sphere_2 = geompy.MakeSphereR(25)
+geompy.TranslateDXDYDZ(Box_1, -100, -100, -100)
+Cut_1 = geompy.MakeCut(Sphere_1, Sphere_2)
+Cut_2 = geompy.MakeCut(Box_1, Cut_1)
+geompy.addToStudy( Box_1, 'Box_1' )
+geompy.addToStudy( Sphere_1, 'Sphere_1' )
+geompy.addToStudy( Sphere_2, 'Sphere_2' )
+geompy.addToStudy( Cut_1, 'Cut_1' )
+geompy.addToStudy( Cut_2, 'Cut_2' )
+
+# Create filters
+# aFilter1: elements inside small sphere
+aFilter1 = smesh.GetFilterFromCriteria([smesh.GetCriterion(SMESH.VOLUME,SMESH.FT_BelongToGeom,SMESH.FT_Undefined,Sphere_2)])
+# aFilter2: elements inside big sphere and not inside small sphere
+aFilter2 = smesh.GetFilterFromCriteria([smesh.GetCriterion(SMESH.VOLUME,SMESH.FT_BelongToGeom,SMESH.FT_Undefined,Sphere_1, SMESH.FT_LogicalAND),
+                                        smesh.GetCriterion(SMESH.VOLUME,SMESH.FT_BelongToGeom,SMESH.FT_Undefined,Sphere_2, SMESH.FT_LogicalNOT)])
+# aFilter3: elements not inside big sphere
+aFilter3 = smesh.GetFilterFromCriteria([smesh.GetCriterion(SMESH.VOLUME,SMESH.FT_BelongToGeom,SMESH.FT_Undefined,Sphere_1, SMESH.FT_LogicalNOT)])
+
+# Create mesh of Cut_2 with sd mode 3
+print "Create mesh of Cut_2 with sd mode 3"
+Mesh_hexotic_sd3 = smesh.Mesh(Cut_2, "Mesh_hexotic_sd3")
+
+# Create the 2D algo: BlSurf with geometrical mesh
+Mesh_hexotic_sd3.Triangle(algo=smeshBuilder.BLSURF).Parameters().SetGeometricMesh( 1 )
+
+# Create the 3D algo: Hexotic with:
+# - minl = 4
+# - maxl = 8
+# - sd = 3
+Mesh_hexotic_sd3.Hexahedron(algo=smeshBuilder.Hexotic).SetMinMaxHexes(4, 8).SetHexoticSdMode( 3 )
+
+# Create the groups on filters
+g1 = Mesh_hexotic_sd3.GroupOnFilter(SMESH.VOLUME, 'small sphere', aFilter1 )
+g1.SetColor( SALOMEDS.Color( 1, 0, 0 ))
+g2 = Mesh_hexotic_sd3.GroupOnFilter(SMESH.VOLUME, 'big sphere - small sphere', aFilter2 )
+g2.SetColor( SALOMEDS.Color( 0, 1, 0 ))
+g3 = Mesh_hexotic_sd3.GroupOnFilter(SMESH.VOLUME, 'box - big sphere', aFilter3 )
+g3.SetColor( SALOMEDS.Color( 0, 0, 1 ))
+
+# Compute
+Mesh_hexotic_sd3.Compute()
+
+# End of script
+
diff --git a/doc/salome/examples/hexoticsubdom4.py b/doc/salome/examples/hexoticsubdom4.py
new file mode 100644 (file)
index 0000000..c238bc2
--- /dev/null
@@ -0,0 +1,28 @@
+
+import salome
+salome.salome_init()
+import GEOM
+from salome.geom import geomBuilder
+geompy = geomBuilder.New(salome.myStudy)
+
+import SMESH, SALOMEDS
+from salome.smesh import smeshBuilder
+smesh =  smeshBuilder.New(salome.myStudy)
+
+# Create geometry: a box cut by a plane
+Box_1 = geompy.MakeBoxDXDYDZ(200, 200, 200)
+Translation_1 = geompy.MakeTranslation(Box_1, 0, 200, 0)
+Partition_1 = geompy.MakePartition([Box_1, Translation_1], [], [], [], geompy.ShapeType["SOLID"], 0, [], 0)
+geompy.addToStudy( Box_1, 'Box_1' )
+geompy.addToStudy( Translation_1, 'Translation_1' )
+geompy.addToStudy( Partition_1, 'Partition_1' )
+
+# Create mesh of Partition_1 with sd mode 4 (default sd mode in SALOME)
+Mesh_hexotic_sd4 = smesh.Mesh(Partition_1, "Mesh_hexotic_sd4")
+Mesh_hexotic_sd4.Triangle(algo=smeshBuilder.BLSURF)
+Mesh_hexotic_sd4.Hexahedron(algo=smeshBuilder.Hexotic).SetMinMaxHexes(4, 8).SetHexoticSdMode( 4 )
+
+# Compute
+Mesh_hexotic_sd4.Compute()
+
+# End of script
index 6b672f8f5408fdd2e6dd4499c38833e4be1a814c..cbf39306b289b78b2f0bc94a55e1837256d4aa35 100755 (executable)
@@ -33,10 +33,7 @@ DOC_PYTHONPATH=$(prefix)/bin/salome:$(SMESH_ROOT_DIR)/bin/salome:$(SMESH_ROOT_DI
 DOC_LD_LIBRARY_PATH=$(prefix)/lib/salome:${SMESH_ROOT_DIR}/lib/salome:${MED_ROOT_DIR}/lib/salome:${GEOM_ROOT_DIR}/lib/salome:${KERNEL_ROOT_DIR}/lib/salome
 DOC_SMESH_MeshersList=HexoticPLUGIN
 
-smesh.py: $(top_srcdir)/src/HexoticPlugin/HexoticPLUGINDC.py
-       @PYTHONPATH=$(DOC_PYTHONPATH):${PYTHONPATH} LD_LIBRARY_PATH=$(DOC_LD_LIBRARY_PATH):${LD_LIBRARY_PATH} SMESH_MeshersList=$(DOC_SMESH_MeshersList) $(PYTHON) $(SMESH_ROOT_DIR)/bin/salome/collect_mesh_methods.py -d -o $@ HexoticPLUGIN
-
-usr_docs: doxyfile_py doxyfile smesh.py
+usr_docs: doxyfile_py doxyfile
        @$(DOXYGEN) doxyfile_py ; \
        $(DOXYGEN) doxyfile
 
index 23a50cc3bce9094ce6918b2e783e4abf89eddc35..1402ce559e09895792f745273f907facbbd690eb 100755 (executable)
@@ -39,7 +39,7 @@ INPUT             = @srcdir@/input
 FILE_PATTERNS     = *.doc
 EXCLUDE           = 
 IMAGE_PATH        = @srcdir@/images
-EXAMPLE_PATH      = 
+EXAMPLE_PATH      = @top_srcdir@/doc/salome/examples
 
 #---------------------------------------------------------------------------
 #HTML related options
@@ -77,4 +77,9 @@ GENERATE_RTF      = NO
 #rnv: 07.04.2011 Workaround for the doxygen 1.7.3:
 #because it wrongly defines location of the html files for search.
 TAGFILES          = hexoticpluginpy_doc.tag=../HexoticPLUGIN/hexoticpluginpy_doc
-SEARCHENGINE      = YES
\ No newline at end of file
+SEARCHENGINE      = YES
+
+#---------------------------------------------------------------------------
+#Custom commands
+#---------------------------------------------------------------------------
+ALIASES += tui_script{1}="\include \1 <a href=\"../../examples/HexoticPLUGIN/\1\">Download this script</a>"
index 89830112a66acb7514ced209740872ddd48b06d7..58d85f807f1747d9a0667be5abc7c21ceb82ec24 100755 (executable)
@@ -96,9 +96,9 @@ EXAMPLE_RECURSIVE      = NO
 #---------------------------------------------------------------------------
 #Input related options
 #---------------------------------------------------------------------------
-INPUT             = @top_srcdir@/src/HexoticPlugin/HexoticPLUGINDC.py \
-                    smesh.py \
-                   @SMESH_ROOT_DIR@/bin/salome/smesh_algorithm.py
+INPUT             = @top_srcdir@/src/HexoticPlugin/HexoticPLUGINBuilder.py \
+                    @SMESH_ROOT_DIR@/lib/python@PYTHON_VERSION@/site-packages/salome/salome/smesh/smeshBuilder.py \
+                    @SMESH_ROOT_DIR@/lib/python@PYTHON_VERSION@/site-packages/salome/salome/smesh/smesh_algorithm.py
 FILE_PATTERNS     = 
 IMAGE_PATH        = @srcdir@/images
 RECURSIVE         = NO
index 709680e287481567821f878eb1c25fd32817273a..6e1bc6dd7ad1d615c97cf442e168e6de4dec38c5 100644 (file)
@@ -2,7 +2,7 @@
 
 \page hexoticplugin_python_interface_page Python Interface
 
-Python package HexoticPLUGINDC defines several classes, destined for creation of the 3D meshes.
+Python package HexoticPLUGIN defines several classes, destined for creation of the 3D meshes.
 
 Hexotic meshing plugin dynamically adds several methods to the smesh.Mesh class to create meshing algorithms.
 
@@ -19,32 +19,8 @@ Below you can see an example of usage of the HexoticPlugin Python API for mesh g
 
 \section tui_hexotic_basic Construction of Mesh using Hexotic algorithm
 
-\code
-import geompy
-import smesh
-
-# create a sphere
-sphere = geompy.MakeSphereR(100.)
-geompy.addToStudy(sphere, "sphere")
-
-# create a mesh on the sphere
-hexoticMesh = smesh.Mesh(sphere,"sphere: BLSurf and Hexotic mesh")
-
-# create a BLSurf algorithm for faces
-BLSURF = hexoticMesh.Triangle(algo=smesh.BLSURF)
-BLSURF.SetGeometricMesh( 1 )
-
-# create a Hexotic algorithm for volumes
-HEXOTIC = hexoticMesh.Hexahedron(algo=smesh.Hexotic)
-
-# compute the mesh
-hexoticMesh.Compute()
-
-# Change the level of subdivision
-HEXOTIC.SetMinMaxHexes(4, 8)
-
-# End of script
-\endcode
+<h2>Example of mesh generation with Hexotic algorithm:</h2>
+\tui_script{hexoticdemo.py}
 
 \image html hexotic_basic_subdivisions_4_8.png Left: Hexotic mesh without hypothesis, right: Hexotic mesh with an hypothesis defined by minl=4 and maxl=8
 
@@ -56,59 +32,8 @@ This example illustrates the sub-domain mode of Hexotic.
 
 \subsection tui_hexotic_sd_mode1 Sub-domain mode = 1
 
-\code
-import SALOMEDS
-import geompy
-import smesh
-
-# Create geometry: a box cut by a holed sphere
-Box_1 = geompy.MakeBoxDXDYDZ(200, 200, 200)
-Sphere_1 = geompy.MakeSphereR(75)
-Sphere_2 = geompy.MakeSphereR(25)
-geompy.TranslateDXDYDZ(Box_1, -100, -100, -100)
-Cut_1 = geompy.MakeCut(Sphere_1, Sphere_2)
-Cut_2 = geompy.MakeCut(Box_1, Cut_1)
-geompy.addToStudy( Box_1, 'Box_1' )
-geompy.addToStudy( Sphere_1, 'Sphere_1' )
-geompy.addToStudy( Sphere_2, 'Sphere_2' )
-geompy.addToStudy( Cut_1, 'Cut_1' )
-geompy.addToStudy( Cut_2, 'Cut_2' )
-
-# Create filters
-# aFilter1: elements inside small sphere
-aFilter1 = smesh.GetFilterFromCriteria([smesh.GetCriterion(smesh.VOLUME,smesh.FT_BelongToGeom,smesh.FT_Undefined,Sphere_2)])
-# aFilter2: elements inside big sphere and not inside small sphere
-aFilter2 = smesh.GetFilterFromCriteria([smesh.GetCriterion(smesh.VOLUME,smesh.FT_BelongToGeom,smesh.FT_Undefined,Sphere_1, smesh.FT_LogicalAND),
-                                        smesh.GetCriterion(smesh.VOLUME,smesh.FT_BelongToGeom,smesh.FT_Undefined,Sphere_2, smesh.FT_LogicalNOT)])
-# aFilter3: elements not inside big sphere
-aFilter3 = smesh.GetFilterFromCriteria([smesh.GetCriterion(smesh.VOLUME,smesh.FT_BelongToGeom,smesh.FT_Undefined,Sphere_1, smesh.FT_LogicalNOT)])
-
-# Create mesh of Cut_2 with sd mode 1
-print "Create mesh of Cut_2 with sd mode 1"
-Mesh_hexotic_sd1 = smesh.Mesh(Cut_2, "Mesh_hexotic_sd1")
-
-# Create the 2D algo: BlSurf with geometrical mesh
-Mesh_hexotic_sd1.Triangle(algo=smesh.BLSURF).Parameters().SetGeometricMesh( 1 )
-
-# Create the 3D algo: Hexotic with:
-# - minl = 4
-# - maxl = 8
-# - sd = 1
-Mesh_hexotic_sd1.Hexahedron(algo=smesh.Hexotic).SetMinMaxHexes(4, 8).SetHexoticSdMode( 1 )
-
-# Create the groups on filters
-g1 = Mesh_hexotic_sd1.GroupOnFilter(smesh.VOLUME, 'small sphere', aFilter1 )
-g1.SetColor( SALOMEDS.Color( 1, 0, 0 ))
-g2 = Mesh_hexotic_sd1.GroupOnFilter(smesh.VOLUME, 'big sphere - small sphere', aFilter2 )
-g2.SetColor( SALOMEDS.Color( 0, 1, 0 ))
-g3 = Mesh_hexotic_sd1.GroupOnFilter(smesh.VOLUME, 'box - big sphere', aFilter3 )
-g3.SetColor( SALOMEDS.Color( 0, 0, 1 ))
-
-# Compute
-Mesh_hexotic_sd1.Compute()
-
-# End of script
-\endcode
+<h2>Example of sub-domain mode 1 with Hexotic algorithm:</h2>
+\tui_script{hexoticsubdom1.py}
 
 \image html hexotic_sd_mode_1.png Hexotic mesh of a box cut by a holed sphere ( sd = 1 )
 
@@ -116,34 +41,8 @@ Mesh_hexotic_sd1.Compute()
 
 \subsection tui_hexotic_sd_mode2 Sub-domain mode = 2
 
-\code
-
-# Create mesh of Cut_2 with sd mode 2
-print "Create mesh of Cut_2 with sd mode 2"
-Mesh_hexotic_sd2 = smesh.Mesh(Cut_2, "Mesh_hexotic_sd2")
-
-# Create the 2D algo: BlSurf with geometrical mesh
-Mesh_hexotic_sd2.Triangle(algo=smesh.BLSURF).Parameters().SetGeometricMesh( 1 )
-
-# Create the 3D algo: Hexotic with:
-# - minl = 4
-# - maxl = 8
-# - sd = 2
-Mesh_hexotic_sd2.Hexahedron(algo=smesh.Hexotic).SetMinMaxHexes(4, 8).SetHexoticSdMode( 2 )
-
-# Create the groups on filters
-g1 = Mesh_hexotic_sd2.GroupOnFilter(smesh.VOLUME, 'small sphere', aFilter1 )
-g1.SetColor( SALOMEDS.Color( 1, 0, 0 ))
-g2 = Mesh_hexotic_sd2.GroupOnFilter(smesh.VOLUME, 'big sphere - small sphere', aFilter2 )
-g2.SetColor( SALOMEDS.Color( 0, 1, 0 ))
-g3 = Mesh_hexotic_sd2.GroupOnFilter(smesh.VOLUME, 'box - big sphere', aFilter3 )
-g3.SetColor( SALOMEDS.Color( 0, 0, 1 ))
-
-# Compute
-Mesh_hexotic_sd2.Compute()
-
-# End of script
-\endcode
+<h2>Example of sub-domain mode 2 with Hexotic algorithm:</h2>
+\tui_script{hexoticsubdom2.py}
 
 \image html hexotic_sd_mode_2.png Hexotic mesh of a box cut by a holed sphere ( sd = 2 )
 
@@ -151,34 +50,8 @@ Mesh_hexotic_sd2.Compute()
 
 \subsection tui_hexotic_sd_mode3 Sub-domain mode = 3
 
-\code
-
-# Create mesh of Cut_2 with sd mode 3
-print "Create mesh of Cut_2 with sd mode 3"
-Mesh_hexotic_sd3 = smesh.Mesh(Cut_2, "Mesh_hexotic_sd3")
-
-# Create the 2D algo: BlSurf with geometrical mesh
-Mesh_hexotic_sd3.Triangle(algo=smesh.BLSURF).Parameters().SetGeometricMesh( 1 )
-
-# Create the 3D algo: Hexotic with:
-# - minl = 4
-# - maxl = 8
-# - sd = 3
-Mesh_hexotic_sd3.Hexahedron(algo=smesh.Hexotic).SetMinMaxHexes(4, 8).SetHexoticSdMode( 3 )
-
-# Create the groups on filters
-g1 = Mesh_hexotic_sd3.GroupOnFilter(smesh.VOLUME, 'small sphere', aFilter1 )
-g1.SetColor( SALOMEDS.Color( 1, 0, 0 ))
-g2 = Mesh_hexotic_sd3.GroupOnFilter(smesh.VOLUME, 'big sphere - small sphere', aFilter2 )
-g2.SetColor( SALOMEDS.Color( 0, 1, 0 ))
-g3 = Mesh_hexotic_sd3.GroupOnFilter(smesh.VOLUME, 'box - big sphere', aFilter3 )
-g3.SetColor( SALOMEDS.Color( 0, 0, 1 ))
-
-# Compute
-Mesh_hexotic_sd3.Compute()
-
-# End of script
-\endcode
+<h2>Example of sub-domain mode 3 with Hexotic algorithm:</h2>
+\tui_script{hexoticsubdom3.py}
 
 \image html hexotic_sd_mode_3.png Hexotic mesh of a box cut by a holed sphere ( sd = 3 )
 
@@ -186,26 +59,8 @@ Mesh_hexotic_sd3.Compute()
 
 \subsection tui_hexotic_sd_mode4 Sub-domain mode = 4
 
-\code
-
-# Create geometry: a box cut by a plane
-Box_1 = geompy.MakeBoxDXDYDZ(200, 200, 200)
-Translation_1 = geompy.MakeTranslation(Box_1, 0, 200, 0)
-Partition_1 = geompy.MakePartition([Box_1, Translation_1], [], [], [], geompy.ShapeType["SOLID"], 0, [], 0)
-geompy.addToStudy( Box_1, 'Box_1' )
-geompy.addToStudy( Translation_1, 'Translation_1' )
-geompy.addToStudy( Partition_1, 'Partition_1' )
-
-# Create mesh of Partition_1 with sd mode 4 (default sd mode in SALOME)
-Mesh_hexotic_sd4 = smesh.Mesh(Partition_1, "Mesh_hexotic_sd4")
-Mesh_hexotic_sd4.Triangle(algo=smesh.BLSURF)
-Mesh_hexotic_sd4.Hexahedron(algo=smesh.Hexotic).SetMinMaxHexes(4, 8).SetHexoticSdMode( 4 )
-
-# Compute
-Mesh_hexotic_sd4.Compute()
-
-# End of script
-\endcode
+<h2>Example of sub-domain mode 4 with Hexotic algorithm:</h2>
+\tui_script{hexoticsubdom4.py}
 
 \image html hexotic_sd_mode_4.png Hexotic mesh of a box cut by a plane ( On the left, sd = 3: the internal surface is ignored ; on the right sd = 4: all sub-domains are meshed )
 
index 5365eb17874378e47f5fad1527dd148f4bf32401..b6aa9078871f2207df8105213c3ff0c98c3c5a36 100644 (file)
@@ -45,7 +45,7 @@
                need-geom="false"
                dim="3">
       <python-wrap>
-        <algo>Hexotic_3D=Hexahedron(algo=smesh.Hexotic)</algo>
+        <algo>Hexotic_3D=Hexahedron(algo=smeshBuilder.Hexotic)</algo>
         <hypo>Hexotic_Parameters=Parameters()</hypo>
       </python-wrap>
     </algorithm>
diff --git a/src/HexoticPlugin/HexoticPLUGINBuilder.py b/src/HexoticPlugin/HexoticPLUGINBuilder.py
new file mode 100644 (file)
index 0000000..552658d
--- /dev/null
@@ -0,0 +1,109 @@
+# Copyright (C) 2007-2013  CEA/DEN, EDF R&D
+#
+# 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.
+#
+# This library 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+##
+# @package HexoticPLUGINBuilder
+# Python API for the Hexotic meshing plug-in module.
+
+from salome.smesh.smesh_algorithm import Mesh_Algorithm
+from salome.smesh.smeshBuilder import AssureGeomPublished
+
+# import HexoticPlugin module if possible
+noHexoticPlugin = 0
+try:
+    import HexoticPlugin
+except ImportError:
+    noHexoticPlugin = 1
+    pass
+
+#----------------------------
+# Mesh algo type identifiers
+#----------------------------
+
+## Algorithm type: Hexotic hexahedron 3D algorithm, see Hexotic_Algorithm
+Hexotic = "Hexotic_3D"
+
+#----------------------------
+# Algorithms
+#----------------------------
+
+## Defines a hexahedron 3D algorithm
+#
+#  It is created by calling smesh.Mesh.Hexahedron( smesh.Hexotic, geom=0 )
+class Hexotic_Algorithm(Mesh_Algorithm):
+
+    ## name of the dynamic method in smesh.Mesh class
+    #  @internal
+    meshMethod = "Hexahedron"
+    ## type of algorithm used with helper function in smesh.Mesh class
+    #  @internal
+    algoType   = Hexotic
+    ## doc string of the method in smesh.Mesh class
+    #  @internal
+    docHelper  = "Creates hexahedron 3D algorithm for volumes"
+
+    ## Private constructor.
+    #  @param mesh parent mesh object algorithm is assigned to
+    #  @param geom geometry (shape/sub-shape) algorithm is assigned to;
+    #              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 noHexoticPlugin: print "Warning: HexoticPlugin module unavailable"
+        self.Create(mesh, geom, Hexotic, "libHexoticEngine.so")
+        self.params = None
+        pass
+
+    ## Defines "SetMinMaxHexes" hypothesis to give two hexotic parameters
+    #  @param min minimal level of recursive partitioning on the initial octree cube
+    #  @param max maximal level of recursive partitioning on the initial octree cube
+    #  @return hypothesis object
+    def SetMinMaxHexes(self, min=3, max=8):
+        self.Parameters().SetHexesMinLevel(min)
+        self.Parameters().SetHexesMaxLevel(max)
+        return self.Parameters()
+
+    ## Defines "SetMinMaxSize" hypothesis to give two hexotic parameters
+    #  @param min minimal element's size
+    #  @param max maximal element's size
+    #  @return hypothesis object
+    def SetMinMaxSize(self, min, max):
+        self.Parameters().SetMinSize(min)
+        self.Parameters().SetMaxSize(max)
+        return self.Parameters()
+
+    ## (OBSOLETE) Defines "MinMaxQuad" hypothesis to give three hexotic parameters
+    #  @param min minimal level of recursive partitioning on the initial octree cube
+    #  @param max maximal level of recursive partitioning on the initial octree cube
+    #  @param quad not documented
+    #  @return hypothesis object
+    def MinMaxQuad(self, min=3, max=8, quad=True):
+        print "WARNING: Function MinMaxQuad is deprecated, use SetMinMaxHexes instead"
+        return self.SetMinMaxHexes(min, max)
+
+    ## Defines hypothesis having several parameters
+    #  @return hypothesis object
+    def Parameters(self):
+        if not self.params:
+            self.params = self.Hypothesis("Hexotic_Parameters", [],
+                                          "libHexoticEngine.so", UseExisting=0)
+            pass
+        return self.params
+
+
+    pass # end of Hexotic_Algorithm class
diff --git a/src/HexoticPlugin/HexoticPLUGINDC.py b/src/HexoticPlugin/HexoticPLUGINDC.py
deleted file mode 100644 (file)
index de7f9ea..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-# Copyright (C) 2007-2013  CEA/DEN, EDF R&D
-#
-# 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.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-#
-# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-#
-
-##
-# @package HexoticPLUGINDC
-# Python API for the Hexotic meshing plug-in module.
-
-from smesh_algorithm import Mesh_Algorithm
-from smesh import AssureGeomPublished
-
-# import HexoticPlugin module if possible
-noHexoticPlugin = 0
-try:
-    import HexoticPlugin
-except ImportError:
-    noHexoticPlugin = 1
-    pass
-
-#----------------------------
-# Mesh algo type identifiers
-#----------------------------
-
-## Algorithm type: Hexotic hexahedron 3D algorithm, see Hexotic_Algorithm
-Hexotic = "Hexotic_3D"
-
-#----------------------------
-# Algorithms
-#----------------------------
-
-## Defines a hexahedron 3D algorithm
-#
-#  It is created by calling smesh.Mesh.Hexahedron( smesh.Hexotic, geom=0 )
-class Hexotic_Algorithm(Mesh_Algorithm):
-
-    ## name of the dynamic method in smesh.Mesh class
-    #  @internal
-    meshMethod = "Hexahedron"
-    ## type of algorithm used with helper function in smesh.Mesh class
-    #  @internal
-    algoType   = Hexotic
-    ## doc string of the method in smesh.Mesh class
-    #  @internal
-    docHelper  = "Creates hexahedron 3D algorithm for volumes"
-
-    ## Private constructor.
-    #  @param mesh parent mesh object algorithm is assigned to
-    #  @param geom geometry (shape/sub-shape) algorithm is assigned to;
-    #              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 noHexoticPlugin: print "Warning: HexoticPlugin module unavailable"
-        self.Create(mesh, geom, Hexotic, "libHexoticEngine.so")
-        self.params = None
-        pass
-
-    ## Defines "SetMinMaxHexes" hypothesis to give two hexotic parameters
-    #  @param min minimal level of recursive partitioning on the initial octree cube
-    #  @param max maximal level of recursive partitioning on the initial octree cube
-    #  @return hypothesis object
-    def SetMinMaxHexes(self, min=3, max=8):
-        self.Parameters().SetHexesMinLevel(min)
-        self.Parameters().SetHexesMaxLevel(max)
-        return self.Parameters()
-
-    ## Defines "SetMinMaxSize" hypothesis to give two hexotic parameters
-    #  @param min minimal element's size
-    #  @param max maximal element's size
-    #  @return hypothesis object
-    def SetMinMaxSize(self, min, max):
-        self.Parameters().SetMinSize(min)
-        self.Parameters().SetMaxSize(max)
-        return self.Parameters()
-
-    ## (OBSOLETE) Defines "MinMaxQuad" hypothesis to give three hexotic parameters
-    #  @param min minimal level of recursive partitioning on the initial octree cube
-    #  @param max maximal level of recursive partitioning on the initial octree cube
-    #  @param quad not documented
-    #  @return hypothesis object
-    def MinMaxQuad(self, min=3, max=8, quad=True):
-        print "WARNING: Function MinMaxQuad is deprecated, use SetMinMaxHexes instead"
-        return self.SetMinMaxHexes(min, max)
-
-    ## Defines hypothesis having several parameters
-    #  @return hypothesis object
-    def Parameters(self):
-        if not self.params:
-            self.params = self.Hypothesis("Hexotic_Parameters", [],
-                                          "libHexoticEngine.so", UseExisting=0)
-            pass
-        return self.params
-
-
-    pass # end of Hexotic_Algorithm class
index c6b09df62e6ddf6d7c12f935ac1062fc65136e7f..38cadab7d8bb4585a02a8f2af1a4ce6277000ffa 100644 (file)
@@ -64,5 +64,8 @@ libHexoticEngine_la_LDFLAGS  =                        \
        $(BLSURFPLUGIN_LDFLAGS)
 
 # Scripts to be installed.
-dist_salomescript_DATA=HexoticPLUGINDC.py
-
+#dist_salomescript_DATA=HexoticPLUGINDC.py
+mypkgpythondir = $(salomepythondir)/salome/HexoticPLUGIN
+mypkgpython_PYTHON = \
+       __init__.py \
+       HexoticPLUGINBuilder.py
diff --git a/src/HexoticPlugin/__init__.py b/src/HexoticPlugin/__init__.py
new file mode 100644 (file)
index 0000000..c41cf58
--- /dev/null
@@ -0,0 +1,22 @@
+# Copyright (C) 2007-2013  CEA/DEN, EDF R&D
+#
+# 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.
+#
+# This library 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+##
+# @package HexoticPluginBuilder
+# Python API for the Hexotic meshing plug-in module.