Salome HOME
improvements on importPolylines Python function
[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     index = 0
39     while isShapeFound:
40         shapeNameIndex = shapeName + "_%d" % index
41         index = index + 1
42         print(shapeNameIndex)
43         shape = document.FindObjectByName(shapeNameIndex)
44         print(shape)
45         if shape is None:
46             isShapeFound = False
47         else:
48             for i in range(shape.NbSections()):
49                 shape.SetSectionType(i, shapeType)
50                 shape.Update()
51                 shape.SetZLevel( displayLevel )
52             shapes.append(shape)    
53     return shapes
54
55 def importBathymetry(document, bathyName, bathyPath):
56     """
57     """
58     bathy = document.CreateObject(KIND_BATHYMETRY)
59     bathy.SetName(bathyName)
60     bathy.SetAltitudesInverted(0)
61     if not(bathy.ImportFromFile( os.path.join(bathyPath, bathyName + '.xyz' ))):
62         raise ValueError('problem while loading bathymetry')
63     bathy.Update()
64     return bathy
65
66 def createImmersibleZone(document, imzName, polyLine, bathy, isImmersible, displayLevel):
67     """
68     """
69     imz = document.CreateObject( KIND_IMMERSIBLE_ZONE )
70     imz.SetName( imzName )
71     imz.SetZLevel( displayLevel )
72     imz.SetAltitudeObject( bathy )
73     imz.SetPolyline( polyLine )
74     imz.SetIsSubmersible(isImmersible)
75     imz.Update()
76     return imz