Salome HOME
change dialog title
[modules/hydro.git] / src / HYDROTools / hydroGeoMeshUtils.py
1 import sys
2 import os
3 import salome
4
5 salome.salome_init()
6
7 from HYDROPy import *
8 from PyQt5.QtCore import *
9 from PyQt5.QtGui import *
10
11 def getChildrenInStudy(obj):
12     """
13     Given an object published in SALOME study (for instance a GEOM object), retreive its children.
14     return a dictionary [name] --> object
15     """
16     SO = salome.myStudy.FindObjectIOR(salome.myStudy.ConvertObjectToIOR(obj))
17     childIterator = salome.myStudy.NewChildIterator(SO)
18     children = {}
19     while childIterator.More():
20         childItem = childIterator.Value()
21         print("item", childItem)
22         itemName = childItem.GetName()
23         itemID = childItem.GetID()
24         itemObj = salome.IDToObject(str(itemID))
25         children[itemName] = itemObj
26         childIterator.Next()
27     return children
28
29 def importPolylines(document, shapeFile, shapeName, iSpline, displayLevel):
30     """
31     """
32     HYDROData_PolylineXY.ImportShapesFromFile(shapeFile)
33     shapeType = 0 # polyline
34     if iSpline:
35         shapeType = 1 # polyline
36     shapes = []
37     isShapeFound = True
38     shape = document.FindObjectByName(shapeName) # single shape
39     if shape is not None:
40         for i in range(shape.NbSections()):
41             shape.SetSectionType(i, shapeType)
42             shape.Update()
43             shape.SetZLevel( displayLevel )
44         shapes.append(shape)    
45     index = 0  # for multiple shapes
46     while isShapeFound:
47         shapeNameIndex = shapeName + "_%d" % index
48         index = index + 1
49         print(shapeNameIndex)
50         shape = document.FindObjectByName(shapeNameIndex)
51         print(shape)
52         if shape is None:
53             isShapeFound = False
54         else:
55             for i in range(shape.NbSections()):
56                 shape.SetSectionType(i, shapeType)
57                 shape.Update()
58                 shape.SetZLevel( displayLevel )
59             shapes.append(shape)    
60     return shapes
61
62 def importBathymetry(document, bathyName, bathyPath):
63     """
64     """
65     bathy = document.CreateObject(KIND_BATHYMETRY)
66     bathy.SetName(bathyName)
67     bathy.SetAltitudesInverted(0)
68     if not(bathy.ImportFromFile( os.path.join(bathyPath, bathyName + '.xyz' ))):
69         raise ValueError('problem while loading bathymetry')
70     bathy.Update()
71     return bathy
72
73 def createImmersibleZone(document, imzName, polyLine, bathy, isImmersible, displayLevel):
74     """
75     """
76     imz = document.CreateObject( KIND_IMMERSIBLE_ZONE )
77     imz.SetName( imzName )
78     imz.SetZLevel( displayLevel )
79     imz.SetAltitudeObject( bathy )
80     imz.SetPolyline( polyLine )
81     imz.SetIsSubmersible(isImmersible)
82     imz.Update()
83     return imz
84
85 def mergePolylines(document, polyName, polyLines, isConnectedBySegment = False, tolerance = 1.E-3):
86     """
87     """
88     op=HYDROData_PolylineOperator()
89     op.Merge(document, polyName, polyLines, isConnectedBySegment, tolerance)
90     shape = document.FindObjectByName(polyName)
91     return shape