Réseau de tuyaux¶
Cette macro crée les objets SHAPER correspondant à un réseau de tuyauteries décrit dans un fichier texte.
Pour créer l’objet de la tuyauterie :
Choisir dans le menu principal Macros - > Réseau de tuyaux ou
Cliquer le bouton
Réseau de tuyaux dans la barre des macros.
Le menu suivant apparaît :
Menu de création du réseau de tuyaux¶
On doit fournir le fichier de type texte qui contient le réseau. Sa syntaxe est décrite plus bas.
Syntaxe du fichier de données¶
Règles générales¶
Chaque ligne commençant par # est ignorée
Une information par ligne
Sur une ligne, les données sont séparés par des blancs
Les données sont regroupées en 3 sections : les noeuds, la connectivité, les raccordements
Une section débute par mot-clé section
Les noeuds¶
Repérage avec nodes section
Pour un noeud dont on donne les coordonnées en absolu :
Identifiant du noeud, le signe -, les 3 coordonnées
Pour un noeud défini par rapport à un autre :
Identifiant du noeud, identifiant du noeud de départ, les 3 coordonnées de la translation
La connectivité¶
Repérage avec connectivity section
Choix de la méthode de description avec method=par_ligne ou method=2par2
Pour la méthode en ligne :
Chaque ligne est décrite par la suite de ses noeuds repérés par leurs identifiants :
Identifiant du noeud n°1, identifiant du noeud n°2, ..., identifiant du dernier noeud
Pour la méthode 2 par 2 :
Chaque tronçon est décrit par les 2 noeuds repérés par leurs identifiants :
Identifiant du noeud n°1 , identifiant du noeud n°2
Le raccordement entre tuyaux¶
Repérage avec fillets section
Pour chaque noeud à la jonction de 2 tuyaux :
Si la jonction est directe : Identifiant du noeud, angular_connection
Si la jonction est courbe : Identifiant du noeud, radius=xxx où xxx est le rayon de courbure.
Note
Par défaut, la jonction entre deux tuyaux est directe, sans rayon de courbure. On peut donc se passer de l’information angular_connection. Si toutes les jonctions sont directes, on peut se passer totalement de la rubrique fillets section.
Note
Une jonction avec un rayon de courbure ne peut avoir lieu que sur un noeud auquel aboutit exactement 2 tuyaux. L’arc de cercle est tracé dans le plan formé par les deux tuyaux. Les deux tuyaux ne doivent donc pas être colinéaires.
Exemple¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | # Positions des noeuds :
nodes section
# Le tuyau principal
id_noeud1 - 0 0 0
id_noeud2 - 10 -10 0
id_noeud3 - 15 -15 0
id_noeud4 - 20 -20 0
id_noeud5 - 21 -21 10
id_noeud6 - 30 -21 10
id_noeud7 - 30 -10 10
id_noeud8 - 30 -5 10
id_noeud9 - 30 0 10
# Les deux piquages
id_noeudA id_noeud2 -5 -5 10
id_noeudB id_noeudA 0 5 10
id_noeudC - 30 -10 20
id_noeudD id_noeudC 5 5 5
id_noeudE id_noeudD 5 5 5
# Connectivité :
connectivity section
# Choix entre 2 méthodes=soit 2par2 soit par_ligne
method=par_ligne
id_noeud1 id_noeud2 id_noeud3 id_noeud4 id_noeud5 id_noeud6 id_noeud7 id_noeud8 id_noeud9
id_noeudB id_noeudA id_noeud2
id_noeud7 id_noeudC id_noeudD id_noeudE
# Congés de raccordement :
fillets section
id_noeud2 angular_connection
id_noeud4 radius=1
id_noeud5 angular_connection
id_noeud6 radius=2
|
Exemple de réseau¶
Téléchargement des données de cet exemple
Le pilotage en TUI se fait ainsi :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Exemple de création d'un objet SHAPER tuyauterie à partir d'une description dans un fichier txte
Copyright 2022 EDF
"""
__revision__ = "V02.01"
#=================================================================================
# theFile = fichier texte de la description du réseau
theFile = "/home/D68518/pipeNetwork_ligne.txt"
#=================================================================================
import salome
salome.standalone()
salome.salome_init()
from ModelAPI import *
aSession = ModelAPI_Session.get()
# Création de la part pour accueillir le réseau
aSession.startOperation("Create part for pipe network")
aPartFeature = aSession.moduleDocument().addFeature("Part")
aSession.finishOperation()
aPart = aSession.activeDocument()
# Importation et traitement du fichier
aSession.startOperation("Import file")
aFeatureKind = "pipeNetwork"
anImportFeature = aPart.addFeature(aFeatureKind)
aFieldName = "file_path"
aFile = anImportFeature.string(aFieldName)
aFile.setValue(theFile)
aSession.finishOperation()
if salome.sg.hasDesktop():
salome.sg.updateObjBrowser()
|