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 :

  1. Choisir dans le menu principal Macros - > Réseau de tuyaux ou

  2. Cliquer le bouton pipeNetwork.icon Réseau de tuyaux dans la barre des macros.

Le menu suivant apparaît :

Menu de création du réseau

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

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()

Téléchargement du pilotage en TUI