From: Gérald NICOLAS Date: Mon, 9 Jan 2023 17:02:29 +0000 (+0100) Subject: fibre neutre - début X-Git-Tag: V9_12_0a1~16^2~32^2~46 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=df0a9f95933f204758dcecdfb18b79e5564dad8d;p=modules%2Fshaper.git fibre neutre - début --- diff --git a/src/PythonAddons/PythonAddons_msg_en.ts b/src/PythonAddons/PythonAddons_msg_en.ts index 2c39004e3..2e37fcc48 100644 --- a/src/PythonAddons/PythonAddons_msg_en.ts +++ b/src/PythonAddons/PythonAddons_msg_en.ts @@ -63,6 +63,30 @@ + + + midSurface + + Fibre neutre + Create midsurfaces + + + Create + Create midsurfaces + + + + midSurface:file_path + + Import file + CAD file of the object + + + Select file + Select the CAD file of the object + + + pipeNetwork diff --git a/src/PythonAddons/PythonAddons_msg_fr.ts b/src/PythonAddons/PythonAddons_msg_fr.ts index 01cebfc99..55b68ef3f 100644 --- a/src/PythonAddons/PythonAddons_msg_fr.ts +++ b/src/PythonAddons/PythonAddons_msg_fr.ts @@ -63,6 +63,30 @@ + + + midSurface + + Fibre neutre + Créer des fibres neutres + + + Create + Créer des fibres neutres + + + + midSurface:file_path + + Import file + Fichier CAO de l'objet à traiter + + + Select file + Choisir le fichier de type CAO contenant l'objet à traiter + + + pipeNetwork diff --git a/src/PythonAddons/Test/TestmidSurface.py b/src/PythonAddons/Test/TestmidSurface.py new file mode 100755 index 000000000..9eed4741d --- /dev/null +++ b/src/PythonAddons/Test/TestmidSurface.py @@ -0,0 +1,52 @@ +# Copyright (C) 2014-2021 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, 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 +# 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 +# +"""Test de la création de surfaces médianes""" + +__revision__ = "V01.03" + +import os + +from ModelAPI import * + +aSession = ModelAPI_Session.get() + +def getFilePath(fileName): + """Le fichier décrivant l'objet""" + path = os.path.join(os.getenv("SHAPER_ROOT_DIR"), "bin", "salome", "macros", "midSurface") + return os.path.join(path, fileName) + +theFile = getFilePath("midSurface.stp") +theFile = getFilePath("Objet_1.stp") + +aSession.startOperation("Create part for mid surface") +aPartFeature = aSession.moduleDocument().addFeature("Part") +aSession.finishOperation() +aPart = aSession.activeDocument() + +aSession.startOperation("Import file") +aFeatureKind = "midSurface" +anImportFeature = aPart.addFeature(aFeatureKind) +aFieldName = "file_path" +aFile = anImportFeature.string(aFieldName) +aFile.setValue(theFile) +aSession.finishOperation() + +#print ("Nombre de dossiers : {}".format(aPart.size("Folders"))) + +assert(aPart.size("Folders") == 1), "Wrong number of folders: {}".format(aPart.size("Folders")) diff --git a/src/PythonAddons/addons_Features.py b/src/PythonAddons/addons_Features.py index c1401c62e..8b7103556 100755 --- a/src/PythonAddons/addons_Features.py +++ b/src/PythonAddons/addons_Features.py @@ -23,6 +23,7 @@ import ModelAPI from macros.rectangle.feature import SketchPlugin_Rectangle from macros.compoundVertices.feature import compoundVertices from macros.importParameters.feature import importParameters +from macros.midSurface.feature import midSurface from macros.pipeNetwork.feature import pipeNetwork @@ -49,6 +50,8 @@ class PythonFeaturesPlugin(ModelAPI.ModelAPI_Plugin): aFeature = compoundVertices().__disown__() elif theFeatureID == importParameters.ID(): aFeature = importParameters().__disown__() + elif theFeatureID == midSurface.ID(): + aFeature = midSurface().__disown__() elif theFeatureID == pipeNetwork.ID(): aFeature = pipeNetwork().__disown__() else: diff --git a/src/PythonAddons/addons_Features.xml.in b/src/PythonAddons/addons_Features.xml.in index a164800b9..0fdf1ea08 100644 --- a/src/PythonAddons/addons_Features.xml.in +++ b/src/PythonAddons/addons_Features.xml.in @@ -2,5 +2,6 @@ + diff --git a/src/PythonAddons/doc/addons_Features.rst b/src/PythonAddons/doc/addons_Features.rst index aa463c383..6144313e8 100644 --- a/src/PythonAddons/doc/addons_Features.rst +++ b/src/PythonAddons/doc/addons_Features.rst @@ -1,4 +1,3 @@ - Python addons ============= @@ -19,7 +18,8 @@ Some examples of already created custom features are: :titlesonly: :maxdepth: 1 - rectangleFeature.rst compoundVerticesFeature.rst importParametersFeature.rst + midSurfaceFeature.rst + rectangleFeature.rst pipeNetworkFeature.rst diff --git a/src/PythonAddons/doc/images/midSurface.png b/src/PythonAddons/doc/images/midSurface.png new file mode 120000 index 000000000..83c484824 --- /dev/null +++ b/src/PythonAddons/doc/images/midSurface.png @@ -0,0 +1 @@ +../../macros/midSurface/icons/midSurface.png \ No newline at end of file diff --git a/src/PythonAddons/doc/images/midSurfacePanel.png b/src/PythonAddons/doc/images/midSurfacePanel.png new file mode 100644 index 000000000..91e15d2c0 Binary files /dev/null and b/src/PythonAddons/doc/images/midSurfacePanel.png differ diff --git a/src/PythonAddons/doc/images/midSurface_solide.png b/src/PythonAddons/doc/images/midSurface_solide.png new file mode 100644 index 000000000..be6756436 Binary files /dev/null and b/src/PythonAddons/doc/images/midSurface_solide.png differ diff --git a/src/PythonAddons/doc/images/midSurface_solide_surfaces.png b/src/PythonAddons/doc/images/midSurface_solide_surfaces.png new file mode 100644 index 000000000..47ca26ed7 Binary files /dev/null and b/src/PythonAddons/doc/images/midSurface_solide_surfaces.png differ diff --git a/src/PythonAddons/doc/images/midSurface_surfaces.png b/src/PythonAddons/doc/images/midSurface_surfaces.png new file mode 100644 index 000000000..73d16eeb1 Binary files /dev/null and b/src/PythonAddons/doc/images/midSurface_surfaces.png differ diff --git a/src/PythonAddons/doc/midSurfaceFeature.rst b/src/PythonAddons/doc/midSurfaceFeature.rst new file mode 100644 index 000000000..5ca04765f --- /dev/null +++ b/src/PythonAddons/doc/midSurfaceFeature.rst @@ -0,0 +1,74 @@ +.. _create_midSurface: +.. |midSurface.icon| image:: images/midSurface.png + +Fibre neutre +============ + +FIbre neutre est une macro fonction qui ne peut pas être éditée après usage. +Elle permet de créer les surfaces médianes à des solides minces, encore appelées fibres neutres (mid surfaces en anglais). + +Pour créer les fibres neutres d'un objet : + +#. Choisir dans le menu principal *Macros - > Créer des fibres neutres* item ou +#. Cliquer le bouton |midSurface.icon| **Fibre neutre** dans la barre des macros. + +Le menu suivant apparaît : + +.. figure:: images/midSurfacePanel.png + :align: center + :alt: Menu de création des fibres neutres + + Fibre neutre + +On doit fournir le fichier de type **CAO** qui contient l'objet. On retrouve dans l'arbre d'étude du module SHAPER cet objet de départ et un dossier contenant toutes les surfaces correspondant à des fibres neutres. Son nom est celui de l'objet de départ, suffixé par **_M**. + +.. note:: + Les surfaces ainsi créées ne sont pas reliées entre elles. Il reste ensuite un travail de jonction à effectuer. + +Plus : +"""""" + +Le programme crée les surfaces sous réserve que pour le solide envisagé, il a réussi à trouver deux faces \ +de tailles proches et supérieures aux autres faces du solide pour des polyèdres ou \ +s'il a reconnu des formes canoniques. +Il crée alors une surface au milieu de ces deux grandes faces. Cette face est coloriée en vert. + +Si les 2 faces les plus grandes sont planes mais que leurs tailles ne sont pas identiques, le programme \ +crée néanmoins une face basée sur la plus grande de ces faces. Un message est émis et cette face médiane \ +est coloriée en bleu. Le volume correspondant n'est pas détruit et est colorié en rouge. + +On sait traiter les faces : + +- planes +- cylindriques +- sphériques +- toriques +- coniques + +Exemple : +""""""""" + +A partir d'un ensemble de 4 solides de forme torique : + +.. figure:: images/midSurface_solide.png + :align: center + :alt: Les solides à traiter + + Solides à traiter + +on obtient 4 surfaces indépendantes : + +.. figure:: images/midSurface_surfaces.png + :align: center + :alt: Les surfaces créées + + Surfaces + +.. figure:: images/midSurface_solide_surfaces.png + :align: center + :alt: Exemple de surfaces dans les solides + + Surfaces dans les solides + + + diff --git a/src/PythonAddons/tests.set b/src/PythonAddons/tests.set index 0a412fb51..62f6853ce 100644 --- a/src/PythonAddons/tests.set +++ b/src/PythonAddons/tests.set @@ -1,4 +1,4 @@ -# Copyright (C) 2021-2022 CEA/DEN, EDF R&D +# Copyright (C) 2021 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 @@ -22,6 +22,7 @@ SET(TEST_NAMES TestRectangleCentered.py TestcompoundVertices.py TestimportParameters.py + TestmidSurface.py TestpipeNetwork_2par2.py TestpipeNetwork_parligne.py )