8 from PyQt5.QtCore import *
9 from PyQt5.QtGui import *
11 from random import randint
13 def getChildrenInStudy(obj):
15 Given an object published in SALOME study (for instance a GEOM object), retreive its children.
16 return a dictionary [name] --> object
18 SO = salome.myStudy.FindObjectIOR(salome.myStudy.ConvertObjectToIOR(obj))
19 childIterator = salome.myStudy.NewChildIterator(SO)
21 while childIterator.More():
22 childItem = childIterator.Value()
23 print("item", childItem)
24 itemName = childItem.GetName()
25 itemID = childItem.GetID()
26 itemObj = salome.IDToObject(str(itemID))
27 children[itemName] = itemObj
31 def loadImage(document, imageFile, imageName, displayLevel):
34 image = document.CreateObject(KIND_IMAGE)
35 image.SetName(imageName)
36 image.SetZLevel(displayLevel)
37 if not(image.LoadImage(imageFile)):
38 raise ValueError('problem while loading image %s'%imageFile)
42 def GeolocaliseImageCoords(image, a, b, c ,d):
45 image.SetLocalPoints(a, b)
46 image.SetGlobalPoints(1, c, d)
49 def GeolocaliseImageReference(image, imageRef, a, b, c ,d):
52 image.SetLocalPoints(a, b)
53 image.SetGlobalPoints(3, c, d)
54 image.SetTrsfReferenceImage(imageRef)
57 def importPolylines(document, shapeFile, shapeName, iSpline, displayLevel):
60 HYDROData_PolylineXY.ImportShapesFromFile(shapeFile)
61 shapeType = 0 # polyline
63 shapeType = 1 # polyline
66 shape = document.FindObjectByName(shapeName) # single shape
68 for i in range(shape.NbSections()):
69 shape.SetSectionType(i, shapeType)
71 shape.SetZLevel( displayLevel )
73 index = 0 # for multiple shapes
75 shapeNameIndex = shapeName + "_%d" % index
78 shape = document.FindObjectByName(shapeNameIndex)
83 for i in range(shape.NbSections()):
84 shape.SetSectionType(i, shapeType)
86 shape.SetZLevel( displayLevel )
90 def importBathymetry(document, bathyName, bathyPath):
93 bathy = document.CreateObject(KIND_BATHYMETRY)
94 bathy.SetName(bathyName)
95 bathy.SetAltitudesInverted(0)
96 if not(bathy.ImportFromFile( os.path.join(bathyPath, bathyName + '.xyz' ))):
97 raise ValueError('problem while loading bathymetry')
101 def createImmersibleZone(document, imzName, polyLine, bathy, isImmersible, displayLevel):
104 imz = document.CreateObject( KIND_IMMERSIBLE_ZONE )
105 imz.SetName( imzName )
106 imz.SetZLevel( displayLevel )
107 imz.SetAltitudeObject( bathy )
108 imz.SetPolyline( polyLine )
109 imz.SetIsSubmersible(isImmersible)
110 imz.SetFillingColor(QColor(randint(0,255), randint(0,255), randint(0,255), 255))
114 def mergePolylines(document, polyName, polyLines, isConnectedBySegment = False, tolerance = 1.E-3):
117 op=HYDROData_PolylineOperator()
118 op.Merge(document, polyName, polyLines, isConnectedBySegment, tolerance)
119 shape = document.FindObjectByName(polyName)