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# Positions des noeuds :
2nodes section
3# Le tuyau principal
4id_noeud1 - 0 0 0
5id_noeud2 - 10 -10 0
6id_noeud3 - 15 -15 0
7id_noeud4 - 20 -20 0
8id_noeud5 - 21 -21 10
9id_noeud6 - 30 -21 10
10id_noeud7 - 30 -10 10
11id_noeud8 - 30 -5 10
12id_noeud9 - 30 0 10
13# Les deux piquages
14id_noeudA id_noeud2 -5 -5 10
15id_noeudB id_noeudA 0 5 10
16id_noeudC - 30 -10 20
17id_noeudD id_noeudC 5 5 5
18id_noeudE id_noeudD 5 5 5
19
20# Connectivité :
21connectivity section
22# Choix entre 2 méthodes=soit 2par2 soit par_ligne
23method=par_ligne
24id_noeud1 id_noeud2 id_noeud3 id_noeud4 id_noeud5 id_noeud6 id_noeud7 id_noeud8 id_noeud9
25id_noeudB id_noeudA id_noeud2
26id_noeud7 id_noeudC id_noeudD id_noeudE
27
28# Congés de raccordement :
29fillets section
30id_noeud2 angular_connection
31id_noeud4 radius=1
32id_noeud5 angular_connection
33id_noeud6 radius=2
Exemple de réseau
Téléchargement des données de cet exemple
Le pilotage en TUI se fait ainsi :
1#!/usr/bin/env python
2# -*- coding: utf-8 -*-
3"""Exemple de création d'un objet SHAPER tuyauterie à partir d'une description dans un fichier txte
4
5Copyright 2022 EDF
6"""
7
8__revision__ = "V02.01"
9
10#=================================================================================
11# theFile = fichier texte de la description du réseau
12theFile = "/home/D68518/pipeNetwork_ligne.txt"
13#=================================================================================
14
15import salome
16salome.standalone()
17salome.salome_init()
18
19from ModelAPI import *
20
21aSession = ModelAPI_Session.get()
22
23# Création de la part pour accueillir le réseau
24aSession.startOperation("Create part for pipe network")
25aPartFeature = aSession.moduleDocument().addFeature("Part")
26aSession.finishOperation()
27aPart = aSession.activeDocument()
28
29# Importation et traitement du fichier
30aSession.startOperation("Import file")
31aFeatureKind = "pipeNetwork"
32anImportFeature = aPart.addFeature(aFeatureKind)
33aFieldName = "file_path"
34aFile = anImportFeature.string(aFieldName)
35aFile.setValue(theFile)
36aSession.finishOperation()
37
38if salome.sg.hasDesktop():
39 salome.sg.updateObjBrowser()