3 \page kernel_salome Using salome.py module
6 The Python module salome.py provides a functionality to access main
7 SALOME features from the Python console (either embedded in GUI
8 desktop or external one).
10 To use salome.py module, import it into the Python interpreter and
11 initialize it by calling \c salome_init() function:
18 The salome.py Python module provides a set of variables and functions
19 allowing access to different elements of the current SALOME
21 This page gives a short description of most useful variables and
24 \li \b orb Reference to the CORBA::ORB instance
26 This variable can be used to initialize different CORBA-related
27 elements of the SALOME session (for example, naming service, etc).
28 For example, to get an access to the SALOME naming service, you can
29 use the following commands:
31 import SALOME_NamingServicePy
32 NS = SALOME_NamingServicePy.SALOME_NamingServicePy_i(salome.orb)
35 The \b orb variable is also useful when it is necessary to convert
36 CORBA reference object to its string representation (IOR) and vice
39 studyIOR = salome.orb.object_to_string(salome.myStudy)
40 study = salome.orb.string_to_object(studyIOR)
41 is_same = salome.myStudy._is_equivalent(study) # is_same = True
44 \li \b naming_service SALOME naming service instance
46 This variable can be used to register/find objects created in a
47 distributed environment. For example, to get access to the SALOME
48 Module Catalog server, use \c Resolve() method:
50 import SALOME_ModuleCatalog
51 mc = salome.naming_service.Resolve('/Kernel/ModulCatalog')
54 Similarly, method \c Register() can be used to register objects
55 in the naming service:
57 salome.naming_service.Register(myObject,'/My/Object/Path')
58 o = salome.naming_service.Resolve('/My/Object/Path')
59 is_same = myObject._is_equivalent(o) # is_same = True
62 \li \b lcc Life Cycle CORBA class instance
64 This object can be used to get access to CORBA engine part of some
65 SALOME module, available in the current SALOME session. The following
66 code returns a reference to the Geometry module engine, loading it if
70 geom = salome.lcc.FindOrLoadComponent('FactoryServer', 'GEOM')
72 \b Note, that in the above example, \e "FactoryServer" is a name of the
73 SALOME container, where Geometry module engine should be loaded.
75 \anchor salome_myStudy
76 \li \b myStudy Reference to the current (active) study
78 This variable can be used to manipulate with the date of the study:
79 create data tree, assign attributes of different types to the objects
80 in a data tree, create references between objects, etc.
82 \b Note, that the term "active" or "current" study does not make much
83 sense outise the GUI Python console. When working in GUI, user always
84 deals with one only top-level study, which desktop is currently on the
85 top if the windows stack. This is what is called \e "active study".
86 In TUI mode (without GUI or outside GUI), user has to manipulate with
87 studies manually; no any special control for the life cycle of the
88 study is done. In TUI mode, \c salome.muStudy variable is an instance
89 of the first study created when you call salome_init() function.
91 The following code demonstrates some examples of \c salome.myStudy
92 variable usage. For more details please refer to the SALOMEDS.idl file
97 studyName = salome.myStudy._get_Name()
99 # open study from file /home/user/MyStudy.hdf
100 study = salome.myStudy.OpenStudy("/home/user/MyStudy.hdf")
103 salome.myStudy.Save(study, False) # not using multifile save mode
105 # save study in ASCII format
106 salome.myStudy.SaveASCII(study, True) # using multifile save mode
108 # save study with the new file path
109 salome.myStudy.SaveAs("/home/user/MyStudy.hdf", study, False)
111 # save study with the new file path in ASCII format
112 salome.myStudy.SaveAsASCII("/home/user/MyStudy.hdf", study, False)
115 salome.myStudy.Clear()
117 # find SALOMEDS component by its type
118 scomponent = FindComponent("MyComponent")
120 # find SALOMEDS component by its entry ID
121 scomponent = FindComponentID("0:1:1") # "0:1:1" is a component ID
123 # find SALOMEDS object by its name (first found object is returned)
124 sobject = salome.myStudy.FindObject("MyObject")
126 # find SALOMEDS object by its entry ID
127 sobject = salome.myStudy.FindObjectID() # "0:1:1:1" is an object ID
129 # find SALOMEDS object by its IOR attribute
130 sobject = salome.myStudy.FindObjectIOR(IOR)
132 # find SALOMEDS object by its path in the data tree
133 sobject = salome.myStudy.FindObjectByPath("/MyComponent/MyObject/MySubObject")
135 # get SALOMEDS object's path in a study data tree
136 sobject_path = salome.myStudy.GetObjectPath(sobject)
138 # get study properties
139 prop = salome.myStudy.GetProperties()
140 prop.GetCreationDate() # get creation date
141 prop.IsModified() # check if study has been modified (and not yet saved)
142 prop.SetLocked(True) # lock the study (prohibit modifications)
143 prop.IsLocked() # check if study is locked
145 # create objects with study builder
146 builder = salome.myStudy.NewBuilder() # create builder
147 comp = builder.NewComponent("MyComponent") # create a component of the "MyComponent" type
148 attrName = builder.FindOrCreateAttribute(comp, "AttributeName")
149 attrName.SetValue("MyComponent") # set name to the component
150 object = builder.NewObject(comp) # create new object, a child of the component
151 attrName = builder.FindOrCreateAttribute(object, "AttributeName")
152 attrName.SetValue("MyObject") # set name to the object
153 attrInt = builder.FindOrCreateAttribute(object, "AttributeInteger")
154 attrInt.SetValue(123) # assign integer attribute to the object
155 attrIOR = builder.FindOrCreateAttribute(object, "AttributeIOR")
156 attrIOR.SetValue(IOR) # assign IOR attribute to the object (to point to some CORBA object)
158 # iterate through objects of the data tree with child iterator
159 iter = salome.myStudy.NewChildIterator(comp) # initialize from the component
160 iter.InitEx(True) # init recursive mode
170 \li \b myStudyName Name of the current (active) study
172 This variable contains the name of the current (active) study. It is
173 an equivalent of \c salome.myStudy._get_Name() code.
175 \li \b DumpStudy() Print study contents
177 This function prints the study data object tree to the terminal
178 window. The output for each object includes its entry ID, name, IOR
179 (if there is one) and referenced object ID (for references). I.e.
180 this is the same data the user can see in the Object Browser columns.
185 \li \b IDToSObject() Get SALOMEDS object by its entry ID.
187 This function checks if the SObject with the specified entry ID exists
188 in the current study and returns it. Otherwise \c None is returned.
190 sobject = salome.IDToSObject("0:1:1:1") # "0:1:1:1" is an object ID
192 Actually this function is just a shortcut to the following code:
194 sobject = salome.myStudy.FindObjectID("0:1:1:1")
197 \li \b IDToObject() Get CORBA object by its entry ID.
199 This function checks if the SObject with the specified entry ID exists
200 in the current study, then retrieves IOR attribute from it and,
201 finally, if IOR is not empty, returns CORBA object corresponding to
204 object = salome.IDToObject("0:1:1:1") # "0:1:1:1" is an object ID
206 Actually this function is just a shortcut to the following code:
208 sobject = salome.myStudy.FindObjectID("0:1:1:1")
210 object = sobject.GetObject()
215 \li \b ObjectToSObject() Get SALOMEDS object corresponding to the
218 This function finds an object in the current study which corresponds
219 to the specified CORBA object (i.e. it has IOR attribute, pointing to
220 the CORBA object). If there is no corresponding SALOMEDS object in the
221 study, \c None is returned:
223 sobject = salome.ObjectToSObject(object)
225 Actually this function is just a shortcut to the following code:
227 ior = salome.orb.object_to_string(object)
228 sobject = salome.myStudy.FindObjectIOR(ior)
231 \li \b ObjectToID() Get SALOMEDS object entry ID corresponding to the
234 This function finds an object in the current study which corresponds
235 to the specified CORBA object (i.e. it has IOR attribute, pointing to
236 the CORBA object). If the object is found, its entry ID is returned,
237 otherwise empty string is returned:
239 entry = salome.ObjectToID(object)
241 Actually this function is just a shortcut to the following code:
243 ior = salome.orb.object_to_string(object)
244 sobject = salome.myStudy.FindObjectIOR(ior)
246 entry = sobject.GetID()
251 \li \b generateName() Generate unique name
253 This function adds random numerical suffix to the passed string
254 parameter ("Study" by default) and returns the resulting string:
256 name_1 = salome.generateName() # name_1 is something like "Study682"
257 name_1 = salome.generateName("Obj") # name_1 is something like "Obj32"
260 \li \b GetComponentVersion() Get version of component data stored in
263 This function allows to obtain the version of the component data
264 stored in the current study.
265 \note This function does not provide a current version of the
266 component being used but that one initially stored in the study
269 The first parameter specifies the name of the component. If the
270 specified component data is not stored in the study, the result value
271 is "no component data". If the version of data is undefined, the
274 The second parameter (\c False by default), when set to \c True,
275 allows to retrieve all versions of the component data stored in the
276 study. This is useful to check if version information is valid (the
277 data might be updated and/or re-stored in %SALOME of versions different
281 # get initial version of GEOM module data stored in the study
282 geom_version = salome.GetComponentVersion('GEOM')
283 # get all versions of GEOM module data stored in the study
284 all_geom_versions = salome.GetComponentVersion('GEOM', True)
287 This function is introduced in %SALOME 6.6.0 (it does not work with
288 studies created before version 6.6.0).
290 \note The study should be initialized before calling this function
291 (see \ref salome_myStudy "salome.myStudy").