Salome HOME
remove images in ascii
authortma <tma@opencascade.com>
Wed, 5 Jul 2006 09:19:32 +0000 (09:19 +0000)
committertma <tma@opencascade.com>
Wed, 5 Jul 2006 09:19:32 +0000 (09:19 +0000)
15 files changed:
doc/salome/tui/KERNEL/sources/Application-About1.jpg [deleted file]
doc/salome/tui/KERNEL/sources/application.gif [deleted file]
doc/salome/tui/KERNEL/sources/application.jpg [deleted file]
doc/salome/tui/KERNEL/sources/html_comments.gif [deleted file]
doc/salome/tui/KERNEL/sources/static/Link.gif [deleted file]
doc/salome/tui/KERNEL/sources/static/SObject.gif [deleted file]
doc/salome/tui/KERNEL/sources/static/Study_Struct.gif [deleted file]
doc/salome/tui/KERNEL/sources/static/examples_Life_cycle.html
doc/salome/tui/KERNEL/sources/static/examples_Study.html
doc/salome/tui/KERNEL/sources/static/mapping.html
doc/salome/tui/KERNEL/sources/static/ns_f3-1.jpg [deleted file]
doc/salome/tui/KERNEL/sources/static/overview_Kernel.html
doc/salome/tui/KERNEL/sources/static/overview_Life_Cycle.html
doc/salome/tui/KERNEL/sources/static/overview_Naming.html
doc/salome/tui/KERNEL/sources/static/overview_Study.html

diff --git a/doc/salome/tui/KERNEL/sources/Application-About1.jpg b/doc/salome/tui/KERNEL/sources/Application-About1.jpg
deleted file mode 100755 (executable)
index cf7ab8b..0000000
Binary files a/doc/salome/tui/KERNEL/sources/Application-About1.jpg and /dev/null differ
diff --git a/doc/salome/tui/KERNEL/sources/application.gif b/doc/salome/tui/KERNEL/sources/application.gif
deleted file mode 100644 (file)
index 0b05d5c..0000000
Binary files a/doc/salome/tui/KERNEL/sources/application.gif and /dev/null differ
diff --git a/doc/salome/tui/KERNEL/sources/application.jpg b/doc/salome/tui/KERNEL/sources/application.jpg
deleted file mode 100755 (executable)
index a6979ab..0000000
Binary files a/doc/salome/tui/KERNEL/sources/application.jpg and /dev/null differ
diff --git a/doc/salome/tui/KERNEL/sources/html_comments.gif b/doc/salome/tui/KERNEL/sources/html_comments.gif
deleted file mode 100755 (executable)
index f0c0f0b..0000000
Binary files a/doc/salome/tui/KERNEL/sources/html_comments.gif and /dev/null differ
diff --git a/doc/salome/tui/KERNEL/sources/static/Link.gif b/doc/salome/tui/KERNEL/sources/static/Link.gif
deleted file mode 100755 (executable)
index 75330d0..0000000
Binary files a/doc/salome/tui/KERNEL/sources/static/Link.gif and /dev/null differ
diff --git a/doc/salome/tui/KERNEL/sources/static/SObject.gif b/doc/salome/tui/KERNEL/sources/static/SObject.gif
deleted file mode 100755 (executable)
index 1d4e9cb..0000000
Binary files a/doc/salome/tui/KERNEL/sources/static/SObject.gif and /dev/null differ
diff --git a/doc/salome/tui/KERNEL/sources/static/Study_Struct.gif b/doc/salome/tui/KERNEL/sources/static/Study_Struct.gif
deleted file mode 100755 (executable)
index bc0ce35..0000000
Binary files a/doc/salome/tui/KERNEL/sources/static/Study_Struct.gif and /dev/null differ
index 8d36282f6f12ea6d34edee37eb6cf6bb2fd35984..080112eb43e212729a22a1b77c9416b2782cf135 100755 (executable)
-<!DOCTYPE doctype PUBLIC "-//w3c//dtd html 4.0 transitional//en">\r
-<html>\r
-<head>\r
-    \r
-  <meta http-equiv="Content-Type"\r
- content="text/html; charset=iso-8859-1">\r
-    \r
-  <meta name="GENERATOR"\r
- content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">\r
-  <title>Main Page</title>\r
-     \r
-  <link href="doxygen.css" rel="stylesheet" type="text/css">\r
-</head>\r
-  <body>\r
- &nbsp; \r
-<center>\r
-<table width="96%">\r
- <tbody>\r
-    <tr>\r
- <td><a href="http://www.opencascade.com"><img\r
- src="sources/logocorp.gif" border="0" height="46" width="122">\r
-      </a></td>\r
-   <td> \r
-      <div align="right"><a href="http://www.opencascade.org/SALOME/"><img\r
- src="sources/application.gif" border="0" height="46" width="108">\r
-      </a></div>\r
- </td>\r
- </tr>\r
\r
-  </tbody>\r
-</table>\r
-</center>\r
-   \r
-<h1><a name="page2">Examples</a> </h1>\r
-   <font color="#3333ff">//There is a CXX example of LifeCycleCORBA using<br>\r
-</font><br>\r
-#include CORBA_CLIENT_HEADER(TestComponent)<br>\r
-#include "SALOME_NamingService.hxx"<br>\r
-#include "SALOME_LifeCycleCORBA.hxx"<br>\r
-<br>\r
-int main (int argc, char * argv[]){<br>\r
-&nbsp; try {<br>\r
-<font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Initializing omniORB<br>\r
-</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CORBA::ORB_var orb = CORBA::ORB_init(argc,\r
-argv);<br>\r
-&nbsp;&nbsp;&nbsp; <br>\r
-<font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Obtain a reference\r
-to the root POA<br>\r
-</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CORBA::Object_var obj = orb-&gt;resolve_initial_references("RootPOA")\r
-;<br>\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PortableServer::POA_var poa = PortableServer::POA::_narrow(obj)\r
-;<br>\r
-&nbsp;&nbsp;&nbsp; <br>\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SALOME_NamingService _NS(orb) ;<br>\r
-<br>\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SALOME_LifeCycleCORBA _LCC(&amp;_NS) ;<br>\r
-<br>\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Engines::Component_var myComponent = _LCC.FindOrLoad_Component("FactoryServerPy","TestComponentPy");<br>\r
-&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; if(!CORBA::is_nil(myComponent)){<br>\r
-&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Engines::TestComponent_var\r
-myConcreateComponent = TestComponent::_narrow(myComponent);<br>\r
-<font color="#3333ff">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; //do something\r
-what you like with the interface<br>\r
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ...<br>\r
-</font>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; return 0;<br>\r
-&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; }<br>\r
-&nbsp;&nbsp;&nbsp; }<br>\r
-&nbsp; catch(CORBA::COMM_FAILURE&amp; ex){<br>\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;"Caught system exception COMM_FAILURE\r
--- unable to contact the object.\n";<br>\r
-&nbsp; }catch(CORBA::SystemException&amp;){<br>\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;"Caught a CORBA::SystemException.\n";<br>\r
-&nbsp; }catch(CORBA::Exception&amp;){<br>\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;"Caught CORBA::Exception.\n";<br>\r
-&nbsp; }catch(...){<br>\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;"Caught unknown exception.\n";<br>\r
-&nbsp; }<br>\r
-&nbsp; return 1;<br>\r
-}<br>\r
-<br>\r
-<font color="#3333ff">#The example may be rewritten on Python like this:<br>\r
-</font><br>\r
-from omniORB import CORBA<br>\r
-from SALOME_TestComponent import *<br>\r
-from SALOME_NamingServicePy import *<br>\r
-from LifeCycleCORBA import *<br>\r
-<br>\r
-try:<br>\r
-&nbsp;&nbsp;&nbsp; orb = CORBA.ORB_init(sys.argv,CORBA.ORB_ID)<br>\r
-&nbsp;&nbsp;&nbsp; _NS = SALOME_NamingService(orb)<br>\r
-&nbsp;&nbsp;&nbsp; _LCC = SALOME_LifeCycleCORBA(orb)<br>\r
-<br>\r
-&nbsp;&nbsp;&nbsp;&nbsp; myComponent = _LCC.FindOrLoadComponent("FactoryServerPy","TestComponentPy");<br>\r
-&nbsp;&nbsp;&nbsp; &nbsp;myConcreatComponent = myComponent._narrow(TestComponent)<br>\r
-&nbsp;&nbsp;&nbsp; if myConcreatComponent is not None :<font\r
- color="#3333ff"><br>\r
-&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //do something what you like with the\r
-interface<br>\r
- &nbsp; &nbsp; &nbsp; &nbsp; ...<br>\r
- </font>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return 0<br>\r
-&nbsp;&nbsp;&nbsp; }<br>\r
-except CosNaming.NamingContext.NotFound, e :<br>\r
-&nbsp;&nbsp;&nbsp; print "Caught exception: Naming Service can't found Logger"<br>\r
-except CORBA.COMM_FAILURE, e:<br>\r
-&nbsp;&nbsp;&nbsp; print "Caught CORBA::SystemException CommFailure"<br>\r
-except CORBA.SystemException, e:<br>\r
-&nbsp;&nbsp;&nbsp; print "Caught CORBA::SystemException."<br>\r
-except CORBA.Exception, e:<br>\r
-&nbsp;&nbsp;&nbsp; print "Caught CORBA::Exception."<br>\r
-except Exception, e:<br>\r
-&nbsp;&nbsp;&nbsp; print "Caught unknown exception."<br>\r
-&nbsp;&nbsp; <br>\r
-<br>\r
-<br>\r
-</body>\r
-</html>\r
+<!DOCTYPE doctype PUBLIC "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+    
+  <meta http-equiv="Content-Type"
+ content="text/html; charset=iso-8859-1">
+    
+  <meta name="GENERATOR"
+ content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+  <title>Main Page</title>
+     
+  <link href="doxygen.css" rel="stylesheet" type="text/css">
+</head>
+  <body>
+ &nbsp; 
+<center>
+<table width="96%">
+ <tbody>
+    <tr>
+ <td><a href="http://www.opencascade.com"><img
+ src="sources/logocorp.gif" border="0" height="46" width="122">
+      </a></td>
+   <td> 
+      <div align="right"><a href="http://www.opencascade.org/SALOME/"><img
+ src="sources/application.gif" border="0" height="46" width="108">
+      </a></div>
+ </td>
+ </tr>
+  </tbody>
+</table>
+</center>
+   
+<h1><a name="page2">Examples</a> </h1>
+   <font color="#3333ff">//There is a CXX example of LifeCycleCORBA using<br>
+</font><br>
+#include CORBA_CLIENT_HEADER(TestComponent)<br>
+#include "SALOME_NamingService.hxx"<br>
+#include "SALOME_LifeCycleCORBA.hxx"<br>
+<br>
+int main (int argc, char * argv[]){<br>
+&nbsp; try {<br>
+<font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Initializing omniORB<br>
+</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CORBA::ORB_var orb = CORBA::ORB_init(argc,
+argv);<br>
+&nbsp;&nbsp;&nbsp; <br>
+<font color="#3333ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Obtain a reference
+to the root POA<br>
+</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CORBA::Object_var obj = orb-&gt;resolve_initial_references("RootPOA")
+;<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PortableServer::POA_var poa = PortableServer::POA::_narrow(obj)
+;<br>
+&nbsp;&nbsp;&nbsp; <br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SALOME_NamingService _NS(orb) ;<br>
+<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SALOME_LifeCycleCORBA _LCC(&amp;_NS) ;<br>
+<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Engines::Component_var myComponent = _LCC.FindOrLoad_Component("FactoryServerPy","TestComponentPy");<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; if(!CORBA::is_nil(myComponent)){<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Engines::TestComponent_var
+myConcreateComponent = TestComponent::_narrow(myComponent);<br>
+<font color="#3333ff">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; //do something
+what you like with the interface<br>
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ...<br>
+</font>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; return 0;<br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; }<br>
+&nbsp;&nbsp;&nbsp; }<br>
+&nbsp; catch(CORBA::COMM_FAILURE&amp; ex){<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;"Caught system exception COMM_FAILURE
+-- unable to contact the object.\n";<br>
+&nbsp; }catch(CORBA::SystemException&amp;){<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;"Caught a CORBA::SystemException.\n";<br>
+&nbsp; }catch(CORBA::Exception&amp;){<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;"Caught CORBA::Exception.\n";<br>
+&nbsp; }catch(...){<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cout&lt;&lt;"Caught unknown exception.\n";<br>
+&nbsp; }<br>
+&nbsp; return 1;<br>
+}<br>
+<br>
+<font color="#3333ff">#The example may be rewritten on Python like this:<br>
+</font><br>
+from omniORB import CORBA<br>
+from SALOME_TestComponent import *<br>
+from SALOME_NamingServicePy import *<br>
+from LifeCycleCORBA import *<br>
+<br>
+try:<br>
+&nbsp;&nbsp;&nbsp; orb = CORBA.ORB_init(sys.argv,CORBA.ORB_ID)<br>
+&nbsp;&nbsp;&nbsp; _NS = SALOME_NamingService(orb)<br>
+&nbsp;&nbsp;&nbsp; _LCC = SALOME_LifeCycleCORBA(orb)<br>
+<br>
+&nbsp;&nbsp;&nbsp;&nbsp; myComponent = _LCC.FindOrLoadComponent("FactoryServerPy","TestComponentPy");<br>
+&nbsp;&nbsp;&nbsp; &nbsp;myConcreatComponent = myComponent._narrow(TestComponent)<br>
+&nbsp;&nbsp;&nbsp; if myConcreatComponent is not None :<font
+ color="#3333ff"><br>
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //do something what you like with the
+interface<br>
+ &nbsp; &nbsp; &nbsp; &nbsp; ...<br>
+ </font>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return 0<br>
+&nbsp;&nbsp;&nbsp; }<br>
+except CosNaming.NamingContext.NotFound, e :<br>
+&nbsp;&nbsp;&nbsp; print "Caught exception: Naming Service can't found Logger"<br>
+except CORBA.COMM_FAILURE, e:<br>
+&nbsp;&nbsp;&nbsp; print "Caught CORBA::SystemException CommFailure"<br>
+except CORBA.SystemException, e:<br>
+&nbsp;&nbsp;&nbsp; print "Caught CORBA::SystemException."<br>
+except CORBA.Exception, e:<br>
+&nbsp;&nbsp;&nbsp; print "Caught CORBA::Exception."<br>
+except Exception, e:<br>
+&nbsp;&nbsp;&nbsp; print "Caught unknown exception."<br>
+&nbsp;&nbsp; <br>
+<br>
+<br>
+</body>
+</html>
index 31ccaffa56a3ca04043e241cab0a9f7ab29028fd..859f6297f3761d349fdd75583005ac807037e566 100755 (executable)
-<!DOCTYPE doctype PUBLIC "-//w3c//dtd html 4.0 transitional//en">\r
-<html>\r
-<head>\r
-            \r
-  <meta http-equiv="Content-Type"\r
- content="text/html; charset=iso-8859-1">\r
-            \r
-  <meta name="GENERATOR"\r
- content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">\r
-  <title>Main Page</title>\r
-                   \r
-  <link href="doxygen.css" rel="stylesheet" type="text/css">\r
-</head>\r
-  <body>\r
-   &nbsp;   \r
-<center>  \r
-<table width="96%">\r
-   <tbody>\r
-      <tr>\r
-   <td><a href="http://www.opencascade.com"><img src="sources/ogocorp.gif"\r
- border="0" height="46" width="122">\r
-        </a></td>\r
-     <td>               \r
-      <div align="right"><a href="http://www.opencascade.org/SALOME/"><img\r
- src="sources/application.gif" border="0" height="46" width="108">\r
-        </a></div>\r
-   </td>\r
-   </tr>\r
-         \r
-  </tbody>  \r
-</table>\r
-  </center>\r
-       \r
-<h1><a name="page2">Examples</a> </h1>\r
-     <br>\r
-  <br>\r
-   \r
-<div align="justify">&nbsp;&nbsp;&nbsp; &nbsp;<big><b><i> <small>Interfaces:</small></i></b></big><br>\r
-  <br>\r
-  &nbsp; &nbsp; &nbsp; <a href="#SALOMEDS::Study_impl">SALOMEDS::Study</a><br>\r
-  &nbsp;&nbsp;&nbsp; &nbsp; <a href="#SALOMEDS::StudyBuilder_impl">SALOMEDS::StudyBuilder</a><br>\r
-  &nbsp;&nbsp; &nbsp;&nbsp; <a href="#SALOMEDS::StudyManager_impl">SALOMEDS::StudyManager</a><br>\r
-  &nbsp;&nbsp;&nbsp; &nbsp; <a href="#SALOMEDS::SObject_impl">SALOMEDS::SObject</a><br>\r
-&nbsp;&nbsp;&nbsp; &nbsp; <a href="#SALOMEDS::SComponent_impl">SALOMEDS::SComponent</a><br>\r
-  &nbsp; &nbsp; &nbsp; <a href="#SALOMEDS::SComponentIterator_impl">SALOMEDS::SComponentIterator</a><br>\r
-  &nbsp; &nbsp; &nbsp; <a href="#SALOMEDS::ChildIterator_impl">SALOMEDS::ChildIterator<br>\r
- </a> &nbsp; &nbsp; &nbsp;<a href="#SALOMEDS::AttributeComment_impl"> SALOMEDS::AttributeComment</a><br>\r
-   &nbsp;&nbsp;&nbsp; &nbsp;<br>\r
-  </div>\r
-  <br>\r
-  <br>\r
-  <br>\r
-   \r
-<div align="center">&nbsp;&nbsp;&nbsp; &nbsp; <small><small><u><big><big><a\r
- name="SALOMEDS::Study_impl"></a><font color="#000000"\r
- face="Helvetica, Arial, sans-serif"><big><big><b>SALOMEDS::Study interface</b></big></big></font></big></big></u></small></small><br>\r
-  <br>\r
-   \r
-<div align="left">                  <big><br>\r
-  </big></div>\r
-  <big><br>\r
-  </big>  \r
-<div align="left"><b><big><a class="el"\r
- href="interfaceSALOMEDS_1_1SComponent.html">SComponent</a>  FindComponent(\r
-in string <i>aComponentName </i>)</big></b><br>\r
-  <i><br>\r
-  <u>Find GEOMETRY component in the opened study by its name:</u></i><br>\r
-  <br>\r
-  &nbsp;&nbsp;&nbsp; str= os.getenv("TmpDir")<br>\r
-  &nbsp;&nbsp;&nbsp; if str == None:<br>\r
-  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; str = "/tmp"<br>\r
-  &nbsp;&nbsp;&nbsp; file = str+"/test.hdf"<br>\r
-  <br>\r
-  &nbsp;&nbsp;&nbsp; openedStudy=batchmode_geompy.myStudyManager.Open(file)<br>\r
-  <br>\r
-  &nbsp;&nbsp;&nbsp; father = openedStudy.FindComponent("GEOM")<br>\r
-  &nbsp;&nbsp;&nbsp; if father is None:<br>\r
-  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;raise&nbsp; RuntimeError, "Geom\r
- component is not found!&nbsp; Wrong study is opened." <br>\r
-  <br>\r
-  <br>\r
-  </div>\r
-   \r
-<div align="left"><b><big><a class="el"\r
- href="interfaceSALOMEDS_1_1SObject.html">SObject</a>  FindObject ( in string\r
-<em>anObjectName </em>)</big></b><br>\r
-  <br>\r
-  <u><i>Find the SObject of the box by its NameAttribute "box":</i></u><br>\r
-  </div>\r
-   \r
-<div align="left"><br>\r
-  </div>\r
-   \r
-<div align="left">box = openedStudy.FindObject("box")<br>\r
-  if box is None :<br>\r
-  &nbsp;&nbsp;&nbsp; raise&nbsp; RuntimeError, "box was not found! Wrong\r
-study  is opened."<br>\r
-  <br>\r
-  <br>\r
-  <small><big><big><a class="el"\r
- href="interfaceSALOMEDS_1_1SObject.html">SObject</a></big></big><b><big><big>&nbsp;FindObjectID\r
- ( in</big> <big><a class="el" href="namespaceSALOMEDS.html#a1">ID</a>  </big><em><big>aObjectID\r
-)</big><br>\r
-  #result: "/User data/Case1". <br>\r
-  </em><big><em></em></big><big><em></em></big></big></b></small><u><i>Find\r
- the SObject of the box by its ID </i>"</u><u>0:1:1:2"<i>:</i></u><br>\r
-   <br>\r
-  </div>\r
-   \r
-<div align="left">box =openedStudy.FindObjectID("0:1:1:2")<br>\r
-  </div>\r
-   \r
-<div align="left">if box is None :<br>\r
-   &nbsp;&nbsp;&nbsp; raise&nbsp; RuntimeError, "box was not found! Wrong \r
-ID is used."<br>\r
-  <br>\r
-  <br>\r
-  <small><big><big><a class="el"\r
- href="interfaceSALOMEDS_1_1SObject.html">SObject</a></big></big></small><big><b>&nbsp;FindObjectIOR\r
- ( in&nbsp;<a class="el" href="namespaceSALOMEDS.html#a1">ID</a>&nbsp;  <em>aObjectIOR</em>\r
-)</b></big><br>\r
-  <br>\r
-  <u><i>Find the SObject </i></u><u><i>of the result on imported MED file \r
-by it's IOR:</i></u><br>\r
-  <br>\r
-  theResult = myVisu.ImportFile(medFile)<br>\r
-  aSObj = myStudy.FindObjectIOR(theResult.GetID())<br>\r
-  <br>\r
-  <br>\r
-  <big><b><a class="el" href="interfaceSALOMEDS_1_1SObject.html">SObject</a>\r
- FindObjectByPath ( in string <i>thePath</i> )</b></big><br>\r
-  <br>\r
-  <u><i>Find SObject by path to it:</i></u><br>\r
-  <i><br>\r
-  # create new auxiliary componen</i>t<br>\r
-  aComponent = myStudyBuilder.NewComponent("Virtual Component")<br>\r
-  <br>\r
-  # create auxiliary subtree<br>\r
-  aPath = "/Virtual Component/Case1"<br>\r
-  myStudyBuilder.AddDirectory(aPath)<br>\r
-  <br>\r
-  aSObj = myStudy.FindObjectByPath(aPath)<br>\r
-  <br>\r
-  <br>\r
-  <big><b>void SetContext ( in string <i>thePath</i>)</b> </big><b><big><big>/</big>\r
- string GetContext ()</big></b><br>\r
-  <br>\r
-  <u><i>Set context of the study to the created case and get it for printing:</i></u><br>\r
-  <br>\r
-  aComponent = myStudyBuilder.NewComponent("User data")<br>\r
-  anAttr = aBuilder.FindOrCreateAttribute(aComponent, "AttributeName")<br>\r
-  anAttrName = anAttr._narrow(SALOMEDS.AttributeName) <br>\r
-  anAttrName.SetValue("User data")<br>\r
-  <br>\r
-  #Add a new case 'Case1' to the component 'User data'<br>\r
-  aBuilder.AddDirectory("/User data/Case1")<br>\r
-  <br>\r
-  #Set a study context to '/User data/Case1'<br>\r
-  aStudy.SetContext("/User data/Case1")<br>\r
-  <br>\r
-  #Print the current study context<br>\r
-  print aStudy.GetContext()<br>\r
-  <u><small><br>\r
-  </small><i>#result: "/User data/Case1".</i></u><br>\r
-  <br>\r
-  <br>\r
-  <big><b><a class="el" href="interfaceSALOMEDS_1_1ChildIterator.html">ChildIterator</a>\r
- NewChildIterator ( in&nbsp;<a class="el"\r
- href="interfaceSALOMEDS_1_1SObject.html">SObject</a>  aSO            ) </b></big><br>\r
-  <br>\r
-  <u><i>Import med file and print all mesh names that this file includes\r
-(mesh  is a child of the result of imported file):</i></u><br>\r
-  <br>\r
-  <i># define file name</i><br>\r
-  aFileName = datadir + "fra.med"<br>\r
-  <br>\r
-  <i># import file in visu module and get result</i><br>\r
-  theVisu = batchmode_visu.myVisu<br>\r
-  aResult = theVisu.ImportFile(aFileName)<br>\r
-  if aResult is None : raise RuntimeError, "Error"<br>\r
-  else : print "OK"<br>\r
-  &nbsp;<br>\r
-  <i># get current study and its' SObject&nbsp; </i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\r
- <br>\r
-  myLocalStudy = theVisu.GetCurrentStudy()<br>\r
-  aSObj = myLocalStudy.FindObjectIOR(aResult.GetID())<br>\r
-  if aSObj is None : raise RuntimeError, "Error"<br>\r
-  else : print "OK"<br>\r
-  <br>\r
-  <i># create iterator by SObject of the current study</i><br>\r
-  aMeshIter = myLocalStudy.NewChildIterator(aSObj);<br>\r
-  <br>\r
-  <i># iterating in the current study (with the help of created iterator) \r
-to find all mesh names</i> &nbsp;<br>\r
-  while aMeshIter.More() :<br>\r
-  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aMeshSObj = aMeshIter.Value()<br>\r
-  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aMeshIter.Next()<br>\r
-  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; anAttr = aMeshSObj.FindAttribute("AttributeName")[1]<br>\r
-  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if anAttr is None :<br>\r
-  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aMeshSObj\r
- = aMeshIter.Value()<br>\r
-  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aMeshIter.Next()<br>\r
-  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; anAttr\r
- = aMeshSObj.FindAttribute("AttributeName")[1]<br>\r
-  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; anAttr = anAttr._narrow(SALOMEDS.AttributeName);<br>\r
-  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aMeshName = anAttr.Value()<br>\r
-  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print "&nbsp; ", aMeshName<br>\r
-  <br>\r
-  <br>\r
-  <big><b><a class="el"\r
- href="interfaceSALOMEDS_1_1SComponentIterator.html">SComponentIterator</a> \r
-NewComponentIterator ()</b></big><br>\r
- <br>\r
- <u><i>Find the number an names of all components in the study:</i></u><br>\r
- <br>\r
- aCompItr = myStudy.NewComponentIterator()<br>\r
- <br>\r
- compNb = 0<br>\r
- while aCompItr.More():<br>\r
- &nbsp;&nbsp;&nbsp; aComp = aCompItr.Value()<br>\r
- &nbsp;&nbsp;&nbsp; aName = aComp.ComponentDataType()<br>\r
- &nbsp;&nbsp;&nbsp; print "Component name = ", aName<br>\r
- &nbsp;&nbsp;&nbsp; compNb += 1<br>\r
- &nbsp;&nbsp;&nbsp; aCompItr.Next()<br>\r
- <br>\r
- <br>\r
- <big><b><a class="el" href="interfaceSALOMEDS_1_1StudyBuilder.html">StudyBuilder</a> \r
-NewBuilder ()</b></big><br>\r
-  </div>\r
-  </div>\r
- <br>\r
- <i><u>Create a new StudyBuilder (uses to add or modify an object in the\r
-study ):</u></i><br>\r
- <br>\r
- myBuilder = myStudy.NewBuilder() <br>\r
- <br>\r
- <br>\r
- <big><b><a class="el"\r
- href="interfaceSALOMEDS_1_1AttributeStudyProperties.html">AttributeStudyProperties</a> \r
-GetProperties ()</b></big><br>\r
- <br>\r
- <i><u>Get the attribute, which contains the properties of the study, and \r
-change properties of the study </u></i><u>by changing it</u>: <br>\r
- <br>\r
- aProperties = myStudy.GetProperties()<br>\r
- if aProperties == None :<br>\r
- &nbsp;&nbsp;&nbsp; raise&nbsp; RuntimeError, "Can't create AttributeStudyProperties \r
-attribute"<br>\r
- aProperties&nbsp;= aProperties._narrow(SALOMEDS.AttributeStudyProperties)<br>\r
- <br>\r
- A = aProperties<br>\r
- <br>\r
- <i># print stydy properties</i><br>\r
- print "A.GetUserName()= ", A.GetUserName()<br>\r
- res,mm,hh,dd,mnth,yy=A.GetCreationDate()<br>\r
- print "A.GetCreationDate() = ", mm,hh,dd,mnth,yy<br>\r
- print "A.GetCreationMode() = ", A.GetCreationMode()<br>\r
- print "A.IsModified() = ", A.IsModified()<br>\r
- print "A.IsLocked() = ", A.IsLocked()<br>\r
- <br>\r
- <i># change the properties of the study</i><br>\r
- if A.IsLocked() == 0 :<br>\r
- &nbsp;&nbsp;&nbsp; A.SetUserName("tester"); print 'A.SetUserName("tester"), \r
-A.GetUserName() = ', A.GetUserName()<br>\r
- &nbsp;&nbsp;&nbsp; A.SetCreationDate(11,11,11,11,2002); print 'A.SetCreationDate(11,11,11,11,2002), \r
-A.GetCreationDate() =', A.GetCreationDate()<br>\r
- &nbsp;&nbsp;&nbsp; print "A.IsModified() = ", A.IsModified()<br>\r
- A.SetLocked(1)<br>\r
- <br>\r
- <br>\r
- <big><b>boolean IsModified ()</b></big><br>\r
- <br>\r
- <u><i>Find if study is modified:</i></u><br>\r
- <br>\r
- IsModified = myStudy.IsModified()<br>\r
- <br>\r
- if IsModified == 1:<br>\r
- &nbsp;&nbsp;&nbsp; print "The study is modified and not saved"<br>\r
- <br>\r
- <br>\r
- <big><b>boolean IsEmpty ()</b></big><br>\r
- <br>\r
- <u><i>Find if study is empty:</i></u><br>\r
-  <br>\r
-  IsEmpty = myStudy.IsEmpty()<br>\r
-  <br>\r
-  if IsEmpty == 1:<br>\r
-  &nbsp;&nbsp;&nbsp; print "The study is empty"<br>\r
- <br>\r
- <br>\r
- <br>\r
- <br>\r
\r
-<div align="center"><small><small><u><big><big><a\r
- name="SALOMEDS::StudyBuilder_impl"></a><font color="#000000"\r
- face="Helvetica, Arial, sans-serif"><big><big><b>SALOMEDS::StudyBuilder\r
-interface</b></big></big></font></big></big></u></small></small><br>\r
- </div>\r
- <br>\r
- <br>\r
- <br>\r
- <big><b><a class="el" href="interfaceSALOMEDS_1_1SComponent.html">SComponent</a> \r
-NewComponent ( in string <i>ComponentDataType</i> )</b></big><br>\r
- <br>\r
- <u><i>Create Geometry SComponent:</i></u><br>\r
- <br>\r
- myBuilder = myStudy.NewBuilder()<br>\r
- father = myBuilder.NewComponent("GEOM")<br>\r
- <br>\r
- <big><b><br>\r
- void DefineComponentInstance ( in <a class="el"\r
- href="interfaceSALOMEDS_1_1SComponent.html">SComponent</a> <i>aComponent</i>,\r
-in Object <i>ComponentIOR</i> )</b></big><br>\r
- <br>\r
- <u><i>Define the instance to the created geometry component:</i></u><br>\r
- <br>\r
- <i># find geom component</i><br>\r
- myLCC = batchmode_salome.lcc<br>\r
- geom = myLCC.FindOrLoadComponent("FactoryServer", "Geometry")<br>\r
- geom = geom._narrow(GEOM.GEOM_Gen)<br>\r
- geom.GetCurrentStudy(myStudyId)<br>\r
- <br>\r
- myBuilder = myStudy.NewBuilder()<br>\r
- <br>\r
- father = myBuilder.NewComponent("GEOM")<br>\r
- myBuilder.DefineComponentInstance(father,geom)<br>\r
- <br>\r
- <br>\r
- <big><b><a class="el" href="interfaceSALOMEDS_1_1SObject.html">SObject</a> \r
-NewObject ( in&nbsp;<a class="el"\r
- href="interfaceSALOMEDS_1_1SObject.html">SObject</a> <i>theFatherObject</i>\r
-)</b></big><br>\r
- <br>\r
- <u><i>Create box and add it to study:</i></u><br>\r
- <br>\r
- from batchmode_geompy import *<br>\r
- <br>\r
- <i># create a box</i><br>\r
- box = geom.MakeBox(0,0,0,100,100,150)<br>\r
- <br>\r
- ior = orb.object_to_string(box)<br>\r
- box._set_Name(ior)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>\r
- <br>\r
- <i># create Geometry SComponent</i><br>\r
- father = myBuilder.NewComponent("GEOM")<br>\r
- A1 = myBuilder.FindOrCreateAttribute(father, "AttributeName");<br>\r
- FName = A1._narrow(SALOMEDS.AttributeName)<br>\r
- FName.SetValue("Geometry")<br>\r
- myBuilder.DefineComponentInstance(father,geom)<br>\r
- <br>\r
- <i># add box to Study</i><br>\r
- myBuilder.NewCommand()<br>\r
- newObj = myBuilder.NewObject(father)<br>\r
- A1 = myBuilder.FindOrCreateAttribute(newObj, "AttributeIOR");<br>\r
- ObjIOR = A1._narrow(SALOMEDS.AttributeIOR)<br>\r
- ObjIOR.SetValue(ior)<br>\r
- A2 = myBuilder.FindOrCreateAttribute(newObj, "AttributeName");<br>\r
- ObjName = A2._narrow(SALOMEDS.AttributeName)<br>\r
- ObjName.SetValue("Common_operation")<br>\r
- id = newObj.GetID()<br>\r
- box._set_StudyShapeId(id)<br>\r
- myBuilder.CommitCommand()<br>\r
- <br>\r
- <br>\r
- <b><big>void RemoveObject ( in&nbsp;<a class="el"\r
- href="interfaceSALOMEDS_1_1SObject.html">SObject</a> <i>anObject</i> )</big></b><br>\r
- <br>\r
- <u><i># Remove CutPlanes SObject from the StudyBuilder (delete cutplanes):</i></u><br>\r
- <br>\r
- SObj=myStudy.FindObjectIOR(cutplanes.GetID())<br>\r
- myBuilder = newStudy.NewBuilder()<br>\r
- myBuilder.RemoveObject(SObj)<br>\r
- <br>\r
- <b><big><br>\r
- void LoadWith ( in&nbsp;<a class="el"\r
- href="interfaceSALOMEDS_1_1SComponent.html">SComponent</a><i> sco</i>, in\r
-<a class="el" href="interfaceSALOMEDS_1_1Driver.html">Driver</a> <i>Engine</i>\r
-) raises (<a class="el" href="exceptionSALOME_1_1SALOME__Exception.html">SALOME::SALOME_Exception</a>)</big></b><br>\r
- <br>\r
- <i><u># Load Visu component:</u></i><br>\r
- <br>\r
- myBuilder = openedStudy.NewBuilder()<br>\r
- SCom=openedStudy.FindComponent("VISU")<br>\r
- myBuilder.LoadWith(SCom ,myVisu)<br>\r
- <br>\r
- <br>\r
- <big><b><a class="el" href="interfaceSALOMEDS_1_1GenericAttribute.html">GenericAttribute</a> \r
-FindOrCreateAttribute ( in&nbsp;<a class="el"\r
- href="interfaceSALOMEDS_1_1SObject.html">SObject</a> <i>anObject</i>,&nbsp;\r
-in string <i>aTypeOfAttribute</i>)</b></big><br>\r
- <br>\r
- <u><i>Create AttributeName attribute for created component an set value\r
-to it:</i></u><br>\r
- <br>\r
- myBuilder = myStudy.NewBuilder()<br>\r
- aComponent = myBuilder.NewComponent("User data")<br>\r
- <br>\r
- anAttr = myBuilder.FindOrCreateAttribute(aComponent, "AttributeName")<br>\r
- <br>\r
- anAttrName = anAttr._narrow(SALOMEDS.AttributeName) <br>\r
- anAttrName.SetValue("User data")<br>\r
- <br>\r
- <br>\r
- <big><b>boolean FindAttribute ( in  <a class="el"\r
- href="interfaceSALOMEDS_1_1SObject.html">SObject</a> <i>anObject,</i> out<i>&nbsp;</i><a\r
- class="el" href="interfaceSALOMEDS_1_1GenericAttribute.html">GenericAttribute</a><i> \r
-anAttribute</i>, in string <i>aTypeOfAttribute</i> )</b></big><br>\r
- <big><b><br>\r
- </b></big><i><u>Find AttributeName attribute of the field and print the\r
-field name:</u></i><br>\r
- <br>\r
- aFieldSObj&nbsp; = myStudy.FindObject("Head, -")<br>\r
- <br>\r
- myStudyBuilder.FindAttribute( aFieldSObj, anAttr, "AttributeName")<br>\r
- if res == 0:<br>\r
-  &nbsp;&nbsp;&nbsp; raise&nbsp; RuntimeError, "Error:&nbsp; Attribute not \r
-found"<br>\r
- <br>\r
- anAttr = anAttr._narrow(SALOMEDS.AttributeName);<br>\r
- aFieldName = anAttr.Value()<br>\r
- print "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ", aFieldName<br>\r
- <br>\r
- <br>\r
- <b><big>void RemoveAttribute ( in  <a class="el"\r
- href="interfaceSALOMEDS_1_1SObject.html">SObject</a> <i>anObject</i>, in\r
-string <i>aTypeOfAttribute</i> )</big></b><br>\r
- <big><b><br>\r
- </b><u><i><small>Remove AttributeSelectable attribute of the field SObject:</small></i></u><br>\r
- <b><br>\r
- </b></big>aFieldSObj&nbsp; = myStudy.FindObject("Head, -")<br>\r
-  <br>\r
-  myStudyBuilder.RemoveAttribute( aFieldSObj, "AttributeSelectable")<br>\r
- <big><b><br>\r
- <br>\r
- </b><b>void Addreference ( in&nbsp;<big>  <small><a class="el"\r
- href="interfaceSALOMEDS_1_1SObject.html">SObject</a></small></big><small> \r
-</small><i>anObject</i>, in&nbsp;</b><b>  <a class="el"\r
- href="interfaceSALOMEDS_1_1SObject.html">SObject</a> <i>theReferencedObject</i>\r
-)</b></big><br>\r
- <br>\r
- <u><i>Create a reference between created SObject and the existing field:</i></u><br>\r
- <br>\r
- aFieldSObj&nbsp; = myStudy.FindObject("Head, -")<br>\r
- aNewSObj = myBuilder.NewObject(myVisu)<br>\r
- <br>\r
- myBuilder.Addreference(aFieldSObj, aNewSObj)<br>\r
- <big><b><br>\r
- <br>\r
- </b></big><big><small><i><u><a name="NewCommand_ex"></a></u></i></small></big><big><small><b><big>void \r
-NewCommand ()<br>\r
- <br>\r
- </big></b><i><u>Create new command wich containes actions for changing the \r
-properties of the study:</u></i><b><big><br>\r
- <br>\r
- </big></b></small></big>A&nbsp;= myStudy.GetProperties()<br>\r
- A&nbsp;= aProperties._narrow(SALOMEDS.AttributeStudyProperties)<br>\r
-  <br>\r
- myBuilder = myStudy.NewBuilder()<br>\r
-  <br>\r
- myBuilder.NewCommand() <i> # creates a new command</i><br>\r
-  <br>\r
-  <i># change the properties of the study</i><br>\r
-  if A.IsLocked() == 0 :<br>\r
-  &nbsp;&nbsp;&nbsp; A.SetUserName("tester"); print 'A.SetUserName("tester"), \r
-A.GetUserName() = ', A.GetUserName()<br>\r
-  &nbsp;&nbsp;&nbsp; A.SetCreationDate(11,11,11,11,2002); print 'A.SetCreationDate(11,11,11,11,2002), \r
-A.GetCreationDate() =', A.GetCreationDate()<br>\r
-  &nbsp;&nbsp;&nbsp; print "A.IsModified() = ", A.IsModified()<br>\r
-  A.SetLocked(1)<br>\r
- <big><small><br>\r
- </small></big>myBuilder.CommitCommand() <i># commits all actions declared \r
-within the created command</i><big><br>\r
- <b><br>\r
- <br>\r
- void CommitCommand()<br>\r
- </b><small><br>\r
- </small><i><small>See the end of the <a href="#NewCommand_ex">previous example</a></small></i><b><br>\r
- <br>\r
- <br>\r
- void AbortCommand ()</b></big><br>\r
- <br>\r
- <big><small><i><u>Create new command wich containes actions for changing \r
-the properties of the study, cancel all declared actions:</u></i></small></big><br>\r
- <br>\r
- A&nbsp;= myStudy.GetProperties()<br>\r
-  A&nbsp;= aProperties._narrow(SALOMEDS.AttributeStudyProperties)<br>\r
-   <br>\r
-  myBuilder = myStudy.NewBuilder()<br>\r
-   <br>\r
-  myBuilder.NewCommand() <i> # creates a new command</i><br>\r
-   <br>\r
-   <i># change the properties of the study</i><br>\r
-   if A.IsLocked() == 0 :<br>\r
-   &nbsp;&nbsp;&nbsp; A.SetUserName("tester"); print 'A.SetUserName("tester"), \r
-A.GetUserName() = ', A.GetUserName()<br>\r
-   &nbsp;&nbsp;&nbsp; A.SetCreationDate(11,11,11,11,2002); print 'A.SetCreationDate(11,11,11,11,2002), \r
-A.GetCreationDate() =', A.GetCreationDate()<br>\r
-   &nbsp;&nbsp;&nbsp; print "A.IsModified() = ", A.IsModified()<br>\r
-   A.SetLocked(1)<br>\r
-  <big><small><br>\r
-  </small></big>myBuilder.AbortCommand() <i># abort all actions declared\r
-within the created command</i><br>\r
- <br>\r
- <br>\r
- <big><b>void Undo () raises (<a class="el"\r
- href="exceptionSALOMEDS_1_1StudyBuilder_1_1LockProtection.html">LockProtection</a>)</b><b> \r
-<small>, </small></b></big><br>\r
- <big><b>void Redo ()</b></big> <big><b>raises (<a class="el"\r
- href="exceptionSALOMEDS_1_1StudyBuilder_1_1LockProtection.html">LockProtection</a>)</b></big><br>\r
- <br>\r
- <big><small><i><u>Create new command wich containes actions for changing \r
-the properties of the study, <br>\r
- cancel all declared actions and then redo it with the help of undo/redo\r
-mechanism:</u></i></small></big><br>\r
- <br>\r
- A&nbsp;= myStudy.GetProperties()<br>\r
-   A&nbsp;= aProperties._narrow(SALOMEDS.AttributeStudyProperties)<br>\r
-    <br>\r
-   myBuilder = myStudy.NewBuilder()<br>\r
-    <br>\r
-   myBuilder.NewCommand() <i> # creates a new command</i><br>\r
-    <br>\r
-    <i># change the properties of the study</i><br>\r
-    if A.IsLocked() == 0 :<br>\r
-    &nbsp;&nbsp;&nbsp; A.SetUserName("tester"); print 'A.SetUserName("tester"), \r
-A.GetUserName() = ', A.GetUserName()<br>\r
-    &nbsp;&nbsp;&nbsp; A.SetCreationDate(11,11,11,11,2002); print 'A.SetCreationDate(11,11,11,11,2002), \r
-A.GetCreationDate() =', A.GetCreationDate()<br>\r
-    &nbsp;&nbsp;&nbsp; print "A.IsModified() = ", A.IsModified()<br>\r
-    A.SetLocked(1)<br>\r
-   <big><small><br>\r
- </small></big>myBuilder.CommitCommand() <i># commits all actions declared \r
-within the created command</i><br>\r
- <big><small><br>\r
-  </small></big>myBuilder.Undo() <i># cancels all actions of the command<br>\r
- <br>\r
- </i>myBuilder.Redo() <i># redoes all actions of the command</i><br>\r
- <i><br>\r
- <br>\r
- <br>\r
- </i> \r
-<div align="center"><small><small><u><big><big><a\r
- name="SALOMEDS::StudyManager_impl"></a><font color="#000000"\r
- face="Helvetica, Arial, sans-serif"><big><big><b>SALOMEDS::StudyManager\r
-interface</b></big></big></font></big></big></u></small></small><br>\r
- </div>\r
- <i><br>\r
- <br>\r
- <br>\r
- </i><big><b><a class="el" href="interfaceSALOMEDS_1_1Study.html">Study</a> \r
-NewStudy ( in string <i>study_name</i> )</b></big><br>\r
- <i><br>\r
- <u>Create the study with the name "Test_Study":</u></i><br>\r
- <br>\r
- myNewStudy = myStudyManager.NewStudy("Test_Study")<br>\r
- <br>\r
- <br>\r
- <big><b><a class="el" href="interfaceSALOMEDS_1_1Study.html">Study</a> Open\r
-( in </b></big><a class="el" href="namespaceSALOMEDS.html#a0">URL</a><big><b> \r
-<i>aStudyUrl</i> ) raises </b></big>(<a class="el"\r
- href="exceptionSALOME_1_1SALOME__Exception.html">SALOME::SALOME_Exception</a>)<br>\r
- <br>\r
- <i><u>Open the study saved in the HDF file:</u></i><br>\r
- <br>\r
- file = 'saved_study.hdf'<br>\r
- <br>\r
- openedStudy=myStudyManager.Open(file)<br>\r
- <br>\r
- if openedStudy == None:<br>\r
- &nbsp;&nbsp;&nbsp; raise&nbsp; RuntimeError, "Can't open saved study!"<br>\r
- <br>\r
- <br>\r
- <big><b>void Save (in&nbsp;<a class="el"\r
- href="interfaceSALOMEDS_1_1Study.html">Study</a> <i>aStudy</i>, in boolean\r
-<i>theMultifile</i> )</b></big><big><b><br>\r
- <br>\r
- </b><small><u><i>Open study, import med file into it and save with the old \r
-path and filename:</i></u></small><b><br>\r
- <br>\r
- </b></big>file = "saved_study.hdf"<br>\r
- myMedFile ="medfile.med"<br>\r
-  <br>\r
-  openedStudy=myStudyManager.Open(file)<br>\r
-  <br>\r
- myVisu.SetCurrentStudy(openedStudy)<br>\r
- myResult = myVisu.ImportFile(myMedFile)<br>\r
- <br>\r
- myStudyManager.Save(openedStudy, 0)<br>\r
- <br>\r
- <big><b><br>\r
- void SaveAs ( in <small><a class="el" href="namespaceSALOMEDS.html#a0">URL</a></small> \r
-<i>aUrl</i>, in&nbsp;<small> <a class="el"\r
- href="interfaceSALOMEDS_1_1Study.html">Study</a> </small><i>aStudy</i>,\r
-&nbsp;<small><em></em></small></b></big><big><b>in boolean <i>theMultifile\r
-</i>)</b><br>\r
- <br>\r
- <small><u><i>Open study from the file and resave it in several files (using \r
-Multifile option while saving)</i></u></small><br>\r
- <br>\r
- </big>file = "saved_study.hdf"<br>\r
- newfile = "resaved_study.hdf"<br>\r
- <br>\r
- openedStudy=myStudyManager.Open(file)<br>\r
-   myStudyManager.SaveAs(newfile, openedStudy, 1)<br>\r
- <big><br>\r
- <br>\r
- void Close ( in&nbsp; <a class="el"\r
- href="interfaceSALOMEDS_1_1Study.html">Study</a> aStudy )</big><br>\r
- <br>\r
- <u><i>Close just opened study:</i></u><br>\r
- <br>\r
- file = "saved_study.hdf"<br>\r
- <br>\r
-  openedStudy=myStudyManager.Open(file)<br>\r
-    myStudyManager.Close(openedStudy)<br>\r
- <br>\r
- <br>\r
- <br>\r
\r
-<div align="center"><small><small><u><big><big><a\r
- name="SALOMEDS::SObject_impl"></a><font color="#000000"\r
- face="Helvetica, Arial, sans-serif"><big><big><b>SALOMEDS::SObject interface</b></big></big></font></big></big></u></small></small><br>\r
- </div>\r
- <br>\r
- <br>\r
- <br>\r
- <big><b><a class="el" href="namespaceSALOMEDS.html#a1">ID</a> GetID ()</b></big><br>\r
- <br>\r
- <u><i>Create new SObject and get its ID:</i></u><br>\r
- <br>\r
- mySObj = myBuilder.NewObject(myFather)<br>\r
- <br>\r
- myID = &nbsp;mySObj.GetID()<br>\r
- <br>\r
- <br>\r
- <big><b><a class="el" href="interfaceSALOMEDS_1_1SComponent.html">SComponent</a> \r
-GetFatherComponent ()</b></big><br>\r
- <br>\r
- <u><i>Get father component of the SObject:</i></u><br>\r
- <br>\r
- myFather = mySObj.GetFatherComponent();<br>\r
- <br>\r
- <br>\r
- <big><b>boolean FindAttribute ( out&nbsp;<a class="el"\r
- href="interfaceSALOMEDS_1_1GenericAttribute.html">GenericAttribute</a> <i>anAttribute</i>,\r
-in string <i>aTypeOfAttribute </i>)</b></big><br>\r
- <br>\r
- <u><i>Find the AttributeName attribute of the field:</i></u><br>\r
- <br>\r
- aFieldSObj&nbsp; = myStudy.FindObject("Head, -")<br>\r
-  <br>\r
-  res = aFieldSObj.FindAttribute( anAttr, "AttributeName")<br>\r
-  if res == 0:<br>\r
-   &nbsp;&nbsp;&nbsp; raise&nbsp; RuntimeError, "Error:&nbsp; Attribute not \r
-found"<br>\r
- <br>\r
- <br>\r
- <big><b><a class="el" href="namespaceSALOMEDS.html#a9">ListOfAttributes</a> \r
-GetAllAttributes ()</b></big><br>\r
- <br>\r
- <i><u>Get list of all attributes of the SObject, find the number of attributes:</u></i><br>\r
- <br>\r
- attrs = mySObj.GetAllAttributes()<br>\r
- aLen = len(attrs) <i># number of attributes</i><br>\r
- <br>\r
- <br>\r
- <br>\r
- <br>\r
\r
-<div align="center"><small><small><u><big><big><a\r
- name="SALOMEDS::SComponent_impl"></a><font color="#000000"\r
- face="Helvetica, Arial, sans-serif"><big><big><b>SALOMEDS::SComponent interface</b></big></big></font></big></big></u></small></small><br>\r
- </div>\r
- <br>\r
- <br>\r
- <br>\r
- <big><b>string ComponentDataType ()</b></big><br>\r
- <br>\r
- <i><u><a name="ComponentIterator_ex"></a>Print names of all components wich \r
-the study contains:</u></i><br>\r
- <br>\r
- aCompItr = myStudy.NewComponentIterator() <br>\r
- <br>\r
- while aCompItr.More():<br>\r
- &nbsp;&nbsp;&nbsp; aComp = aCompItr.Value()<br>\r
- &nbsp;&nbsp;&nbsp; aName = aComp.ComponentDataType()<br>\r
- &nbsp;&nbsp;&nbsp; print "Component name = ", aName<br>\r
- &nbsp;&nbsp;&nbsp; aCompItr.Next()<br>\r
- <br>\r
- <br>\r
- <i><b>Other methods are inherited.</b></i><br>\r
- <br>\r
- <br>\r
- <br>\r
- <br>\r
\r
-<div align="center"><small><small><u><big><big><a\r
- name="SALOMEDS::SComponentIterator_impl"></a><font color="#000000"\r
- face="Helvetica, Arial, sans-serif"><big><big><b>SALOMEDS::SComponentIterator\r
- interface</b></big></big></font></big></big></u></small></small><br>\r
- </div>\r
- <br>\r
- <br>\r
- <br>\r
- <big><b>boolean More (), </b><b>void Next (), </b></big><big><b><a\r
- class="el" href="interfaceSALOMEDS_1_1SComponent.html">SComponent</a> Value\r
-()</b></big><br>\r
- <br>\r
- <big><i><small>See <a href="examples_Study.html#ComponentIterator_ex">another \r
-example</a></small></i></big><br>\r
- <br>\r
- &nbsp;&nbsp; <br>\r
- <br>\r
\r
-<div align="center"><small><small><u><big><big><a\r
- name="SALOMEDS::ChildIterator_impl"></a><font color="#000000"\r
- face="Helvetica, Arial, sans-serif"><big><big><b>SALOMEDS::ChildIterator\r
- interface</b></big></big></font></big></big></u></small></small><br>\r
- </div>\r
- <br>\r
- <br>\r
- <br>\r
- <big><b>boolean More () , void Next (), <a class="el"\r
- href="interfaceSALOMEDS_1_1SObject.html">SObject</a> Value ()</b></big><br>\r
- <br>\r
- <u><i>Print all mesh names of imported MED file with the help of ChildIterator:</i></u><br>\r
- <br>\r
- aResult = myVisu.ImportFile("MedFile.med")<br>\r
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>\r
- myStudy = theVisu.GetCurrentStudy()<br>\r
- aSObj = myLocalStudy.FindObjectIOR(aResult.GetID())<br>\r
- <br>\r
- aMeshIter = myLocalStudy.NewChildIterator(aSObj);&nbsp;<i> # creating new \r
-child iterator</i><br>\r
- <br>\r
- while aMeshIter.More() : &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \r
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;\r
-&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; <i># check if one more\r
-child level exists.     </i><br>\r
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aMeshSObj = aMeshIter.Value() \r
-&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; \r
-&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;# <i>returns the SObject corresponding \r
-to the current object found by the iterator.      </i>&nbsp;<br>\r
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aMeshIter.Next() <i>&nbsp; &nbsp; \r
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \r
-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \r
-&nbsp; &nbsp;# passes the iterator to the next level.     </i><br>\r
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; anAttr = aMeshSObj.FindAttribute("AttributeName")[1]<br>\r
- &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if anAttr is None :<br>\r
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; \r
-aMeshSObj = aMeshIter.Value()<br>\r
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; \r
-&nbsp; aMeshIter.Next()<br>\r
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; \r
-anAttr = aMeshSObj.FindAttribute("AttributeName")[1]<br>\r
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; anAttr = anAttr._narrow(SALOMEDS.AttributeName);<br>\r
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aMeshName = anAttr.Value()<br>\r
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print "&nbsp; ", aMeshName<br>\r
- <br>\r
- <br>\r
- <br>\r
\r
-<div align="center"><small><small><u><big><big><a\r
- name="SALOMEDS::AttributeComment_impl"\r
- href="#SALOMEDS::AttributeComment_impl"></a><font color="#000000"\r
- face="Helvetica, Arial, sans-serif"><big><big><b>SALOMEDS::AttributeComment\r
- interface</b></big></big></font></big></big></u></small></small><br>\r
- </div>\r
- <br>\r
- <br>\r
- <big><b>string Value (), &nbsp;void SetValue ( in string <i>value </i>)</b></big><br>\r
- <br>\r
- <u><i>Find the AttributeComment attribute of the "Head" field in the study, \r
-print it, then change it to "My Comment" string:</i></u><br>\r
- <br>\r
- aFieldSObj&nbsp; = myStudy.FindObject("Head, -")<br>\r
- anAttr = aFieldSObj.FindAttribute("AttributeComment")[1]<br>\r
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \r
-anAttr = anAttr._narrow(SALOMEDS.AttributeComment);<br>\r
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \r
-aFieldComment = anAttr.Value()<br>\r
- <br>\r
- print "AttributeComment", anAttr<br>\r
- <br>\r
- anAttr.SetValue ("My Comment")<br>\r
\r
-<pre></pre>\r
- <br>\r
-</body>\r
-</html>\r
+<!DOCTYPE doctype PUBLIC "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+            
+  <meta http-equiv="Content-Type"
+ content="text/html; charset=iso-8859-1">
+            
+  <meta name="GENERATOR"
+ content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+  <title>Main Page</title>
+                   
+  <link href="doxygen.css" rel="stylesheet" type="text/css">
+</head>
+  <body>
+   &nbsp;   
+<center>  
+<table width="96%">
+   <tbody>
+      <tr>
+   <td><a href="http://www.opencascade.com"><img src="sources/ogocorp.gif"
+ border="0" height="46" width="122">
+        </a></td>
+     <td>               
+      <div align="right"><a href="http://www.opencascade.org/SALOME/"><img
+ src="sources/application.gif" border="0" height="46" width="108">
+        </a></div>
+   </td>
+   </tr>
+         
+  </tbody>  
+</table>
+  </center>
+       
+<h1><a name="page2">Examples</a> </h1>
+     <br>
+  <br>
+   
+<div align="justify">&nbsp;&nbsp;&nbsp; &nbsp;<big><b><i> <small>Interfaces:</small></i></b></big><br>
+  <br>
+  &nbsp; &nbsp; &nbsp; <a href="#SALOMEDS::Study_impl">SALOMEDS::Study</a><br>
+  &nbsp;&nbsp;&nbsp; &nbsp; <a href="#SALOMEDS::StudyBuilder_impl">SALOMEDS::StudyBuilder</a><br>
+  &nbsp;&nbsp; &nbsp;&nbsp; <a href="#SALOMEDS::StudyManager_impl">SALOMEDS::StudyManager</a><br>
+  &nbsp;&nbsp;&nbsp; &nbsp; <a href="#SALOMEDS::SObject_impl">SALOMEDS::SObject</a><br>
+&nbsp;&nbsp;&nbsp; &nbsp; <a href="#SALOMEDS::SComponent_impl">SALOMEDS::SComponent</a><br>
+  &nbsp; &nbsp; &nbsp; <a href="#SALOMEDS::SComponentIterator_impl">SALOMEDS::SComponentIterator</a><br>
+  &nbsp; &nbsp; &nbsp; <a href="#SALOMEDS::ChildIterator_impl">SALOMEDS::ChildIterator<br>
+ </a> &nbsp; &nbsp; &nbsp;<a href="#SALOMEDS::AttributeComment_impl"> SALOMEDS::AttributeComment</a><br>
+   &nbsp;&nbsp;&nbsp; &nbsp;<br>
+  </div>
+  <br>
+  <br>
+  <br>
+   
+<div align="center">&nbsp;&nbsp;&nbsp; &nbsp; <small><small><u><big><big><a
+ name="SALOMEDS::Study_impl"></a><font color="#000000"
+ face="Helvetica, Arial, sans-serif"><big><big><b>SALOMEDS::Study interface</b></big></big></font></big></big></u></small></small><br>
+  <br>
+   
+<div align="left">                  <big><br>
+  </big></div>
+  <big><br>
+  </big>  
+<div align="left"><b><big><a class="el"
+ href="interfaceSALOMEDS_1_1SComponent.html">SComponent</a>  FindComponent(
+in string <i>aComponentName </i>)</big></b><br>
+  <i><br>
+  <u>Find GEOMETRY component in the opened study by its name:</u></i><br>
+  <br>
+  &nbsp;&nbsp;&nbsp; str= os.getenv("TmpDir")<br>
+  &nbsp;&nbsp;&nbsp; if str == None:<br>
+  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; str = "/tmp"<br>
+  &nbsp;&nbsp;&nbsp; file = str+"/test.hdf"<br>
+  <br>
+  &nbsp;&nbsp;&nbsp; openedStudy=batchmode_geompy.myStudyManager.Open(file)<br>
+  <br>
+  &nbsp;&nbsp;&nbsp; father = openedStudy.FindComponent("GEOM")<br>
+  &nbsp;&nbsp;&nbsp; if father is None:<br>
+  &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;raise&nbsp; RuntimeError, "Geom
+ component is not found!&nbsp; Wrong study is opened." <br>
+  <br>
+  <br>
+  </div>
+   
+<div align="left"><b><big><a class="el"
+ href="interfaceSALOMEDS_1_1SObject.html">SObject</a>  FindObject ( in string
+<em>anObjectName </em>)</big></b><br>
+  <br>
+  <u><i>Find the SObject of the box by its NameAttribute "box":</i></u><br>
+  </div>
+   
+<div align="left"><br>
+  </div>
+   
+<div align="left">box = openedStudy.FindObject("box")<br>
+  if box is None :<br>
+  &nbsp;&nbsp;&nbsp; raise&nbsp; RuntimeError, "box was not found! Wrong
+study  is opened."<br>
+  <br>
+  <br>
+  <small><big><big><a class="el"
+ href="interfaceSALOMEDS_1_1SObject.html">SObject</a></big></big><b><big><big>&nbsp;FindObjectID
+ ( in</big> <big><a class="el" href="namespaceSALOMEDS.html#a1">ID</a>  </big><em><big>aObjectID
+)</big><br>
+  #result: "/User data/Case1". <br>
+  </em><big><em></em></big><big><em></em></big></big></b></small><u><i>Find
+ the SObject of the box by its ID </i>"</u><u>0:1:1:2"<i>:</i></u><br>
+   <br>
+  </div>
+   
+<div align="left">box =openedStudy.FindObjectID("0:1:1:2")<br>
+  </div>
+   
+<div align="left">if box is None :<br>
+   &nbsp;&nbsp;&nbsp; raise&nbsp; RuntimeError, "box was not found! Wrong 
+ID is used."<br>
+  <br>
+  <br>
+  <small><big><big><a class="el"
+ href="interfaceSALOMEDS_1_1SObject.html">SObject</a></big></big></small><big><b>&nbsp;FindObjectIOR
+ ( in&nbsp;<a class="el" href="namespaceSALOMEDS.html#a1">ID</a>&nbsp;  <em>aObjectIOR</em>
+)</b></big><br>
+  <br>
+  <u><i>Find the SObject </i></u><u><i>of the result on imported MED file 
+by it's IOR:</i></u><br>
+  <br>
+  theResult = myVisu.ImportFile(medFile)<br>
+  aSObj = myStudy.FindObjectIOR(theResult.GetID())<br>
+  <br>
+  <br>
+  <big><b><a class="el" href="interfaceSALOMEDS_1_1SObject.html">SObject</a>
+ FindObjectByPath ( in string <i>thePath</i> )</b></big><br>
+  <br>
+  <u><i>Find SObject by path to it:</i></u><br>
+  <i><br>
+  # create new auxiliary componen</i>t<br>
+  aComponent = myStudyBuilder.NewComponent("Virtual Component")<br>
+  <br>
+  # create auxiliary subtree<br>
+  aPath = "/Virtual Component/Case1"<br>
+  myStudyBuilder.AddDirectory(aPath)<br>
+  <br>
+  aSObj = myStudy.FindObjectByPath(aPath)<br>
+  <br>
+  <br>
+  <big><b>void SetContext ( in string <i>thePath</i>)</b> </big><b><big><big>/</big>
+ string GetContext ()</big></b><br>
+  <br>
+  <u><i>Set context of the study to the created case and get it for printing:</i></u><br>
+  <br>
+  aComponent = myStudyBuilder.NewComponent("User data")<br>
+  anAttr = aBuilder.FindOrCreateAttribute(aComponent, "AttributeName")<br>
+  anAttrName = anAttr._narrow(SALOMEDS.AttributeName) <br>
+  anAttrName.SetValue("User data")<br>
+  <br>
+  #Add a new case 'Case1' to the component 'User data'<br>
+  aBuilder.AddDirectory("/User data/Case1")<br>
+  <br>
+  #Set a study context to '/User data/Case1'<br>
+  aStudy.SetContext("/User data/Case1")<br>
+  <br>
+  #Print the current study context<br>
+  print aStudy.GetContext()<br>
+  <u><small><br>
+  </small><i>#result: "/User data/Case1".</i></u><br>
+  <br>
+  <br>
+  <big><b><a class="el" href="interfaceSALOMEDS_1_1ChildIterator.html">ChildIterator</a>
+ NewChildIterator ( in&nbsp;<a class="el"
+ href="interfaceSALOMEDS_1_1SObject.html">SObject</a>  aSO            ) </b></big><br>
+  <br>
+  <u><i>Import med file and print all mesh names that this file includes
+(mesh  is a child of the result of imported file):</i></u><br>
+  <br>
+  <i># define file name</i><br>
+  aFileName = datadir + "fra.med"<br>
+  <br>
+  <i># import file in visu module and get result</i><br>
+  theVisu = batchmode_visu.myVisu<br>
+  aResult = theVisu.ImportFile(aFileName)<br>
+  if aResult is None : raise RuntimeError, "Error"<br>
+  else : print "OK"<br>
+  &nbsp;<br>
+  <i># get current study and its' SObject&nbsp; </i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ <br>
+  myLocalStudy = theVisu.GetCurrentStudy()<br>
+  aSObj = myLocalStudy.FindObjectIOR(aResult.GetID())<br>
+  if aSObj is None : raise RuntimeError, "Error"<br>
+  else : print "OK"<br>
+  <br>
+  <i># create iterator by SObject of the current study</i><br>
+  aMeshIter = myLocalStudy.NewChildIterator(aSObj);<br>
+  <br>
+  <i># iterating in the current study (with the help of created iterator) 
+to find all mesh names</i> &nbsp;<br>
+  while aMeshIter.More() :<br>
+  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aMeshSObj = aMeshIter.Value()<br>
+  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aMeshIter.Next()<br>
+  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; anAttr = aMeshSObj.FindAttribute("AttributeName")[1]<br>
+  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if anAttr is None :<br>
+  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aMeshSObj
+ = aMeshIter.Value()<br>
+  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aMeshIter.Next()<br>
+  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; anAttr
+ = aMeshSObj.FindAttribute("AttributeName")[1]<br>
+  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; anAttr = anAttr._narrow(SALOMEDS.AttributeName);<br>
+  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aMeshName = anAttr.Value()<br>
+  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print "&nbsp; ", aMeshName<br>
+  <br>
+  <br>
+  <big><b><a class="el"
+ href="interfaceSALOMEDS_1_1SComponentIterator.html">SComponentIterator</a> 
+NewComponentIterator ()</b></big><br>
+ <br>
+ <u><i>Find the number an names of all components in the study:</i></u><br>
+ <br>
+ aCompItr = myStudy.NewComponentIterator()<br>
+ <br>
+ compNb = 0<br>
+ while aCompItr.More():<br>
+ &nbsp;&nbsp;&nbsp; aComp = aCompItr.Value()<br>
+ &nbsp;&nbsp;&nbsp; aName = aComp.ComponentDataType()<br>
+ &nbsp;&nbsp;&nbsp; print "Component name = ", aName<br>
+ &nbsp;&nbsp;&nbsp; compNb += 1<br>
+ &nbsp;&nbsp;&nbsp; aCompItr.Next()<br>
+ <br>
+ <br>
+ <big><b><a class="el" href="interfaceSALOMEDS_1_1StudyBuilder.html">StudyBuilder</a> 
+NewBuilder ()</b></big><br>
+  </div>
+  </div>
+ <br>
+ <i><u>Create a new StudyBuilder (uses to add or modify an object in the
+study ):</u></i><br>
+ <br>
+ myBuilder = myStudy.NewBuilder() <br>
+ <br>
+ <br>
+ <big><b><a class="el"
+ href="interfaceSALOMEDS_1_1AttributeStudyProperties.html">AttributeStudyProperties</a> 
+GetProperties ()</b></big><br>
+ <br>
+ <i><u>Get the attribute, which contains the properties of the study, and 
+change properties of the study </u></i><u>by changing it</u>: <br>
+ <br>
+ aProperties = myStudy.GetProperties()<br>
+ if aProperties == None :<br>
+ &nbsp;&nbsp;&nbsp; raise&nbsp; RuntimeError, "Can't create AttributeStudyProperties 
+attribute"<br>
+ aProperties&nbsp;= aProperties._narrow(SALOMEDS.AttributeStudyProperties)<br>
+ <br>
+ A = aProperties<br>
+ <br>
+ <i># print stydy properties</i><br>
+ print "A.GetUserName()= ", A.GetUserName()<br>
+ res,mm,hh,dd,mnth,yy=A.GetCreationDate()<br>
+ print "A.GetCreationDate() = ", mm,hh,dd,mnth,yy<br>
+ print "A.GetCreationMode() = ", A.GetCreationMode()<br>
+ print "A.IsModified() = ", A.IsModified()<br>
+ print "A.IsLocked() = ", A.IsLocked()<br>
+ <br>
+ <i># change the properties of the study</i><br>
+ if A.IsLocked() == 0 :<br>
+ &nbsp;&nbsp;&nbsp; A.SetUserName("tester"); print 'A.SetUserName("tester"), 
+A.GetUserName() = ', A.GetUserName()<br>
+ &nbsp;&nbsp;&nbsp; A.SetCreationDate(11,11,11,11,2002); print 'A.SetCreationDate(11,11,11,11,2002), 
+A.GetCreationDate() =', A.GetCreationDate()<br>
+ &nbsp;&nbsp;&nbsp; print "A.IsModified() = ", A.IsModified()<br>
+ A.SetLocked(1)<br>
+ <br>
+ <br>
+ <big><b>boolean IsModified ()</b></big><br>
+ <br>
+ <u><i>Find if study is modified:</i></u><br>
+ <br>
+ IsModified = myStudy.IsModified()<br>
+ <br>
+ if IsModified == 1:<br>
+ &nbsp;&nbsp;&nbsp; print "The study is modified and not saved"<br>
+ <br>
+ <br>
+ <big><b>boolean IsEmpty ()</b></big><br>
+ <br>
+ <u><i>Find if study is empty:</i></u><br>
+  <br>
+  IsEmpty = myStudy.IsEmpty()<br>
+  <br>
+  if IsEmpty == 1:<br>
+  &nbsp;&nbsp;&nbsp; print "The study is empty"<br>
+ <br>
+ <br>
+ <br>
+ <br>
+<div align="center"><small><small><u><big><big><a
+ name="SALOMEDS::StudyBuilder_impl"></a><font color="#000000"
+ face="Helvetica, Arial, sans-serif"><big><big><b>SALOMEDS::StudyBuilder
+interface</b></big></big></font></big></big></u></small></small><br>
+ </div>
+ <br>
+ <br>
+ <br>
+ <big><b><a class="el" href="interfaceSALOMEDS_1_1SComponent.html">SComponent</a> 
+NewComponent ( in string <i>ComponentDataType</i> )</b></big><br>
+ <br>
+ <u><i>Create Geometry SComponent:</i></u><br>
+ <br>
+ myBuilder = myStudy.NewBuilder()<br>
+ father = myBuilder.NewComponent("GEOM")<br>
+ <br>
+ <big><b><br>
+ void DefineComponentInstance ( in <a class="el"
+ href="interfaceSALOMEDS_1_1SComponent.html">SComponent</a> <i>aComponent</i>,
+in Object <i>ComponentIOR</i> )</b></big><br>
+ <br>
+ <u><i>Define the instance to the created geometry component:</i></u><br>
+ <br>
+ <i># find geom component</i><br>
+ myLCC = batchmode_salome.lcc<br>
+ geom = myLCC.FindOrLoadComponent("FactoryServer", "Geometry")<br>
+ geom = geom._narrow(GEOM.GEOM_Gen)<br>
+ geom.GetCurrentStudy(myStudyId)<br>
+ <br>
+ myBuilder = myStudy.NewBuilder()<br>
+ <br>
+ father = myBuilder.NewComponent("GEOM")<br>
+ myBuilder.DefineComponentInstance(father,geom)<br>
+ <br>
+ <br>
+ <big><b><a class="el" href="interfaceSALOMEDS_1_1SObject.html">SObject</a> 
+NewObject ( in&nbsp;<a class="el"
+ href="interfaceSALOMEDS_1_1SObject.html">SObject</a> <i>theFatherObject</i>
+)</b></big><br>
+ <br>
+ <u><i>Create box and add it to study:</i></u><br>
+ <br>
+ from batchmode_geompy import *<br>
+ <br>
+ <i># create a box</i><br>
+ box = geom.MakeBox(0,0,0,100,100,150)<br>
+ <br>
+ ior = orb.object_to_string(box)<br>
+ box._set_Name(ior)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
+ <br>
+ <i># create Geometry SComponent</i><br>
+ father = myBuilder.NewComponent("GEOM")<br>
+ A1 = myBuilder.FindOrCreateAttribute(father, "AttributeName");<br>
+ FName = A1._narrow(SALOMEDS.AttributeName)<br>
+ FName.SetValue("Geometry")<br>
+ myBuilder.DefineComponentInstance(father,geom)<br>
+ <br>
+ <i># add box to Study</i><br>
+ myBuilder.NewCommand()<br>
+ newObj = myBuilder.NewObject(father)<br>
+ A1 = myBuilder.FindOrCreateAttribute(newObj, "AttributeIOR");<br>
+ ObjIOR = A1._narrow(SALOMEDS.AttributeIOR)<br>
+ ObjIOR.SetValue(ior)<br>
+ A2 = myBuilder.FindOrCreateAttribute(newObj, "AttributeName");<br>
+ ObjName = A2._narrow(SALOMEDS.AttributeName)<br>
+ ObjName.SetValue("Common_operation")<br>
+ id = newObj.GetID()<br>
+ box._set_StudyShapeId(id)<br>
+ myBuilder.CommitCommand()<br>
+ <br>
+ <br>
+ <b><big>void RemoveObject ( in&nbsp;<a class="el"
+ href="interfaceSALOMEDS_1_1SObject.html">SObject</a> <i>anObject</i> )</big></b><br>
+ <br>
+ <u><i># Remove CutPlanes SObject from the StudyBuilder (delete cutplanes):</i></u><br>
+ <br>
+ SObj=myStudy.FindObjectIOR(cutplanes.GetID())<br>
+ myBuilder = newStudy.NewBuilder()<br>
+ myBuilder.RemoveObject(SObj)<br>
+ <br>
+ <b><big><br>
+ void LoadWith ( in&nbsp;<a class="el"
+ href="interfaceSALOMEDS_1_1SComponent.html">SComponent</a><i> sco</i>, in
+<a class="el" href="interfaceSALOMEDS_1_1Driver.html">Driver</a> <i>Engine</i>
+) raises (<a class="el" href="exceptionSALOME_1_1SALOME__Exception.html">SALOME::SALOME_Exception</a>)</big></b><br>
+ <br>
+ <i><u># Load Visu component:</u></i><br>
+ <br>
+ myBuilder = openedStudy.NewBuilder()<br>
+ SCom=openedStudy.FindComponent("VISU")<br>
+ myBuilder.LoadWith(SCom ,myVisu)<br>
+ <br>
+ <br>
+ <big><b><a class="el" href="interfaceSALOMEDS_1_1GenericAttribute.html">GenericAttribute</a> 
+FindOrCreateAttribute ( in&nbsp;<a class="el"
+ href="interfaceSALOMEDS_1_1SObject.html">SObject</a> <i>anObject</i>,&nbsp;
+in string <i>aTypeOfAttribute</i>)</b></big><br>
+ <br>
+ <u><i>Create AttributeName attribute for created component an set value
+to it:</i></u><br>
+ <br>
+ myBuilder = myStudy.NewBuilder()<br>
+ aComponent = myBuilder.NewComponent("User data")<br>
+ <br>
+ anAttr = myBuilder.FindOrCreateAttribute(aComponent, "AttributeName")<br>
+ <br>
+ anAttrName = anAttr._narrow(SALOMEDS.AttributeName) <br>
+ anAttrName.SetValue("User data")<br>
+ <br>
+ <br>
+ <big><b>boolean FindAttribute ( in  <a class="el"
+ href="interfaceSALOMEDS_1_1SObject.html">SObject</a> <i>anObject,</i> out<i>&nbsp;</i><a
+ class="el" href="interfaceSALOMEDS_1_1GenericAttribute.html">GenericAttribute</a><i> 
+anAttribute</i>, in string <i>aTypeOfAttribute</i> )</b></big><br>
+ <big><b><br>
+ </b></big><i><u>Find AttributeName attribute of the field and print the
+field name:</u></i><br>
+ <br>
+ aFieldSObj&nbsp; = myStudy.FindObject("Head, -")<br>
+ <br>
+ myStudyBuilder.FindAttribute( aFieldSObj, anAttr, "AttributeName")<br>
+ if res == 0:<br>
+  &nbsp;&nbsp;&nbsp; raise&nbsp; RuntimeError, "Error:&nbsp; Attribute not 
+found"<br>
+ <br>
+ anAttr = anAttr._narrow(SALOMEDS.AttributeName);<br>
+ aFieldName = anAttr.Value()<br>
+ print "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ", aFieldName<br>
+ <br>
+ <br>
+ <b><big>void RemoveAttribute ( in  <a class="el"
+ href="interfaceSALOMEDS_1_1SObject.html">SObject</a> <i>anObject</i>, in
+string <i>aTypeOfAttribute</i> )</big></b><br>
+ <big><b><br>
+ </b><u><i><small>Remove AttributeSelectable attribute of the field SObject:</small></i></u><br>
+ <b><br>
+ </b></big>aFieldSObj&nbsp; = myStudy.FindObject("Head, -")<br>
+  <br>
+  myStudyBuilder.RemoveAttribute( aFieldSObj, "AttributeSelectable")<br>
+ <big><b><br>
+ <br>
+ </b><b>void Addreference ( in&nbsp;<big>  <small><a class="el"
+ href="interfaceSALOMEDS_1_1SObject.html">SObject</a></small></big><small> 
+</small><i>anObject</i>, in&nbsp;</b><b>  <a class="el"
+ href="interfaceSALOMEDS_1_1SObject.html">SObject</a> <i>theReferencedObject</i>
+)</b></big><br>
+ <br>
+ <u><i>Create a reference between created SObject and the existing field:</i></u><br>
+ <br>
+ aFieldSObj&nbsp; = myStudy.FindObject("Head, -")<br>
+ aNewSObj = myBuilder.NewObject(myVisu)<br>
+ <br>
+ myBuilder.Addreference(aFieldSObj, aNewSObj)<br>
+ <big><b><br>
+ <br>
+ </b></big><big><small><i><u><a name="NewCommand_ex"></a></u></i></small></big><big><small><b><big>void 
+NewCommand ()<br>
+ <br>
+ </big></b><i><u>Create new command wich containes actions for changing the 
+properties of the study:</u></i><b><big><br>
+ <br>
+ </big></b></small></big>A&nbsp;= myStudy.GetProperties()<br>
+ A&nbsp;= aProperties._narrow(SALOMEDS.AttributeStudyProperties)<br>
+  <br>
+ myBuilder = myStudy.NewBuilder()<br>
+  <br>
+ myBuilder.NewCommand() <i> # creates a new command</i><br>
+  <br>
+  <i># change the properties of the study</i><br>
+  if A.IsLocked() == 0 :<br>
+  &nbsp;&nbsp;&nbsp; A.SetUserName("tester"); print 'A.SetUserName("tester"), 
+A.GetUserName() = ', A.GetUserName()<br>
+  &nbsp;&nbsp;&nbsp; A.SetCreationDate(11,11,11,11,2002); print 'A.SetCreationDate(11,11,11,11,2002), 
+A.GetCreationDate() =', A.GetCreationDate()<br>
+  &nbsp;&nbsp;&nbsp; print "A.IsModified() = ", A.IsModified()<br>
+  A.SetLocked(1)<br>
+ <big><small><br>
+ </small></big>myBuilder.CommitCommand() <i># commits all actions declared 
+within the created command</i><big><br>
+ <b><br>
+ <br>
+ void CommitCommand()<br>
+ </b><small><br>
+ </small><i><small>See the end of the <a href="#NewCommand_ex">previous example</a></small></i><b><br>
+ <br>
+ <br>
+ void AbortCommand ()</b></big><br>
+ <br>
+ <big><small><i><u>Create new command wich containes actions for changing 
+the properties of the study, cancel all declared actions:</u></i></small></big><br>
+ <br>
+ A&nbsp;= myStudy.GetProperties()<br>
+  A&nbsp;= aProperties._narrow(SALOMEDS.AttributeStudyProperties)<br>
+   <br>
+  myBuilder = myStudy.NewBuilder()<br>
+   <br>
+  myBuilder.NewCommand() <i> # creates a new command</i><br>
+   <br>
+   <i># change the properties of the study</i><br>
+   if A.IsLocked() == 0 :<br>
+   &nbsp;&nbsp;&nbsp; A.SetUserName("tester"); print 'A.SetUserName("tester"), 
+A.GetUserName() = ', A.GetUserName()<br>
+   &nbsp;&nbsp;&nbsp; A.SetCreationDate(11,11,11,11,2002); print 'A.SetCreationDate(11,11,11,11,2002), 
+A.GetCreationDate() =', A.GetCreationDate()<br>
+   &nbsp;&nbsp;&nbsp; print "A.IsModified() = ", A.IsModified()<br>
+   A.SetLocked(1)<br>
+  <big><small><br>
+  </small></big>myBuilder.AbortCommand() <i># abort all actions declared
+within the created command</i><br>
+ <br>
+ <br>
+ <big><b>void Undo () raises (<a class="el"
+ href="exceptionSALOMEDS_1_1StudyBuilder_1_1LockProtection.html">LockProtection</a>)</b><b> 
+<small>, </small></b></big><br>
+ <big><b>void Redo ()</b></big> <big><b>raises (<a class="el"
+ href="exceptionSALOMEDS_1_1StudyBuilder_1_1LockProtection.html">LockProtection</a>)</b></big><br>
+ <br>
+ <big><small><i><u>Create new command wich containes actions for changing 
+the properties of the study, <br>
+ cancel all declared actions and then redo it with the help of undo/redo
+mechanism:</u></i></small></big><br>
+ <br>
+ A&nbsp;= myStudy.GetProperties()<br>
+   A&nbsp;= aProperties._narrow(SALOMEDS.AttributeStudyProperties)<br>
+    <br>
+   myBuilder = myStudy.NewBuilder()<br>
+    <br>
+   myBuilder.NewCommand() <i> # creates a new command</i><br>
+    <br>
+    <i># change the properties of the study</i><br>
+    if A.IsLocked() == 0 :<br>
+    &nbsp;&nbsp;&nbsp; A.SetUserName("tester"); print 'A.SetUserName("tester"), 
+A.GetUserName() = ', A.GetUserName()<br>
+    &nbsp;&nbsp;&nbsp; A.SetCreationDate(11,11,11,11,2002); print 'A.SetCreationDate(11,11,11,11,2002), 
+A.GetCreationDate() =', A.GetCreationDate()<br>
+    &nbsp;&nbsp;&nbsp; print "A.IsModified() = ", A.IsModified()<br>
+    A.SetLocked(1)<br>
+   <big><small><br>
+ </small></big>myBuilder.CommitCommand() <i># commits all actions declared 
+within the created command</i><br>
+ <big><small><br>
+  </small></big>myBuilder.Undo() <i># cancels all actions of the command<br>
+ <br>
+ </i>myBuilder.Redo() <i># redoes all actions of the command</i><br>
+ <i><br>
+ <br>
+ <br>
+ </i> 
+<div align="center"><small><small><u><big><big><a
+ name="SALOMEDS::StudyManager_impl"></a><font color="#000000"
+ face="Helvetica, Arial, sans-serif"><big><big><b>SALOMEDS::StudyManager
+interface</b></big></big></font></big></big></u></small></small><br>
+ </div>
+ <i><br>
+ <br>
+ <br>
+ </i><big><b><a class="el" href="interfaceSALOMEDS_1_1Study.html">Study</a> 
+NewStudy ( in string <i>study_name</i> )</b></big><br>
+ <i><br>
+ <u>Create the study with the name "Test_Study":</u></i><br>
+ <br>
+ myNewStudy = myStudyManager.NewStudy("Test_Study")<br>
+ <br>
+ <br>
+ <big><b><a class="el" href="interfaceSALOMEDS_1_1Study.html">Study</a> Open
+( in </b></big><a class="el" href="namespaceSALOMEDS.html#a0">URL</a><big><b> 
+<i>aStudyUrl</i> ) raises </b></big>(<a class="el"
+ href="exceptionSALOME_1_1SALOME__Exception.html">SALOME::SALOME_Exception</a>)<br>
+ <br>
+ <i><u>Open the study saved in the HDF file:</u></i><br>
+ <br>
+ file = 'saved_study.hdf'<br>
+ <br>
+ openedStudy=myStudyManager.Open(file)<br>
+ <br>
+ if openedStudy == None:<br>
+ &nbsp;&nbsp;&nbsp; raise&nbsp; RuntimeError, "Can't open saved study!"<br>
+ <br>
+ <br>
+ <big><b>void Save (in&nbsp;<a class="el"
+ href="interfaceSALOMEDS_1_1Study.html">Study</a> <i>aStudy</i>, in boolean
+<i>theMultifile</i> )</b></big><big><b><br>
+ <br>
+ </b><small><u><i>Open study, import med file into it and save with the old 
+path and filename:</i></u></small><b><br>
+ <br>
+ </b></big>file = "saved_study.hdf"<br>
+ myMedFile ="medfile.med"<br>
+  <br>
+  openedStudy=myStudyManager.Open(file)<br>
+  <br>
+ myVisu.SetCurrentStudy(openedStudy)<br>
+ myResult = myVisu.ImportFile(myMedFile)<br>
+ <br>
+ myStudyManager.Save(openedStudy, 0)<br>
+ <br>
+ <big><b><br>
+ void SaveAs ( in <small><a class="el" href="namespaceSALOMEDS.html#a0">URL</a></small> 
+<i>aUrl</i>, in&nbsp;<small> <a class="el"
+ href="interfaceSALOMEDS_1_1Study.html">Study</a> </small><i>aStudy</i>,
+&nbsp;<small><em></em></small></b></big><big><b>in boolean <i>theMultifile
+</i>)</b><br>
+ <br>
+ <small><u><i>Open study from the file and resave it in several files (using 
+Multifile option while saving)</i></u></small><br>
+ <br>
+ </big>file = "saved_study.hdf"<br>
+ newfile = "resaved_study.hdf"<br>
+ <br>
+ openedStudy=myStudyManager.Open(file)<br>
+   myStudyManager.SaveAs(newfile, openedStudy, 1)<br>
+ <big><br>
+ <br>
+ void Close ( in&nbsp; <a class="el"
+ href="interfaceSALOMEDS_1_1Study.html">Study</a> aStudy )</big><br>
+ <br>
+ <u><i>Close just opened study:</i></u><br>
+ <br>
+ file = "saved_study.hdf"<br>
+ <br>
+  openedStudy=myStudyManager.Open(file)<br>
+    myStudyManager.Close(openedStudy)<br>
+ <br>
+ <br>
+ <br>
+<div align="center"><small><small><u><big><big><a
+ name="SALOMEDS::SObject_impl"></a><font color="#000000"
+ face="Helvetica, Arial, sans-serif"><big><big><b>SALOMEDS::SObject interface</b></big></big></font></big></big></u></small></small><br>
+ </div>
+ <br>
+ <br>
+ <br>
+ <big><b><a class="el" href="namespaceSALOMEDS.html#a1">ID</a> GetID ()</b></big><br>
+ <br>
+ <u><i>Create new SObject and get its ID:</i></u><br>
+ <br>
+ mySObj = myBuilder.NewObject(myFather)<br>
+ <br>
+ myID = &nbsp;mySObj.GetID()<br>
+ <br>
+ <br>
+ <big><b><a class="el" href="interfaceSALOMEDS_1_1SComponent.html">SComponent</a> 
+GetFatherComponent ()</b></big><br>
+ <br>
+ <u><i>Get father component of the SObject:</i></u><br>
+ <br>
+ myFather = mySObj.GetFatherComponent();<br>
+ <br>
+ <br>
+ <big><b>boolean FindAttribute ( out&nbsp;<a class="el"
+ href="interfaceSALOMEDS_1_1GenericAttribute.html">GenericAttribute</a> <i>anAttribute</i>,
+in string <i>aTypeOfAttribute </i>)</b></big><br>
+ <br>
+ <u><i>Find the AttributeName attribute of the field:</i></u><br>
+ <br>
+ aFieldSObj&nbsp; = myStudy.FindObject("Head, -")<br>
+  <br>
+  res = aFieldSObj.FindAttribute( anAttr, "AttributeName")<br>
+  if res == 0:<br>
+   &nbsp;&nbsp;&nbsp; raise&nbsp; RuntimeError, "Error:&nbsp; Attribute not 
+found"<br>
+ <br>
+ <br>
+ <big><b><a class="el" href="namespaceSALOMEDS.html#a9">ListOfAttributes</a> 
+GetAllAttributes ()</b></big><br>
+ <br>
+ <i><u>Get list of all attributes of the SObject, find the number of attributes:</u></i><br>
+ <br>
+ attrs = mySObj.GetAllAttributes()<br>
+ aLen = len(attrs) <i># number of attributes</i><br>
+ <br>
+ <br>
+ <br>
+ <br>
+<div align="center"><small><small><u><big><big><a
+ name="SALOMEDS::SComponent_impl"></a><font color="#000000"
+ face="Helvetica, Arial, sans-serif"><big><big><b>SALOMEDS::SComponent interface</b></big></big></font></big></big></u></small></small><br>
+ </div>
+ <br>
+ <br>
+ <br>
+ <big><b>string ComponentDataType ()</b></big><br>
+ <br>
+ <i><u><a name="ComponentIterator_ex"></a>Print names of all components wich 
+the study contains:</u></i><br>
+ <br>
+ aCompItr = myStudy.NewComponentIterator() <br>
+ <br>
+ while aCompItr.More():<br>
+ &nbsp;&nbsp;&nbsp; aComp = aCompItr.Value()<br>
+ &nbsp;&nbsp;&nbsp; aName = aComp.ComponentDataType()<br>
+ &nbsp;&nbsp;&nbsp; print "Component name = ", aName<br>
+ &nbsp;&nbsp;&nbsp; aCompItr.Next()<br>
+ <br>
+ <br>
+ <i><b>Other methods are inherited.</b></i><br>
+ <br>
+ <br>
+ <br>
+ <br>
+<div align="center"><small><small><u><big><big><a
+ name="SALOMEDS::SComponentIterator_impl"></a><font color="#000000"
+ face="Helvetica, Arial, sans-serif"><big><big><b>SALOMEDS::SComponentIterator
+ interface</b></big></big></font></big></big></u></small></small><br>
+ </div>
+ <br>
+ <br>
+ <br>
+ <big><b>boolean More (), </b><b>void Next (), </b></big><big><b><a
+ class="el" href="interfaceSALOMEDS_1_1SComponent.html">SComponent</a> Value
+()</b></big><br>
+ <br>
+ <big><i><small>See <a href="examples_Study.html#ComponentIterator_ex">another 
+example</a></small></i></big><br>
+ <br>
+ &nbsp;&nbsp; <br>
+ <br>
+<div align="center"><small><small><u><big><big><a
+ name="SALOMEDS::ChildIterator_impl"></a><font color="#000000"
+ face="Helvetica, Arial, sans-serif"><big><big><b>SALOMEDS::ChildIterator
+ interface</b></big></big></font></big></big></u></small></small><br>
+ </div>
+ <br>
+ <br>
+ <br>
+ <big><b>boolean More () , void Next (), <a class="el"
+ href="interfaceSALOMEDS_1_1SObject.html">SObject</a> Value ()</b></big><br>
+ <br>
+ <u><i>Print all mesh names of imported MED file with the help of ChildIterator:</i></u><br>
+ <br>
+ aResult = myVisu.ImportFile("MedFile.med")<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>
+ myStudy = theVisu.GetCurrentStudy()<br>
+ aSObj = myLocalStudy.FindObjectIOR(aResult.GetID())<br>
+ <br>
+ aMeshIter = myLocalStudy.NewChildIterator(aSObj);&nbsp;<i> # creating new 
+child iterator</i><br>
+ <br>
+ while aMeshIter.More() : &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; <i># check if one more
+child level exists.     </i><br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aMeshSObj = aMeshIter.Value() 
+&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;# <i>returns the SObject corresponding 
+to the current object found by the iterator.      </i>&nbsp;<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aMeshIter.Next() <i>&nbsp; &nbsp; 
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 
+&nbsp; &nbsp;# passes the iterator to the next level.     </i><br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; anAttr = aMeshSObj.FindAttribute("AttributeName")[1]<br>
+ &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if anAttr is None :<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
+aMeshSObj = aMeshIter.Value()<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 
+&nbsp; aMeshIter.Next()<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 
+anAttr = aMeshSObj.FindAttribute("AttributeName")[1]<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; anAttr = anAttr._narrow(SALOMEDS.AttributeName);<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aMeshName = anAttr.Value()<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print "&nbsp; ", aMeshName<br>
+ <br>
+ <br>
+ <br>
+<div align="center"><small><small><u><big><big><a
+ name="SALOMEDS::AttributeComment_impl"
+ href="#SALOMEDS::AttributeComment_impl"></a><font color="#000000"
+ face="Helvetica, Arial, sans-serif"><big><big><b>SALOMEDS::AttributeComment
+ interface</b></big></big></font></big></big></u></small></small><br>
+ </div>
+ <br>
+ <br>
+ <big><b>string Value (), &nbsp;void SetValue ( in string <i>value </i>)</b></big><br>
+ <br>
+ <u><i>Find the AttributeComment attribute of the "Head" field in the study, 
+print it, then change it to "My Comment" string:</i></u><br>
+ <br>
+ aFieldSObj&nbsp; = myStudy.FindObject("Head, -")<br>
+ anAttr = aFieldSObj.FindAttribute("AttributeComment")[1]<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+anAttr = anAttr._narrow(SALOMEDS.AttributeComment);<br>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
+aFieldComment = anAttr.Value()<br>
+ <br>
+ print "AttributeComment", anAttr<br>
+ <br>
+ anAttr.SetValue ("My Comment")<br>
+<pre></pre>
+ <br>
+</body>
+</html>
index 21ead079f65458311c75055dcceaf92230e5a626..f3f0a3f5398a5405425e74498e2db4297c35331c 100755 (executable)
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">\r
-<html>\r
-<head>\r
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">\r
-   <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">\r
-   <title>Main Page</title>\r
-<link href="doxygen.css" rel="stylesheet" type="text/css">\r
-</head>\r
-<body>\r
-&nbsp;\r
-<center><table WIDTH="96%" >\r
-<tr>\r
-<td><a href="http://www.opencascade.com"><img SRC="sources/logocorp.gif" BORDER=0 height=46 width=122></a></td>\r
-\r
-<td>\r
-<div align=right><a href="http://www.opencascade.org/SALOME/"><img SRC="sources/application.gif" BORDER=0 height=46 width=108></a></div>\r
-</td>\r
-</tr>\r
-</table></center>\r
-<a NAME="page1"></a>\r
-<h2>\r
-Mapping of IDL definitions to Python language.</h2>\r
-<a NAME="Intro"></a>\r
-<h2>\r
-Introduction</h2>\r
-SALOME is a distributed client/server application using the Common\r
-Object Request Broker Architecture (CORBA). CORBA architecture uses the\r
-Interface Definition Language (IDL), which specifies interfaces between\r
-CORBA objects. So with help of IDL CORBA's language independence is ensured\r
-. Because interfaces described in IDL can be mapped to the most of currently\r
-used programming languages, CORBA applications and components are thus\r
-independent of the language(s) used to implement them. In other words,\r
-a client written in C++ can communicate with a server written in Java,\r
-which in turn can communicate with another server written in COBOL, and\r
-so forth.\r
-<p>One important thing to remember about IDL is that it is not an implementation\r
-language. That is, applications can't be written in IDL. The sole purpose\r
-of IDL is to define interfaces; providing implementations for these interfaces\r
-is performed using some other language.\r
-<p>This page contains an abridged reference manual for mapping of IDL definitions\r
-to Python language. It will be useful for Python programmers who are not\r
-familiar with IDL language. All examples are taken from SALOME source\r
-files. The complete version of Python Language Mapping Specification can\r
-be found <a href="http://www.omg.org" target="top">here.</a>\r
-<br>&nbsp;\r
-<p><a NAME="contents"></a><b>CONTENTS:</b>\r
-<ul>&nbsp;\r
-<li>\r
-<a href="#subsection1">Using Scoped Names</a></li>\r
-\r
-<li>\r
-<a href="#subsection2">Mapping for Template and Array Types</a></li>\r
-\r
-<li>\r
-<a href="#subsection3">Mapping for Objects and Operations</a></li>\r
-\r
-<li>\r
-<a href="#subsection4">Narrowing Object References</a></li>\r
-\r
-<li>\r
-<a href="#subsection5">Mapping for Exceptions</a></li>\r
-\r
-<li>\r
-<a href="#subsection6">Mapping for Enumeration Types</a></li>\r
-\r
-<li>\r
-<a href="#subsection7">Mapping for Structured Types</a></li>\r
-</ul>\r
-<br>\r
-<a NAME="subsection1"></a>\r
-<h3>\r
-Using Scoped Names</h3>\r
-Python implements a module concept that is similar to the IDL scoping mechanisms,\r
-except that it does not allow for nested modules. In addition, Python requires\r
-each object to be implemented in a module; globally visible objects are\r
-not supported.\r
-<p>Because of these constraints, scoped names are translated into Python\r
-using the following rules:\r
-<p>\95 An IDL module mapped into a Python module. Modules containing modules\r
-are mapped to packages (i.e., directories with an <b>__init__</b> module\r
-containing all definitions excluding the nested modules). An implementation\r
-can chose to map toplevel definitions (including the module CORBA) to modules\r
-in an implementationdefined package, to allow concurrent installations\r
-of different CORBA runtime libraries. In that case, the implementation\r
-must provide additional modules so that toplevel modules can be used without\r
-importing them from a package.\r
-<p>\95 For all other scopes, a Python class is introduced that contains all\r
-the definitions inside this scope.\r
-<p>\95 Other global definitions (except modules) appear in a module whose\r
-name is implementation dependent. Implementations are encouraged to use\r
-the name of the IDL file when defining the name of that module.\r
-<p>For instance,\r
-<div class="fragment">\r
-<pre>module SALOMEDS {\r
-&nbsp;interface StudyManager {\r
-&nbsp; void&nbsp; Close(in Study aStudy);\r
-&nbsp;};\r
-};</pre>\r
-</div>\r
-would introduce a module SALOMEDS.py, which contains the following definitions:\r
-<div class="fragment">\r
-<pre># module SALOMEDS.py\r
-class StudyManager:\r
-&nbsp; def _Close(self,aStudy):\r
-&nbsp;&nbsp; pass #interfaces are discussed later</pre>\r
-</div>\r
-To avoid conflicts, IDL names that are also Python identifiers are prefixed\r
-with an underscore (\91_\92).\r
-<p><b><i><a href="#contents">Back to the contents</a></i></b><b><i></i></b>\r
-<p><a NAME="subsection2"></a>\r
-<h3>\r
-Mapping for Template and Array Types</h3>\r
-Both the bounded and the unbounded string type of IDL are mapped to the\r
-Python string type. Wide strings are represented by an implementation-defined\r
-type with the following properties:\r
-<p>\95 For the wide string X and the integer n, X[n] returns the nth character,\r
-which is a wide string of length 1.\r
-<p>\95 len(X) returns the number of characters of wide string X.\r
-<p>\95 CORBA.wstr(c) returns a wide character with the code point c in an\r
-implementation-defined encoding.\r
-<p>\95 X+Y returns the concatenation of wide strings X and Y.\r
-<p>\95 CORBA.word(CORBA.wstr(c)) == c\r
-<p>The sequence template is mapped to sequence objects (e.g., tuples or\r
-lists). Applications should not assume that values of a sequence type are\r
-mutable. Sequences and arrays of octets and characters are mapped to the\r
-string type for efficiency reasons.\r
-<p>For example, given the IDL definitions\r
-<div class="fragment">\r
-<pre>module SALOMEDS {\r
-&nbsp; typedef sequence &lt;string> StringSeq;\r
-&nbsp;&nbsp;&nbsp;\r
-&nbsp;&nbsp; interface AttributeTableOfInteger : GenericAttribute {\r
-\r
-&nbsp;&nbsp;&nbsp; void SetRowTitles(in StringSeq theTitles) raises(IncorrectArgumentLength);\r
-&nbsp;};\r
-};</pre>\r
-</div>\r
-a client could invoke the operation\r
-<div class="fragment">\r
-<pre>print My_AttributeTableOfInteger.SetRowTitles(["X","F"])</pre>\r
-</div>\r
-Array types are mapped like sequence templates. The application in this\r
-example also expects an IncorrectArgumentLength exception if it passes\r
-sequences that violate the bounds constraint or arrays of wrong size.\r
-<p>Another example with arrays. The following IDL definition\r
-<div class="fragment">\r
-<pre>module SALOMEDS {\r
-&nbsp;typedef sequence&lt;GenericAttribute> ListOfAttributes;\r
-&nbsp;interface SObject {\r
-&nbsp; ListOfAttributes&nbsp;&nbsp;&nbsp;&nbsp; GetAllAttributes();\r
-&nbsp;};\r
-};</pre>\r
-</div>\r
-is equal to\r
-<div class="fragment">\r
-<pre>import SALOMEDS\r
-\r
-attributes=[]\r
-&nbsp;\r
-attributes = My_SObject.GetAllAttributes()\r
-\r
-length = len(attributes)\r
-\r
-print "Attributes number = ", length\r
-print attributes</pre>\r
-</div>\r
-<b><i><a href="#contents">Back to the contents</a></i></b>\r
-<p><a NAME="subsection3"></a>\r
-<h3>\r
-Mapping for Objects and Operations</h3>\r
-A CORBA object reference is represented as a Python object at run-time.\r
-This object provides all the operations that are available on the interface\r
-of the object. Although this specification does not mandate the use of\r
-classes for stub objects, the following discussion uses classes to indicate\r
-the interface.\r
-<p>The nil object is represented by <b>None</b>.\r
-<p>If an operation expects parameters of the IDL Object type, any Python\r
-object representing an object reference might be passed as actual argument.\r
-<p>If an operation expects a parameter of an abstract interface, either\r
-an object implementing that interface, or a value supporting this interface\r
-may be passed as actual argument. The semantics of abstract values then\r
-define whether the argument is passed by value or by reference.\r
-<p>Operations of an interface map to methods available on the object references.\r
-Parameters with a parameter attribute of <b>in</b> or <b>inout</b> are\r
-passed from left to right tothe method, skipping <b>out</b> parameters.\r
-The return value of a method depends on the number of <b>out</b> parameters\r
-and the return type. If the operation returns a value, this value forms\r
-the first <i>result value</i>. All <b>inout</b> or <b>out</b> parameters\r
-form consecutive <i>result values</i>. The method result depends then on\r
-the number of <i>result values</i>:\r
-<p>\95 If there is no <i>result value</i>, the method returns None.\r
-<p>\95 If there is exactly one <i>result value</i>, it is returned as a single\r
-value.\r
-<p>\95 If there is more than one <i>result value</i>, all of them are packed\r
-into a tuple, and this tuple is returned.\r
-<p>Assuming the IDL definition\r
-<div class="fragment">\r
-<pre>module SALOMEDS{\r
-&nbsp;interface StudyBuilder{\r
-&nbsp; boolean FindAttribute&nbsp; ( in SObject anObject,&nbsp;\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out GenericAttribute anAttribute,&nbsp;\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in string aTypeOfAttribute );\r
-&nbsp;};\r
-};</pre>\r
-</div>\r
-a client could write\r
-<div class="fragment">\r
-<pre>from SALOMEDS import StudyBuilder;\r
-my_StudyBuilder=...\r
-&nbsp;&nbsp;\r
-&nbsp; res,A=my_StudyBuilder.FindAttribute(Sobj, "AttributeSequenceOfReal")</pre>\r
-</div>\r
-In this example <b>A</b> corresponds to the return value <b>anAttribute</b>\r
-and <b>res</b> to the <b>boolean</b> return value.\r
-<p>If an interface defines an <b>attribute name</b>, for example, the attribute\r
-is mapped into an operation <b>_get_name</b>. If the attribute is not <b>readonly</b>,\r
-there is an additional operation <b>_set_name</b>.\r
-<p>The IDL definition\r
-<div class="fragment">\r
-<pre>module SALOMEDS{\r
-&nbsp;interface Study{\r
-&nbsp; attribute string Name;\r
-&nbsp;};\r
-};</pre>\r
-</div>\r
-is equal to the following\r
-<div class="fragment">\r
-<pre>from SALOMEDS import Study\r
-My_Study=...\r
-&nbsp; Name=My_Study._get_name();\r
-&nbsp; Name=My_Study._set_name();</pre>\r
-</div>\r
-<b><i><a href="#contents">Back to the contents</a></i></b><b><i><a href="#contents"></a></i></b>\r
-<p><a NAME="subsection4"></a>\r
-<h3>\r
-Narrowing Object References</h3>\r
-Python objects returned from CORBA operations or pseudo-operations (such\r
-as string_to_object) might have a dynamic type, which is more specific\r
-than the static type as defined in the operation signature.\r
-<p>Since there is no efficient and reliable way of automatically creating\r
-the most specific type, explicit narrowing is necessary. To narrow an object\r
-reference <b>A</b> to an interface class <b>AttributeSequenceOfReal</b>,\r
-the client can use the following operation\r
-<div class="fragment">\r
-<pre>A = A._narrow(SALOMEDS.AttributeSequenceOfReal)</pre>\r
-</div>\r
-<b><i><a href="#contents">Back to the contents</a></i></b><b><i><a href="#contents"></a></i></b>\r
-<p><a NAME="subsection5"></a>\r
-<h3>\r
-Mapping for Exceptions</h3>\r
-An IDL exception is translated into a Python class derived from CORBA.UserException.\r
-System exceptions are derived from CORBA.SystemException. Both base classes\r
-are derived from CORBA.Exception. The parameters of the exception are mapped\r
-in the same way as the fields of a struct definition. When raising an exception,\r
-a new instance of the class is created; the constructor expects the exception\r
-parameters. For example, the definition\r
-<div class="fragment">\r
-<pre>module SALOMEDS{\r
-&nbsp;interface StudyBuilder{\r
-&nbsp; exception LockProtection {};\r
-&nbsp; void CommitCommand() raises(LockProtection);\r
-&nbsp;};\r
-};</pre>\r
-</div>\r
-could be used caught as\r
-<div class="fragment">\r
-<pre>from SALOMEDS import StudyBuilder;\r
-my_StudyBuilder=...\r
-try:\r
-&nbsp; my_StudyBuilder.CommitCommand();\r
-except StudyBuilder.LockProtection,value:\r
-&nbsp; print "Error! Study is locked for modifications"</pre>\r
-</div>\r
-\r
-<p><br><b><i><a href="#contents">Back to the contents</a></i></b><b><i><a href="#contents"></a></i></b>\r
-<p><a NAME="subsection6"></a>\r
-<h3>\r
-Mapping for Enumeration Types</h3>\r
-An enumeration is mapped into a number of constant objects in the name\r
-space where the enumeration is defined. An application may only test for\r
-equivalence of two enumeration values, and not assume that they behave\r
-like numbers. For example, the definition\r
-<div class="fragment">\r
-<pre>module VISU {\r
-&nbsp;interface PrsObject{\r
-&nbsp;\r
-&nbsp; enum PrsObjType{ TCURVE, TTABLE, TMESH, TCONTAINER,\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TSCALARMAP, TISOSURFACE, TDEFORMEDSHAPE,\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCUTPLANES, TVECTORS };\r
-&nbsp;};\r
-};</pre>\r
-</div>\r
-introduces the objects\r
-<div class="fragment">\r
-<pre>from VISU import PrsObject\r
-VISU.PrsObjType.TCURVE,VISU.PrsObjType.TTABLE,VISU.PrsObjType.TMESH,VISU.PrsObjType.TCONTAINER,\r
-VISU.PrsObjType.TSCALARMAP,VISU.PrsObjType.TISOSURFACE,VISU.PrsObjType.TDEFORMEDSHAPE,VISU.PrsObjType.TCUTPLANES,\r
-VISU.PrsObjType.TVECTORS</pre>\r
-</div>\r
-<b><i><a href="#contents">Back to the contents</a></i></b>\r
-<p><a NAME="subsection7"></a>\r
-<h3>\r
-Mapping for Structured Types</h3>\r
-An IDL struct definition is mapped into a Python class or type. For each\r
-field in the struct, there is a corresponding attribute in the class with\r
-the same name as the field. The constructor of the class expects the field\r
-values, from left to right. For example, the IDL definition\r
-<div class="fragment">\r
-<pre>struct SDate {\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; short Second;\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; short Minute;\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; short Hour;\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; short Day;\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; short Month;\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; short Year;\r
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };</pre>\r
-</div>\r
-could be used in the Python statements\r
-<div class="fragment">\r
-<pre>Date=SDate(30, 12, 15, 26, 1, 79)\r
-print Date.Second,Date.Minute,Date.Hour,Date.Day,Date.Month,Date.Year</pre>\r
-</div>\r
-\r
-<address>\r
-<b><i><a href="#contents">Back to the contents</a></i></b></address>\r
-\r
-</body>\r
-<!-- Generated by Doxygen 1.2.14 -->\r
-</html>\r
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+   <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+   <title>Main Page</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+&nbsp;
+<center><table WIDTH="96%" >
+<tr>
+<td><a href="http://www.opencascade.com"><img SRC="sources/logocorp.gif" BORDER=0 height=46 width=122></a></td>
+
+<td>
+<div align=right><a href="http://www.opencascade.org/SALOME/"><img SRC="sources/application.gif" BORDER=0 height=46 width=108></a></div>
+</td>
+</tr>
+</table></center>
+<a NAME="page1"></a>
+<h2>
+Mapping of IDL definitions to Python language.</h2>
+<a NAME="Intro"></a>
+<h2>
+Introduction</h2>
+SALOME is a distributed client/server application using the Common
+Object Request Broker Architecture (CORBA). CORBA architecture uses the
+Interface Definition Language (IDL), which specifies interfaces between
+CORBA objects. So with help of IDL CORBA's language independence is ensured
+. Because interfaces described in IDL can be mapped to the most of currently
+used programming languages, CORBA applications and components are thus
+independent of the language(s) used to implement them. In other words,
+a client written in C++ can communicate with a server written in Java,
+which in turn can communicate with another server written in COBOL, and
+so forth.
+<p>One important thing to remember about IDL is that it is not an implementation
+language. That is, applications can't be written in IDL. The sole purpose
+of IDL is to define interfaces; providing implementations for these interfaces
+is performed using some other language.
+<p>This page contains an abridged reference manual for mapping of IDL definitions
+to Python language. It will be useful for Python programmers who are not
+familiar with IDL language. All examples are taken from SALOME source
+files. The complete version of Python Language Mapping Specification can
+be found <a href="http://www.omg.org" target="top">here.</a>
+<br>&nbsp;
+<p><a NAME="contents"></a><b>CONTENTS:</b>
+<ul>&nbsp;
+<li>
+<a href="#subsection1">Using Scoped Names</a></li>
+
+<li>
+<a href="#subsection2">Mapping for Template and Array Types</a></li>
+
+<li>
+<a href="#subsection3">Mapping for Objects and Operations</a></li>
+
+<li>
+<a href="#subsection4">Narrowing Object References</a></li>
+
+<li>
+<a href="#subsection5">Mapping for Exceptions</a></li>
+
+<li>
+<a href="#subsection6">Mapping for Enumeration Types</a></li>
+
+<li>
+<a href="#subsection7">Mapping for Structured Types</a></li>
+</ul>
+<br>
+<a NAME="subsection1"></a>
+<h3>
+Using Scoped Names</h3>
+Python implements a module concept that is similar to the IDL scoping mechanisms,
+except that it does not allow for nested modules. In addition, Python requires
+each object to be implemented in a module; globally visible objects are
+not supported.
+<p>Because of these constraints, scoped names are translated into Python
+using the following rules:
+<p>\95 An IDL module mapped into a Python module. Modules containing modules
+are mapped to packages (i.e., directories with an <b>__init__</b> module
+containing all definitions excluding the nested modules). An implementation
+can chose to map toplevel definitions (including the module CORBA) to modules
+in an implementationdefined package, to allow concurrent installations
+of different CORBA runtime libraries. In that case, the implementation
+must provide additional modules so that toplevel modules can be used without
+importing them from a package.
+<p>\95 For all other scopes, a Python class is introduced that contains all
+the definitions inside this scope.
+<p>\95 Other global definitions (except modules) appear in a module whose
+name is implementation dependent. Implementations are encouraged to use
+the name of the IDL file when defining the name of that module.
+<p>For instance,
+<div class="fragment">
+<pre>module SALOMEDS {
+&nbsp;interface StudyManager {
+&nbsp; void&nbsp; Close(in Study aStudy);
+&nbsp;};
+};</pre>
+</div>
+would introduce a module SALOMEDS.py, which contains the following definitions:
+<div class="fragment">
+<pre># module SALOMEDS.py
+class StudyManager:
+&nbsp; def _Close(self,aStudy):
+&nbsp;&nbsp; pass #interfaces are discussed later</pre>
+</div>
+To avoid conflicts, IDL names that are also Python identifiers are prefixed
+with an underscore (\91_\92).
+<p><b><i><a href="#contents">Back to the contents</a></i></b><b><i></i></b>
+<p><a NAME="subsection2"></a>
+<h3>
+Mapping for Template and Array Types</h3>
+Both the bounded and the unbounded string type of IDL are mapped to the
+Python string type. Wide strings are represented by an implementation-defined
+type with the following properties:
+<p>\95 For the wide string X and the integer n, X[n] returns the nth character,
+which is a wide string of length 1.
+<p>\95 len(X) returns the number of characters of wide string X.
+<p>\95 CORBA.wstr(c) returns a wide character with the code point c in an
+implementation-defined encoding.
+<p>\95 X+Y returns the concatenation of wide strings X and Y.
+<p>\95 CORBA.word(CORBA.wstr(c)) == c
+<p>The sequence template is mapped to sequence objects (e.g., tuples or
+lists). Applications should not assume that values of a sequence type are
+mutable. Sequences and arrays of octets and characters are mapped to the
+string type for efficiency reasons.
+<p>For example, given the IDL definitions
+<div class="fragment">
+<pre>module SALOMEDS {
+&nbsp; typedef sequence &lt;string> StringSeq;
+&nbsp;&nbsp;&nbsp;
+&nbsp;&nbsp; interface AttributeTableOfInteger : GenericAttribute {
+
+&nbsp;&nbsp;&nbsp; void SetRowTitles(in StringSeq theTitles) raises(IncorrectArgumentLength);
+&nbsp;};
+};</pre>
+</div>
+a client could invoke the operation
+<div class="fragment">
+<pre>print My_AttributeTableOfInteger.SetRowTitles(["X","F"])</pre>
+</div>
+Array types are mapped like sequence templates. The application in this
+example also expects an IncorrectArgumentLength exception if it passes
+sequences that violate the bounds constraint or arrays of wrong size.
+<p>Another example with arrays. The following IDL definition
+<div class="fragment">
+<pre>module SALOMEDS {
+&nbsp;typedef sequence&lt;GenericAttribute> ListOfAttributes;
+&nbsp;interface SObject {
+&nbsp; ListOfAttributes&nbsp;&nbsp;&nbsp;&nbsp; GetAllAttributes();
+&nbsp;};
+};</pre>
+</div>
+is equal to
+<div class="fragment">
+<pre>import SALOMEDS
+
+attributes=[]
+&nbsp;
+attributes = My_SObject.GetAllAttributes()
+
+length = len(attributes)
+
+print "Attributes number = ", length
+print attributes</pre>
+</div>
+<b><i><a href="#contents">Back to the contents</a></i></b>
+<p><a NAME="subsection3"></a>
+<h3>
+Mapping for Objects and Operations</h3>
+A CORBA object reference is represented as a Python object at run-time.
+This object provides all the operations that are available on the interface
+of the object. Although this specification does not mandate the use of
+classes for stub objects, the following discussion uses classes to indicate
+the interface.
+<p>The nil object is represented by <b>None</b>.
+<p>If an operation expects parameters of the IDL Object type, any Python
+object representing an object reference might be passed as actual argument.
+<p>If an operation expects a parameter of an abstract interface, either
+an object implementing that interface, or a value supporting this interface
+may be passed as actual argument. The semantics of abstract values then
+define whether the argument is passed by value or by reference.
+<p>Operations of an interface map to methods available on the object references.
+Parameters with a parameter attribute of <b>in</b> or <b>inout</b> are
+passed from left to right tothe method, skipping <b>out</b> parameters.
+The return value of a method depends on the number of <b>out</b> parameters
+and the return type. If the operation returns a value, this value forms
+the first <i>result value</i>. All <b>inout</b> or <b>out</b> parameters
+form consecutive <i>result values</i>. The method result depends then on
+the number of <i>result values</i>:
+<p>\95 If there is no <i>result value</i>, the method returns None.
+<p>\95 If there is exactly one <i>result value</i>, it is returned as a single
+value.
+<p>\95 If there is more than one <i>result value</i>, all of them are packed
+into a tuple, and this tuple is returned.
+<p>Assuming the IDL definition
+<div class="fragment">
+<pre>module SALOMEDS{
+&nbsp;interface StudyBuilder{
+&nbsp; boolean FindAttribute&nbsp; ( in SObject anObject,&nbsp;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out GenericAttribute anAttribute,&nbsp;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in string aTypeOfAttribute );
+&nbsp;};
+};</pre>
+</div>
+a client could write
+<div class="fragment">
+<pre>from SALOMEDS import StudyBuilder;
+my_StudyBuilder=...
+&nbsp;&nbsp;
+&nbsp; res,A=my_StudyBuilder.FindAttribute(Sobj, "AttributeSequenceOfReal")</pre>
+</div>
+In this example <b>A</b> corresponds to the return value <b>anAttribute</b>
+and <b>res</b> to the <b>boolean</b> return value.
+<p>If an interface defines an <b>attribute name</b>, for example, the attribute
+is mapped into an operation <b>_get_name</b>. If the attribute is not <b>readonly</b>,
+there is an additional operation <b>_set_name</b>.
+<p>The IDL definition
+<div class="fragment">
+<pre>module SALOMEDS{
+&nbsp;interface Study{
+&nbsp; attribute string Name;
+&nbsp;};
+};</pre>
+</div>
+is equal to the following
+<div class="fragment">
+<pre>from SALOMEDS import Study
+My_Study=...
+&nbsp; Name=My_Study._get_name();
+&nbsp; Name=My_Study._set_name();</pre>
+</div>
+<b><i><a href="#contents">Back to the contents</a></i></b><b><i><a href="#contents"></a></i></b>
+<p><a NAME="subsection4"></a>
+<h3>
+Narrowing Object References</h3>
+Python objects returned from CORBA operations or pseudo-operations (such
+as string_to_object) might have a dynamic type, which is more specific
+than the static type as defined in the operation signature.
+<p>Since there is no efficient and reliable way of automatically creating
+the most specific type, explicit narrowing is necessary. To narrow an object
+reference <b>A</b> to an interface class <b>AttributeSequenceOfReal</b>,
+the client can use the following operation
+<div class="fragment">
+<pre>A = A._narrow(SALOMEDS.AttributeSequenceOfReal)</pre>
+</div>
+<b><i><a href="#contents">Back to the contents</a></i></b><b><i><a href="#contents"></a></i></b>
+<p><a NAME="subsection5"></a>
+<h3>
+Mapping for Exceptions</h3>
+An IDL exception is translated into a Python class derived from CORBA.UserException.
+System exceptions are derived from CORBA.SystemException. Both base classes
+are derived from CORBA.Exception. The parameters of the exception are mapped
+in the same way as the fields of a struct definition. When raising an exception,
+a new instance of the class is created; the constructor expects the exception
+parameters. For example, the definition
+<div class="fragment">
+<pre>module SALOMEDS{
+&nbsp;interface StudyBuilder{
+&nbsp; exception LockProtection {};
+&nbsp; void CommitCommand() raises(LockProtection);
+&nbsp;};
+};</pre>
+</div>
+could be used caught as
+<div class="fragment">
+<pre>from SALOMEDS import StudyBuilder;
+my_StudyBuilder=...
+try:
+&nbsp; my_StudyBuilder.CommitCommand();
+except StudyBuilder.LockProtection,value:
+&nbsp; print "Error! Study is locked for modifications"</pre>
+</div>
+
+<p><br><b><i><a href="#contents">Back to the contents</a></i></b><b><i><a href="#contents"></a></i></b>
+<p><a NAME="subsection6"></a>
+<h3>
+Mapping for Enumeration Types</h3>
+An enumeration is mapped into a number of constant objects in the name
+space where the enumeration is defined. An application may only test for
+equivalence of two enumeration values, and not assume that they behave
+like numbers. For example, the definition
+<div class="fragment">
+<pre>module VISU {
+&nbsp;interface PrsObject{
+&nbsp;
+&nbsp; enum PrsObjType{ TCURVE, TTABLE, TMESH, TCONTAINER,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TSCALARMAP, TISOSURFACE, TDEFORMEDSHAPE,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCUTPLANES, TVECTORS };
+&nbsp;};
+};</pre>
+</div>
+introduces the objects
+<div class="fragment">
+<pre>from VISU import PrsObject
+VISU.PrsObjType.TCURVE,VISU.PrsObjType.TTABLE,VISU.PrsObjType.TMESH,VISU.PrsObjType.TCONTAINER,
+VISU.PrsObjType.TSCALARMAP,VISU.PrsObjType.TISOSURFACE,VISU.PrsObjType.TDEFORMEDSHAPE,VISU.PrsObjType.TCUTPLANES,
+VISU.PrsObjType.TVECTORS</pre>
+</div>
+<b><i><a href="#contents">Back to the contents</a></i></b>
+<p><a NAME="subsection7"></a>
+<h3>
+Mapping for Structured Types</h3>
+An IDL struct definition is mapped into a Python class or type. For each
+field in the struct, there is a corresponding attribute in the class with
+the same name as the field. The constructor of the class expects the field
+values, from left to right. For example, the IDL definition
+<div class="fragment">
+<pre>struct SDate {
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; short Second;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; short Minute;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; short Hour;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; short Day;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; short Month;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; short Year;
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };</pre>
+</div>
+could be used in the Python statements
+<div class="fragment">
+<pre>Date=SDate(30, 12, 15, 26, 1, 79)
+print Date.Second,Date.Minute,Date.Hour,Date.Day,Date.Month,Date.Year</pre>
+</div>
+
+<address>
+<b><i><a href="#contents">Back to the contents</a></i></b></address>
+
+</body>
+<!-- Generated by Doxygen 1.2.14 -->
+</html>
diff --git a/doc/salome/tui/KERNEL/sources/static/ns_f3-1.jpg b/doc/salome/tui/KERNEL/sources/static/ns_f3-1.jpg
deleted file mode 100755 (executable)
index fd4f456..0000000
Binary files a/doc/salome/tui/KERNEL/sources/static/ns_f3-1.jpg and /dev/null differ
index 144d3c3414d1be6d90af039824c915842c6b8e3c..7f64f43697f677dc5df393fa2245b0ae3c4a25aa 100755 (executable)
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">\r
-<html>\r
-<head>\r
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">\r
-   <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">\r
-   <title>Main Page</title>\r
-<link href="doxygen.css" rel="stylesheet" type="text/css">\r
-</head>\r
-<body>\r
-&nbsp;\r
-<center><table WIDTH="96%" >\r
-<tr>\r
-<td><a href="http://www.opencascade.com"><img src="sources/logocorp.gif" BORDER=0 height=46 width=122></a></td>\r
-\r
-\r
-<td>\r
-<div align=right><a href="http://www.opencascade.org/SALOME/"><img src="sources/application.gif" BORDER=0 height=46 width=108></a></div>\r
-</td>\r
-</tr>\r
-</table></center>\r
-\r
-\r
-<h1><a name="page2">General overview</a>\r
-</h1>\r
-<a name="cont"></a><h2>Table of contents </h2>\r
-<b><i>\r
-<ul>\r
-  <li><a href="#1">1. Introduction</a></li>\r
-  <li><a href="#2">2. Basic principles </a></li>\r
-               \r
-  <li><a href="#3">3. Services and features of the SALOME kernel module</a></li>\r
-  <ul>\r
-               <li><a href="#3_1">3.1 Session service</a></li>\r
-               <li><a href="#3_2">3.2 Registry service  </a></li>\r
-               <li><a href="#3_3">3.3 Notification service  </a></li>\r
-               <li><a href="#3_4">3.4 Module catalog service  </a></li>\r
-               <li><a href="#3_5">3.5 Data type catalog  </a></li>\r
-               <li><a href="#3_6">3.6 Resource catalog  </a></li>\r
-               <li><a href="#3_7">3.7 Engine  </a></li>\r
-                       <ul>\r
-                       <li><a href="#3_7_1">3.7.1 Component class  </a></li>\r
-                       <li><a href="#3_7_2">3.7.2 Container class  </a></li>\r
-                       </ul>\r
-               </ul>\r
-</ul>\r
-</i> </b> <br>\r
-<a name="1"></a><h2>1. Introduction</h2>\r
-<p>The kernel corresponds to the minimal set of services required for the use of SALOME components (Supervisor, IAPP). \r
-The kernel is also used by application software components (solver) and their container. \r
-The kernel is associated to a unique user who can launch only one kernel at once. \r
-The kernel is launched and destroyed by voluntary actions of the user. These functions are realized via the\r
-use of scripts.</p>\r
-<p>The list of the kernel services related to communication issues is:</p>\r
-<ul>\r
-  <li>The Naming service</li>\r
-  <li> The Session service </li>\r
-  <li>The Life Cycle service </li>\r
-  <li>The Registry service </li>\r
-  <li>The Notification service </li>\r
-</ul>\r
-<p>This list is enlarged with CORBA independent services :</p>\r
-\r
-<ul>\r
-  <li>The module catalog service </li>\r
-  <li>The Data Type Catalog service </li>\r
-  <li>The resource catalog service </li>\r
-</ul>\r
-<p> SALOME kernel module also encapsulates the Engine\r
-<i><a href="#cont">Back to the contents</a></i>\r
-<a name="2"></a><h2>2. Basic principles </h2>\r
-<p>The SALOME user's desktop is a process on a machine. This process includes:</p>\r
-<ul>\r
-  <li>A graphic interface (based on Qt), </li>\r
-  <li>A text interface (Python interpreter), </li>\r
-  <li>A 3D visualization window shared by components.</li>\r
-</ul>\r
-<p>SALOME Modules decompose into an interface (widgets GUI, text mode TUI, 3D visualization V3D) and\r
-an engine.</p>\r
-<p>The description of a module and its components is obtained by consulting the module catalog.</p>\r
-<p>The interface is dynamically loaded in the process of the SALOME user's desktop. The engine is a CORBA\r
-server launched either on the local machine or on the distant machine.</p>\r
-<p>The engine (CORBA server) is created by a factory (or container). \r
-This factory is also a CORBA server. Several containers can be present on a machine. \r
-Some containers are specialized for types of components requiring a specific management. \r
-For example, a specific container is required for components performing parallel calculations.\r
-The engine includes at least a dynamically linked library in the container process. \r
-This library is the implementation of the CORBA server associated to the engine. \r
-If the engine is built from a pre-existent executable code, the library is simply a wrapper of the encapsulated code. \r
-It launches the code in a separate process. Wherever possible, the code is included into the dynamic library.\r
-<p>The container is one of the kernel services. If one needs to create a container on a distant machine, one creates a process resuming a part of the kernel services. The kernel can create other containers on distant machines via the trader (rsh). All the containers and the kernel share the same CORBA naming service with which they register.</p>\r
-<p>The user reaches the functions of various SALOME'S components, either in graphic interactive mode (GUI) or in command mode ( TUI), via a Python interpreter.</p>\r
-<i><a href="#cont">Back to the contents</a></i>\r
-<a name="3"></a>\r
-<h2>3. Services and features of the SALOME kernel module </h2>\r
-<p>This section gives a brief overview of the services composing the kernel module. \r
-  The <a href="overview_Life_Cycle.html">Life Cycle</a> and <a href="overview_Naming.html">Naming</a> \r
-  services are described in separate chapters of this reference manual.</p>\r
-  \r
-<a name="3_1"></a><h3>3.1 Session service </h3>\r
-<p>SALOME session describes the period starting from the kernel creation and \r
-  ending with its destruction. During this period the user can connect the session \r
-  and disconnect from it without ending this session. One connection log could \r
-  be written. A priori, no information resulting from another (past) session can \r
-  be used by the current session. </p>\r
- <p>Implementation of this service in SALOME application is provided by the class \r
-<a href="interfaceSALOME_1_1Session.html">Session</a> encapsulated in the package \r
-<a href="namespaceSALOME.html">SALOME</a>.</p> \r
-\r
-<a name="3_2"></a><h3>3.2 Registry service </h3>\r
-<p> The active component registry should contain:</p>\r
-\r
-<ul>\r
-  <li>The list of the active components</li>\r
-  <li>The list of the active containers during a SALOME session.</li>\r
-</ul>\r
-<p>It should allow the state of a session. It also should allow to know if session can be stopped.</p>\r
-<p>The API reference for this service is not included in the current version of the reference manual.</p>\r
-\r
-<a name="3_3"></a><h3>3.3 Notification service </h3>\r
-<p>The notification service is a kernel function which allows exchanging of events between CORBA objects.</p>\r
-<p>In comparison with traditional CORBA event service, SALOME notification service allows to:</p>\r
-<ul>\r
-  <li>Filter the events, </li>\r
-  <li>Structure the events,</li>\r
-  <li>Establish quality policies of services,</li>\r
-  <li>Subscribe to various event channels.</li>\r
-</ul>\r
-<p>The API reference for this service is not included in the current version of the reference \r
-  manual. </p>\r
-  \r
-<a name="3_4"></a><h3>3.4 Module catalog service </h3>\r
-<p>There are two module catalogs in SALOME application:</p>\r
-<ul>\r
-<li>General module catalog : This first catalog is common to all SALOME users once the the platform is installed (for example for a particular company or a service). This catalog will be managed by the integrator or the administrator of the platform,\r
-<li>Personal module catalog : A specific catalog for every user (possibly empty). This catalog should notably allow the developers to test a new component before integrating it into the general catalog.\r
-</ul>\r
-<p>The objective of these two module catalogs is to:</p>\r
-<ul>\r
-<li>List the available modules;\r
-<li>Allow the addition, the modification and the deletion of a module in catalogs;\r
-<li>Look for a module and\or a service fulfilling some given criteria (in catalogs);\r
-</ul>\r
-<p><p>Implementation of this service in SALOME application is provided by two classes \r
-<a href="interfaceSALOME__ModuleCatalog_1_1ModuleCatalog.html">ModuleCatalog</a>and <a href="interfaceSALOME__ModuleCatalog_1_1AComponent.html">AComponent</a> encapsulated in the package \r
-<a href="namespaceSALOME__ModuleCatalog.html">SALOME_ModuleCatalog</a>.</p> \r
-\r
-<a name="3_5"></a><h3>3.5 Data type catalog </h3>\r
-\r
-<p>The data exchanged between components services have definite types. During description of input, output, and \r
-configuration parameters of components in the module catalog, the\r
-definition of the parameters types is taken from data type catalog. During the editing of execution of \r
-graphs, it is necessary to check that the connections output-input parameters are of compatible\r
-types.</p>\r
-<p>The data types correspond to CORBA object classes, including attributes and access methods (defined by their IDL). \r
-These types can be created by specialization of generic data types.</p>\r
-<p>The purpose of the data type catalog is to:</p>\r
-<ul>\r
-<li>List the available data types in the catalog;\r
-<li>Browse the type hierarchy to check the compatibility of types (specialized output toward generic input);\r
-<li>Allow the addition, the modification and the deletion of a data type in the catalog;\r
-</ul>\r
-<p>The API reference for this service is not included in the current version of the reference \r
-  manual. </p>\r
- <a name="3_6"></a><h3>3.6 Resource catalog</h3>       \r
\r
-<p>This catalog describes machines, possible types of container on a machine, resources of machines... This catalog is used by the SALOME LifeCycle service.</p>\r
-<p>The API reference for this service is not included in the current version of the reference \r
-  manual. </p>\r
-  \r
-<a name="3_7"></a><h3>3.7 Engine</h3> \r
-<p>The engine represents  a shared library which can be dynamically loaded by a container. The container can load this library, \r
-given an interface name and an implementation\r
-name. The container dynamically resolves  an extern_C function in the library,\r
-which constructs the CORBA Engine servant object.</p>\r
-<p>The SALOME engine in\r
- the current version of the application is implemented \r
-  as <b>Engines</b> package of interfaces. It encapsulates two classes: Component, Container.</p> \r
-<p>The API refernce for <b>Engines</b> package can be found <a href="namespaceEngines.html">here</a>. \r
-</p>\r
-<a name="3_7_1"></a><h4>3.7.1 Component class</h4> \r
-<p>This class is used for interaction between the container and the component and between the components inside the container. \r
-</p> \r
-<p>The API reference for this class can be found <a href="interfaceEngines_1_1Component.html">here</a>.</p>\r
-\r
-<a name="3_7_2"></a><h4>3.7.2 Container class</h4> \r
-<p>This class provides a set of methods which are necessary for definition of the process of loading and registration of new components in SALOME application.</p> \r
-<p>The API reference for this class can be found <a href="interfaceEngines_1_1Container.html">here</a>.</p>\r
-\r
-<i><a href="#cont">Back to the contents</a></i> \r
-</body>\r
-</html>\r
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+   <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+   <title>Main Page</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+&nbsp;
+<center><table WIDTH="96%" >
+<tr>
+<td><a href="http://www.opencascade.com"><img src="sources/logocorp.gif" BORDER=0 height=46 width=122></a></td>
+
+
+<td>
+<div align=right><a href="http://www.opencascade.org/SALOME/"><img src="sources/application.gif" BORDER=0 height=46 width=108></a></div>
+</td>
+</tr>
+</table></center>
+
+
+<h1><a name="page2">General overview</a>
+</h1>
+<a name="cont"></a><h2>Table of contents </h2>
+<b><i>
+<ul>
+  <li><a href="#1">1. Introduction</a></li>
+  <li><a href="#2">2. Basic principles </a></li>
+               
+  <li><a href="#3">3. Services and features of the SALOME kernel module</a></li>
+  <ul>
+               <li><a href="#3_1">3.1 Session service</a></li>
+               <li><a href="#3_2">3.2 Registry service  </a></li>
+               <li><a href="#3_3">3.3 Notification service  </a></li>
+               <li><a href="#3_4">3.4 Module catalog service  </a></li>
+               <li><a href="#3_5">3.5 Data type catalog  </a></li>
+               <li><a href="#3_6">3.6 Resource catalog  </a></li>
+               <li><a href="#3_7">3.7 Engine  </a></li>
+                       <ul>
+                       <li><a href="#3_7_1">3.7.1 Component class  </a></li>
+                       <li><a href="#3_7_2">3.7.2 Container class  </a></li>
+                       </ul>
+               </ul>
+</ul>
+</i> </b> <br>
+<a name="1"></a><h2>1. Introduction</h2>
+<p>The kernel corresponds to the minimal set of services required for the use of SALOME components (Supervisor, IAPP). 
+The kernel is also used by application software components (solver) and their container. 
+The kernel is associated to a unique user who can launch only one kernel at once. 
+The kernel is launched and destroyed by voluntary actions of the user. These functions are realized via the
+use of scripts.</p>
+<p>The list of the kernel services related to communication issues is:</p>
+<ul>
+  <li>The Naming service</li>
+  <li> The Session service </li>
+  <li>The Life Cycle service </li>
+  <li>The Registry service </li>
+  <li>The Notification service </li>
+</ul>
+<p>This list is enlarged with CORBA independent services :</p>
+
+<ul>
+  <li>The module catalog service </li>
+  <li>The Data Type Catalog service </li>
+  <li>The resource catalog service </li>
+</ul>
+<p> SALOME kernel module also encapsulates the Engine
+<i><a href="#cont">Back to the contents</a></i>
+<a name="2"></a><h2>2. Basic principles </h2>
+<p>The SALOME user's desktop is a process on a machine. This process includes:</p>
+<ul>
+  <li>A graphic interface (based on Qt), </li>
+  <li>A text interface (Python interpreter), </li>
+  <li>A 3D visualization window shared by components.</li>
+</ul>
+<p>SALOME Modules decompose into an interface (widgets GUI, text mode TUI, 3D visualization V3D) and
+an engine.</p>
+<p>The description of a module and its components is obtained by consulting the module catalog.</p>
+<p>The interface is dynamically loaded in the process of the SALOME user's desktop. The engine is a CORBA
+server launched either on the local machine or on the distant machine.</p>
+<p>The engine (CORBA server) is created by a factory (or container). 
+This factory is also a CORBA server. Several containers can be present on a machine. 
+Some containers are specialized for types of components requiring a specific management. 
+For example, a specific container is required for components performing parallel calculations.
+The engine includes at least a dynamically linked library in the container process. 
+This library is the implementation of the CORBA server associated to the engine. 
+If the engine is built from a pre-existent executable code, the library is simply a wrapper of the encapsulated code. 
+It launches the code in a separate process. Wherever possible, the code is included into the dynamic library.
+<p>The container is one of the kernel services. If one needs to create a container on a distant machine, one creates a process resuming a part of the kernel services. The kernel can create other containers on distant machines via the trader (rsh). All the containers and the kernel share the same CORBA naming service with which they register.</p>
+<p>The user reaches the functions of various SALOME'S components, either in graphic interactive mode (GUI) or in command mode ( TUI), via a Python interpreter.</p>
+<i><a href="#cont">Back to the contents</a></i>
+<a name="3"></a>
+<h2>3. Services and features of the SALOME kernel module </h2>
+<p>This section gives a brief overview of the services composing the kernel module. 
+  The <a href="overview_Life_Cycle.html">Life Cycle</a> and <a href="overview_Naming.html">Naming</a> 
+  services are described in separate chapters of this reference manual.</p>
+  
+<a name="3_1"></a><h3>3.1 Session service </h3>
+<p>SALOME session describes the period starting from the kernel creation and 
+  ending with its destruction. During this period the user can connect the session 
+  and disconnect from it without ending this session. One connection log could 
+  be written. A priori, no information resulting from another (past) session can 
+  be used by the current session. </p>
+ <p>Implementation of this service in SALOME application is provided by the class 
+<a href="interfaceSALOME_1_1Session.html">Session</a> encapsulated in the package 
+<a href="namespaceSALOME.html">SALOME</a>.</p> 
+
+<a name="3_2"></a><h3>3.2 Registry service </h3>
+<p> The active component registry should contain:</p>
+
+<ul>
+  <li>The list of the active components</li>
+  <li>The list of the active containers during a SALOME session.</li>
+</ul>
+<p>It should allow the state of a session. It also should allow to know if session can be stopped.</p>
+<p>The API reference for this service is not included in the current version of the reference manual.</p>
+
+<a name="3_3"></a><h3>3.3 Notification service </h3>
+<p>The notification service is a kernel function which allows exchanging of events between CORBA objects.</p>
+<p>In comparison with traditional CORBA event service, SALOME notification service allows to:</p>
+<ul>
+  <li>Filter the events, </li>
+  <li>Structure the events,</li>
+  <li>Establish quality policies of services,</li>
+  <li>Subscribe to various event channels.</li>
+</ul>
+<p>The API reference for this service is not included in the current version of the reference 
+  manual. </p>
+  
+<a name="3_4"></a><h3>3.4 Module catalog service </h3>
+<p>There are two module catalogs in SALOME application:</p>
+<ul>
+<li>General module catalog : This first catalog is common to all SALOME users once the the platform is installed (for example for a particular company or a service). This catalog will be managed by the integrator or the administrator of the platform,
+<li>Personal module catalog : A specific catalog for every user (possibly empty). This catalog should notably allow the developers to test a new component before integrating it into the general catalog.
+</ul>
+<p>The objective of these two module catalogs is to:</p>
+<ul>
+<li>List the available modules;
+<li>Allow the addition, the modification and the deletion of a module in catalogs;
+<li>Look for a module and\or a service fulfilling some given criteria (in catalogs);
+</ul>
+<p><p>Implementation of this service in SALOME application is provided by two classes 
+<a href="interfaceSALOME__ModuleCatalog_1_1ModuleCatalog.html">ModuleCatalog</a>and <a href="interfaceSALOME__ModuleCatalog_1_1AComponent.html">AComponent</a> encapsulated in the package 
+<a href="namespaceSALOME__ModuleCatalog.html">SALOME_ModuleCatalog</a>.</p> 
+
+<a name="3_5"></a><h3>3.5 Data type catalog </h3>
+
+<p>The data exchanged between components services have definite types. During description of input, output, and 
+configuration parameters of components in the module catalog, the
+definition of the parameters types is taken from data type catalog. During the editing of execution of 
+graphs, it is necessary to check that the connections output-input parameters are of compatible
+types.</p>
+<p>The data types correspond to CORBA object classes, including attributes and access methods (defined by their IDL). 
+These types can be created by specialization of generic data types.</p>
+<p>The purpose of the data type catalog is to:</p>
+<ul>
+<li>List the available data types in the catalog;
+<li>Browse the type hierarchy to check the compatibility of types (specialized output toward generic input);
+<li>Allow the addition, the modification and the deletion of a data type in the catalog;
+</ul>
+<p>The API reference for this service is not included in the current version of the reference 
+  manual. </p>
+ <a name="3_6"></a><h3>3.6 Resource catalog</h3>       
+<p>This catalog describes machines, possible types of container on a machine, resources of machines... This catalog is used by the SALOME LifeCycle service.</p>
+<p>The API reference for this service is not included in the current version of the reference 
+  manual. </p>
+  
+<a name="3_7"></a><h3>3.7 Engine</h3> 
+<p>The engine represents  a shared library which can be dynamically loaded by a container. The container can load this library, 
+given an interface name and an implementation
+name. The container dynamically resolves  an extern_C function in the library,
+which constructs the CORBA Engine servant object.</p>
+<p>The SALOME engine in
+ the current version of the application is implemented 
+  as <b>Engines</b> package of interfaces. It encapsulates two classes: Component, Container.</p> 
+<p>The API refernce for <b>Engines</b> package can be found <a href="namespaceEngines.html">here</a>. 
+</p>
+<a name="3_7_1"></a><h4>3.7.1 Component class</h4> 
+<p>This class is used for interaction between the container and the component and between the components inside the container. 
+</p> 
+<p>The API reference for this class can be found <a href="interfaceEngines_1_1Component.html">here</a>.</p>
+
+<a name="3_7_2"></a><h4>3.7.2 Container class</h4> 
+<p>This class provides a set of methods which are necessary for definition of the process of loading and registration of new components in SALOME application.</p> 
+<p>The API reference for this class can be found <a href="interfaceEngines_1_1Container.html">here</a>.</p>
+
+<i><a href="#cont">Back to the contents</a></i> 
+</body>
+</html>
index 659c2ab24c0a901b59ab0c97f7bd219e3384e094..f1a1fb8af293389d6f408bd9a3d654a4599d283f 100755 (executable)
@@ -1,90 +1,90 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">\r
-<html>\r
-<head>\r
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">\r
-   <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">\r
-   <title>Life Cycle service Description</title>\r
-\r
-<link href="doxygen.css" rel="stylesheet" type="text/css">\r
-\r
-</head>\r
-\r
-<body>\r
-&nbsp;\r
-<center><table WIDTH="96%" >\r
-<tr>\r
-<td><a href="http://www.opencascade.com"><img src="sources/logocorp.gif" BORDER=0 height=46 width=122></a></td>\r
-\r
-\r
-<td>\r
-<div align=right><a href="http://www.opencascade.org/SALOME/"><img src="sources/application.gif" BORDER=0 height=46 width=108></a></div>\r
-</td>\r
-</tr>\r
-</table></center>\r
-\r
-\r
-<h1><a name="page2">Life Cycle service Description</a> </h1>\r
-<h2>Introduction</h2>\r
-<p> The objective of this document is to give the users of SALOME \r
-  application a brief overview of the Life Cycle service implemented in SALOME. \r
-  A complete version of the LifeCycle service specification edited by the Object Management Group, Inc.(OMG) can be found <a href="http://www.omg.org" target="top">here.</a> <a name="#cont"></a>\r
-  </p>\r
-<a name="cont"></a><h2>Table of contents </h2>\r
-<b><i><ul>\r
-  <li><a href="#1">1. Overview</a></li>\r
-\r
-\r
-  <li><a href="#2">2. SALOME Life Cycle service description</a></li>\r
-</ul>\r
-</i></b><br>\r
-\r
-<a name="1"></a><h2>1. Overview</h2>\r
-  \r
-<p>Life Cycle service defines services and conventions for creating, deleting, copying and moving objects. \r
-Because CORBA-based environments support distributed objects, the Life Cycle service defines conventions that allow clients to perform \r
-life cycle operations on objects in different locations. This overview describes the life cycle problem for distributed object systems. </p>\r
-<br>\r
-  \r
-\r
-<a name="2"></a><h2>2. SALOME Life Cycle service description</h2>\r
-<p>The SALOME  Life Cycle service represents a partial implementation of the CORBA LifeCycle service. <p>\r
-<p>From general point of view, the SALOME  Life Cycle service allows to <i>find</i> or <i>load</i> with the help of a given container a definte SALOME component with its further\r
-initialization and registration in the Naming service.</p>\r
-<p><b>Container</b>  - it's a certain engine realizing the mechanism of loading a SALOME module.</p>\r
-  <p><b>Component</b> - it's a certain abstract shell wrapping SALOME modules, performing all operations concerned with their initialization and registration. </p>\r
-<p>From the point of view of the service user, the Life Cycle provides a set of functions allowing to :</p>\r
-<ul>\r
-<li>Locate a machine (more generally a container) by a logical set of required features (of both container and\r
-       machine);</li>\r
-<li>Load  components on the obtained containers;</li>\r
-<li>Create a container;</li>\r
-<li>Obtain the container containing a given component;</li>\r
-<li>Treat the list of the active components;</li>\r
-<li>Treat the list of the available containers.</li>\r
-</ul>\r
\r
-\r
-\r
-<p>The SALOME  Life Cycle is a CORBA server. This server at its initialization is  registered with the naming service.</p>\r
-<p>The Life Cycle service is invoked  to find a container and use it to load a\r
-component. It supplies, as parameters, the type of container and the machine features required for loading\r
-a given component.\r
-</p>\r
-<p>The Life Cycle service then returns a CORBA reference of a launched container.</p>\r
-<p>Containers are launched on demand depending on components to be loaded. The Life Cycle service manages  loading of containers.</p>\r
-<p>When there is no launched container matching the request the  Life Cycle service invokes loading of the correct type of container on a correct machine via a rsh type command.</p>\r
-<p>The Life Cycle service interrogates containers to have information about the dynamic state of the machine (load). It contains (and update) the state of the active containers.</p>\r
-<p>The Life Cycle service can implement a loading strategy for new containers on new machines, depending on the state of the already launched containers.</p>\r
-<p>The Life Cycle service can stop containers at the end of session on\r
-demand.</p>\r
-\r
-<p>In SALOME platform the Life Cycle service is implemented in <b>SALOME_Life CycleCORBA</b> class. The API refernce for the methods of this class\r
-can be found <a href="classSALOME__LifeCycleCORBA.html"> here</a>.</p>\r
-<i><a href="#cont">Back to the contents</a></i>\r
-<br>\r
-\r
-  \r
-<br>\r
-\r
-</body>\r
-</html>\r
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+   <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+   <title>Life Cycle service Description</title>
+
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+
+</head>
+
+<body>
+&nbsp;
+<center><table WIDTH="96%" >
+<tr>
+<td><a href="http://www.opencascade.com"><img src="sources/logocorp.gif" BORDER=0 height=46 width=122></a></td>
+
+
+<td>
+<div align=right><a href="http://www.opencascade.org/SALOME/"><img src="sources/application.gif" BORDER=0 height=46 width=108></a></div>
+</td>
+</tr>
+</table></center>
+
+
+<h1><a name="page2">Life Cycle service Description</a> </h1>
+<h2>Introduction</h2>
+<p> The objective of this document is to give the users of SALOME 
+  application a brief overview of the Life Cycle service implemented in SALOME. 
+  A complete version of the LifeCycle service specification edited by the Object Management Group, Inc.(OMG) can be found <a href="http://www.omg.org" target="top">here.</a> <a name="#cont"></a>
+  </p>
+<a name="cont"></a><h2>Table of contents </h2>
+<b><i><ul>
+  <li><a href="#1">1. Overview</a></li>
+
+
+  <li><a href="#2">2. SALOME Life Cycle service description</a></li>
+</ul>
+</i></b><br>
+
+<a name="1"></a><h2>1. Overview</h2>
+  
+<p>Life Cycle service defines services and conventions for creating, deleting, copying and moving objects. 
+Because CORBA-based environments support distributed objects, the Life Cycle service defines conventions that allow clients to perform 
+life cycle operations on objects in different locations. This overview describes the life cycle problem for distributed object systems. </p>
+<br>
+  
+
+<a name="2"></a><h2>2. SALOME Life Cycle service description</h2>
+<p>The SALOME  Life Cycle service represents a partial implementation of the CORBA LifeCycle service. <p>
+<p>From general point of view, the SALOME  Life Cycle service allows to <i>find</i> or <i>load</i> with the help of a given container a definte SALOME component with its further
+initialization and registration in the Naming service.</p>
+<p><b>Container</b>  - it's a certain engine realizing the mechanism of loading a SALOME module.</p>
+  <p><b>Component</b> - it's a certain abstract shell wrapping SALOME modules, performing all operations concerned with their initialization and registration. </p>
+<p>From the point of view of the service user, the Life Cycle provides a set of functions allowing to :</p>
+<ul>
+<li>Locate a machine (more generally a container) by a logical set of required features (of both container and
+       machine);</li>
+<li>Load  components on the obtained containers;</li>
+<li>Create a container;</li>
+<li>Obtain the container containing a given component;</li>
+<li>Treat the list of the active components;</li>
+<li>Treat the list of the available containers.</li>
+</ul>
+
+
+<p>The SALOME  Life Cycle is a CORBA server. This server at its initialization is  registered with the naming service.</p>
+<p>The Life Cycle service is invoked  to find a container and use it to load a
+component. It supplies, as parameters, the type of container and the machine features required for loading
+a given component.
+</p>
+<p>The Life Cycle service then returns a CORBA reference of a launched container.</p>
+<p>Containers are launched on demand depending on components to be loaded. The Life Cycle service manages  loading of containers.</p>
+<p>When there is no launched container matching the request the  Life Cycle service invokes loading of the correct type of container on a correct machine via a rsh type command.</p>
+<p>The Life Cycle service interrogates containers to have information about the dynamic state of the machine (load). It contains (and update) the state of the active containers.</p>
+<p>The Life Cycle service can implement a loading strategy for new containers on new machines, depending on the state of the already launched containers.</p>
+<p>The Life Cycle service can stop containers at the end of session on
+demand.</p>
+
+<p>In SALOME platform the Life Cycle service is implemented in <b>SALOME_Life CycleCORBA</b> class. The API refernce for the methods of this class
+can be found <a href="classSALOME__LifeCycleCORBA.html"> here</a>.</p>
+<i><a href="#cont">Back to the contents</a></i>
+<br>
+
+  
+<br>
+
+</body>
+</html>
index ae24ab54d81a6c027e1ea626db61282a799ca1b6..8af6b10ec999b7861c34394dfbfd5c9935760acc 100755 (executable)
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">\r
-<html>\r
-<head>\r
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">\r
-   <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">\r
-   <title>Naming Service Description</title>\r
-<link href="doxygen.css" rel="stylesheet" type="text/css">\r
-</head>\r
-<body>\r
-&nbsp;\r
-<center><table WIDTH="96%" >\r
-<tr>\r
-<td><a href="http://www.opencascade.com"><img src="sources/logocorp.gif" BORDER=0 height=46 width=122></a></td>\r
-\r
-\r
-<td>\r
-<div align=right><a href="http://www.opencascade.org/SALOME/"><img src="sources/application.gif" BORDER=0 height=46 width=108></a></div>\r
-</td>\r
-</tr>\r
-</table></center>\r
-\r
-\r
-<h1><a name="page2">Naming Service Description </a></h1>\r
-<br>\r
-<h2>Introduction</h2>\r
-<p>This page contains an abridged version of the Naming Service specification \r
-  edited by the Object Management Group, Inc.(OMG). The objective of this document is to give the users of SALOME \r
-  application a brief overview of the Naming Service implemented in SALOME. \r
-  A complete version of this document can be found <a href="http://www.omg.org" target="top">here.</a> <a name="#cont"></a>\r
-  </p>\r
-       <br>\r
-<a name="cont"></a><h2>Table of contents </h2>\r
-<b><i>\r
-<ul>\r
-  <li><a href="#1">1. Overview</a></li>\r
-  <li><a href="#2">2. SALOME Naming Service </a></li>\r
-               <ul>\r
-               <li><a href="#2_1">2.1 Introduction </a></li>\r
-               <li><a href="#2_2">2.2 Definitions </a></li>\r
-               <li><a href="#2_3">2.3 Partition of SALOME name directory hierarchy </a></li>\r
-               <li><a href="#2_4">2.4 SALOME name directory persistence </a></li>\r
-               <li><a href="#2_5">2.5 SALOME naming service features </a></li>\r
-               </ul>\r
-  \r
-</ul>\r
-</i> </b> <br>\r
-\r
-<a name="1"></a><h2>1. Overview</h2>\r
-<p>This chapter presents the OMG Naming Service and explains how the Naming Service can be used to decouple clients and servers by\r
-providing an external reference exchange mechanism. The chapter also covers how to solve the bootstrapping problem for clients and\r
-servers by controlling their configuration. \r
- </p>\r
-  \r
-<p>In practice, copying stringified references from a server to all its clients is clumsy and does not scale. The Naming Service provides a way\r
-for servers to advertise references under a name, and for clients to retrieve them. The advantages are: \r
-</p>\r
-<ul>\r
-  <li>Clients and servers can use meaningful names instead of having to deal with stringified references. </li>\r
-    <li> By changing a reference in the service without changing its name, you can transparently direct clients to a different object.</li> \r
-    <li> The Naming Service solves the bootstrapping problem because it provides a fixed point for clients and servers to rendezvous. </li>\r
-</ul>\r
-<p>The Naming Service is much like a white pages phone book. Given a name, it \r
-  returns an object reference. </p>\r
-  \r
-<p>The terminology used in description of NamigService is the following: </p>\r
-\r
-<ul>\r
-  <li>A name-to-IOR association is called by a name binding. </li>\r
-  <li>Each binding identifies exactly one object reference, but an object reference \r
-    may be bound more than once (have more than one name). </li>\r
-  <li><a name="graph"></a>A naming context is an object that contains name bindings. \r
-    The names within a context must be unique. Naming contexts can contain bindings \r
-    to other naming contexts, so naming contexts can form graphs. Binding contexts \r
-    in other contexts creates a <i>naming graph</i> \97 a directed graph with nodes \r
-    and labeled edges where the nodes are contexts. A naming graph allows more \r
-    complex names to reference an object. Given a context in a naming graph, a \r
-    sequence of names can reference an object. This sequence of names (called \r
-    a <i>compound name</i>) defines a path in the naming graph to navigate the \r
-    resolution process. Figure 1-1 shows an example of a naming graph. </li>\r
-  <li>Binding a name to a context means to add a name\96IOR pair to a context. </li>\r
-  <li>Resolving a name means to look for a name in a context and to obtain the \r
-    IOR bound under that name.</li>\r
-</ul>\r
-\r
-  \r
-<div align="center"><img src="ns_f3-1.jpg"> </div>\r
-<p align="center"><font size="-1"><i>Figure 1-1</i> A Naming Graph </font></p>\r
- <i><a href="#cont">Back to the contents</a></i>\r
- <br>\r
- <a name="2"></a>\r
-<h2>2. SALOME Naming Service </h2>\r
-<a name="2_1"></a>\r
-<h3>2.1 Introduction</h3\r
\r
->\r
-<p>The SALOME Naming Service is a kernel function which supplies a name directory \r
-  hierarchy for pointing out CORBA objects. This name directory hierarchy allows, \r
-  from symbolic names, to dynamically find the references of distributed SALOME \r
-  objects, without information about their location. SALOME objects which can \r
-  be reached via the naming service are:</p>\r
-  \r
-<ul>\r
-  <li>The kernel services</li>\r
-  <li>Containers\r
-  <li>SALOME components instances\r
-</ul>\r
-<p>The name directory hierarchy in SALOME represents a graph of directories containing \r
-  symbolic associations name-reference on objects. (It has been described in the \r
-  <a href="#graph">previous section</a>)</p>\r
-<a name="2_2"></a>\r
-<h3>2.2 Definitions</h3>\r
-<dl>\r
-<dt><i><b>Directory</b></i></dt> \r
-<dd>Context of names containing symbolic associations name-reference on objects.</dd><br><br>\r
- <dt><i><b>"/"</b></i></dt>\r
- <dd>Character used in SALOME to separate two names of a directory</dd><br><br>\r
- <dt><i><b>Access path</b></i></dt> \r
- <dd>List of names (separated by "/" character representing the path to be followed \r
- in the graph to reach an association name-reference (the last name in the sequence).</dd>\r
-</dl> \r
-<blockquote><b>Note:</b>An object can be referenced by several symbolic names \r
-  in one or several directories.</blockquote>\r
-  <a name="2_3"></a>\r
-<h3>2.3 Partition of SALOME name directory hierarchy</h3>\r
-<p>The hierarchical organization of the SALOME name directory is not completely frozen .\r
-Because the framework allows the simultaneous opening of several studies, the following levels are determined:</p>\r
-<pre> \r
- /Kernel\r
- /Container/\r
-              /Component       \r
-</pre>\r
-<a name="2_4"></a>\r
-<h3>2.4 SALOME name directory persistence</h3>\r
-<p>During a SALOME session, stopping a server in charge of the Naming Service \r
-  doesn't imply the loss of the contents of the SALOME name directory hierarchy. \r
-  A backup file is produced and can be used to restart the Naming Service. So, \r
-  one can recover the state of the SALOME name directory hierarchy at restart \r
-  time. During such breakdown, every call to any function of the Naming Service \r
-  invokes an exception of type <i>Unreachable service</i>.</p>\r
-<a name="2_5"></a>\r
-<h3>2.5 SALOME Naming Service features</h3>\r
-<p>Usage and administration of the name directory hierarchy is realized by means of the following functions:</p> \r
-<ul>\r
-  <li>Recording and recovering of the reference of an object </li>\r
-  <li>Searching for a symbolic name</li>\r
-  <li>Creating of a directory, reading and modifying of the current directory</li>\r
-  <li>Destructing of a symbolic name and a diredtory</li>\r
-</ul>\r
-<p>The access path used in these functions can be defined, either from the root, or from any\r
-directory of SALOME name directory hierarchy.</p> \r
-\r
-<p>In SALOME there is s standard interface of Naming Service, and any user can \r
-  use it for binding and finding objects. How to use it, it's possible to find \r
-  in any CORBA documentation. However in SALOME there is an additional layer which \r
-  hides calls to standard interface. </p>\r
- <p>The precise API reference for these functions you can find <a href="classSALOME__Naming Service.html">here.</a> </p>\r
-<p>Here is a short list of public methods which are used for working with the SALOME Naming Service:</p>\r
-<dl>\r
-<dt><h4>Register</h4> </dt>\r
-<dd>Method which register object reference in the naming service with given name. It makes assignment between IOR and stringified name.\r
-Then it's possible to get object reference from name using "Resolve" method. </dd>\r
-<br><br>\r
-<dt><h4>Resolve</h4> </dt>\r
-  <dd>Try to obtain object reference from name. It's necessary before publishing \r
-    IOR in the Naming Service by Register method. </dd>\r
-<br><br>\r
-<dt><h4>Find</h4> </dt>\r
-  <dd>The purpose of this method is to research a name from the current directory \r
-    of the naming service. Then if there is occurrence the naming service changes \r
-    directory to go to the directory where last occurrence is found. </dd>\r
-<br><br>\r
-<dt><h4>CreateDirectory</h4> </dt>\r
-<dd>This method allows to create one or several directories in the current directory</dd>\r
-<br><br>\r
-<dt><h4>ChangeDirectory</h4> </dt>\r
-<dd>Moves the current directory. The current directory is moved to the root directory if the input parameter <i>Name</i> is "/".</dd>\r
-<br><br>\r
-<dt><h4>CurrentDirectory</h4> </dt>\r
-<dd>Method allowing to get the current directory.</dd>\r
-<br><br>\r
-<dt><h4>list</h4> </dt>\r
-<dd>Method allowing to list and print the whole context beginning from the current context.</dd> \r
-<br><br>\r
-<dt><h4>list_directory</h4> </dt>\r
-<dd>Method to get all contexts contained in the current directory.</dd> \r
-<br><br>\r
-<dt><h4>DestroyName</h4> </dt>\r
-<dd>Destroys a symbolic name-object reference association.</dd>\r
-<br><br>\r
-<dt><h4>DestroyDirectory</h4> </dt>\r
-<dd>Destroys an empty directory.</dd>\r
-</dl>\r
-\r
-<i><a href="#cont">Back to the contents</a></i>\r
-<br>\r
-</body>\r
-</html>\r
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+   <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+   <title>Naming Service Description</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+&nbsp;
+<center><table WIDTH="96%" >
+<tr>
+<td><a href="http://www.opencascade.com"><img src="sources/logocorp.gif" BORDER=0 height=46 width=122></a></td>
+
+
+<td>
+<div align=right><a href="http://www.opencascade.org/SALOME/"><img src="sources/application.gif" BORDER=0 height=46 width=108></a></div>
+</td>
+</tr>
+</table></center>
+
+
+<h1><a name="page2">Naming Service Description </a></h1>
+<br>
+<h2>Introduction</h2>
+<p>This page contains an abridged version of the Naming Service specification 
+  edited by the Object Management Group, Inc.(OMG). The objective of this document is to give the users of SALOME 
+  application a brief overview of the Naming Service implemented in SALOME. 
+  A complete version of this document can be found <a href="http://www.omg.org" target="top">here.</a> <a name="#cont"></a>
+  </p>
+       <br>
+<a name="cont"></a><h2>Table of contents </h2>
+<b><i>
+<ul>
+  <li><a href="#1">1. Overview</a></li>
+  <li><a href="#2">2. SALOME Naming Service </a></li>
+               <ul>
+               <li><a href="#2_1">2.1 Introduction </a></li>
+               <li><a href="#2_2">2.2 Definitions </a></li>
+               <li><a href="#2_3">2.3 Partition of SALOME name directory hierarchy </a></li>
+               <li><a href="#2_4">2.4 SALOME name directory persistence </a></li>
+               <li><a href="#2_5">2.5 SALOME naming service features </a></li>
+               </ul>
+  
+</ul>
+</i> </b> <br>
+
+<a name="1"></a><h2>1. Overview</h2>
+<p>This chapter presents the OMG Naming Service and explains how the Naming Service can be used to decouple clients and servers by
+providing an external reference exchange mechanism. The chapter also covers how to solve the bootstrapping problem for clients and
+servers by controlling their configuration. 
+ </p>
+  
+<p>In practice, copying stringified references from a server to all its clients is clumsy and does not scale. The Naming Service provides a way
+for servers to advertise references under a name, and for clients to retrieve them. The advantages are: 
+</p>
+<ul>
+  <li>Clients and servers can use meaningful names instead of having to deal with stringified references. </li>
+    <li> By changing a reference in the service without changing its name, you can transparently direct clients to a different object.</li> 
+    <li> The Naming Service solves the bootstrapping problem because it provides a fixed point for clients and servers to rendezvous. </li>
+</ul>
+<p>The Naming Service is much like a white pages phone book. Given a name, it 
+  returns an object reference. </p>
+  
+<p>The terminology used in description of NamigService is the following: </p>
+
+<ul>
+  <li>A name-to-IOR association is called by a name binding. </li>
+  <li>Each binding identifies exactly one object reference, but an object reference 
+    may be bound more than once (have more than one name). </li>
+  <li><a name="graph"></a>A naming context is an object that contains name bindings. 
+    The names within a context must be unique. Naming contexts can contain bindings 
+    to other naming contexts, so naming contexts can form graphs. Binding contexts 
+    in other contexts creates a <i>naming graph</i> \97 a directed graph with nodes 
+    and labeled edges where the nodes are contexts. A naming graph allows more 
+    complex names to reference an object. Given a context in a naming graph, a 
+    sequence of names can reference an object. This sequence of names (called 
+    a <i>compound name</i>) defines a path in the naming graph to navigate the 
+    resolution process. Figure 1-1 shows an example of a naming graph. </li>
+  <li>Binding a name to a context means to add a name\96IOR pair to a context. </li>
+  <li>Resolving a name means to look for a name in a context and to obtain the 
+    IOR bound under that name.</li>
+</ul>
+
+  
+<div align="center"><img src="ns_f3-1.jpg"> </div>
+<p align="center"><font size="-1"><i>Figure 1-1</i> A Naming Graph </font></p>
+ <i><a href="#cont">Back to the contents</a></i>
+ <br>
+ <a name="2"></a>
+<h2>2. SALOME Naming Service </h2>
+<a name="2_1"></a>
+<h3>2.1 Introduction</h3
+>
+<p>The SALOME Naming Service is a kernel function which supplies a name directory 
+  hierarchy for pointing out CORBA objects. This name directory hierarchy allows, 
+  from symbolic names, to dynamically find the references of distributed SALOME 
+  objects, without information about their location. SALOME objects which can 
+  be reached via the naming service are:</p>
+  
+<ul>
+  <li>The kernel services</li>
+  <li>Containers
+  <li>SALOME components instances
+</ul>
+<p>The name directory hierarchy in SALOME represents a graph of directories containing 
+  symbolic associations name-reference on objects. (It has been described in the 
+  <a href="#graph">previous section</a>)</p>
+<a name="2_2"></a>
+<h3>2.2 Definitions</h3>
+<dl>
+<dt><i><b>Directory</b></i></dt> 
+<dd>Context of names containing symbolic associations name-reference on objects.</dd><br><br>
+ <dt><i><b>"/"</b></i></dt>
+ <dd>Character used in SALOME to separate two names of a directory</dd><br><br>
+ <dt><i><b>Access path</b></i></dt> 
+ <dd>List of names (separated by "/" character representing the path to be followed 
+ in the graph to reach an association name-reference (the last name in the sequence).</dd>
+</dl> 
+<blockquote><b>Note:</b>An object can be referenced by several symbolic names 
+  in one or several directories.</blockquote>
+  <a name="2_3"></a>
+<h3>2.3 Partition of SALOME name directory hierarchy</h3>
+<p>The hierarchical organization of the SALOME name directory is not completely frozen .
+Because the framework allows the simultaneous opening of several studies, the following levels are determined:</p>
+<pre> 
+ /Kernel
+ /Container/
+              /Component       
+</pre>
+<a name="2_4"></a>
+<h3>2.4 SALOME name directory persistence</h3>
+<p>During a SALOME session, stopping a server in charge of the Naming Service 
+  doesn't imply the loss of the contents of the SALOME name directory hierarchy. 
+  A backup file is produced and can be used to restart the Naming Service. So, 
+  one can recover the state of the SALOME name directory hierarchy at restart 
+  time. During such breakdown, every call to any function of the Naming Service 
+  invokes an exception of type <i>Unreachable service</i>.</p>
+<a name="2_5"></a>
+<h3>2.5 SALOME Naming Service features</h3>
+<p>Usage and administration of the name directory hierarchy is realized by means of the following functions:</p> 
+<ul>
+  <li>Recording and recovering of the reference of an object </li>
+  <li>Searching for a symbolic name</li>
+  <li>Creating of a directory, reading and modifying of the current directory</li>
+  <li>Destructing of a symbolic name and a diredtory</li>
+</ul>
+<p>The access path used in these functions can be defined, either from the root, or from any
+directory of SALOME name directory hierarchy.</p> 
+
+<p>In SALOME there is s standard interface of Naming Service, and any user can 
+  use it for binding and finding objects. How to use it, it's possible to find 
+  in any CORBA documentation. However in SALOME there is an additional layer which 
+  hides calls to standard interface. </p>
+ <p>The precise API reference for these functions you can find <a href="classSALOME__Naming Service.html">here.</a> </p>
+<p>Here is a short list of public methods which are used for working with the SALOME Naming Service:</p>
+<dl>
+<dt><h4>Register</h4> </dt>
+<dd>Method which register object reference in the naming service with given name. It makes assignment between IOR and stringified name.
+Then it's possible to get object reference from name using "Resolve" method. </dd>
+<br><br>
+<dt><h4>Resolve</h4> </dt>
+  <dd>Try to obtain object reference from name. It's necessary before publishing 
+    IOR in the Naming Service by Register method. </dd>
+<br><br>
+<dt><h4>Find</h4> </dt>
+  <dd>The purpose of this method is to research a name from the current directory 
+    of the naming service. Then if there is occurrence the naming service changes 
+    directory to go to the directory where last occurrence is found. </dd>
+<br><br>
+<dt><h4>CreateDirectory</h4> </dt>
+<dd>This method allows to create one or several directories in the current directory</dd>
+<br><br>
+<dt><h4>ChangeDirectory</h4> </dt>
+<dd>Moves the current directory. The current directory is moved to the root directory if the input parameter <i>Name</i> is "/".</dd>
+<br><br>
+<dt><h4>CurrentDirectory</h4> </dt>
+<dd>Method allowing to get the current directory.</dd>
+<br><br>
+<dt><h4>list</h4> </dt>
+<dd>Method allowing to list and print the whole context beginning from the current context.</dd> 
+<br><br>
+<dt><h4>list_directory</h4> </dt>
+<dd>Method to get all contexts contained in the current directory.</dd> 
+<br><br>
+<dt><h4>DestroyName</h4> </dt>
+<dd>Destroys a symbolic name-object reference association.</dd>
+<br><br>
+<dt><h4>DestroyDirectory</h4> </dt>
+<dd>Destroys an empty directory.</dd>
+</dl>
+
+<i><a href="#cont">Back to the contents</a></i>
+<br>
+</body>
+</html>
index f4c27836371aea91a316d68f8af45358576341ed..0526536e95c55a8e4b8c73e9735ca3924fc8f70c 100755 (executable)
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">\r
-<html>\r
-<head>\r
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">\r
-   <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">\r
-   <title>Main Page</title>\r
-<link href="doxygen.css" rel="stylesheet" type="text/css">\r
-</head>\r
-<body>\r
-&nbsp;\r
-<center><table WIDTH="96%" >\r
-<tr>\r
-<td><a href="http://www.opencascade.com"><img src="sources/logocorp.gif" BORDER=0 height=46 width=122></a></td>\r
-\r
-\r
-<td>\r
-<div align=right><a href="http://www.opencascade.org/SALOME/"><img src="sources/application.gif" BORDER=0 height=46 width=108></a></div>\r
-</td>\r
-</tr>\r
-</table></center>\r
-\r
-\r
-<h1><a name="page2">General overview</a>\r
-</h1>\r
-<br>\r
-<h2><a name="cont"></a>Table of contents</h2>\r
-<ul>\r
-  <li><i><b><a href="#1">1. Introduction</a></b></i></li>\r
-  <li><i><b><a href="#2">2. Representation of the study</a></b></i></li>\r
-  <ul>\r
-    <li><i><b><a href="#2_1">2.1 Study in transient format</a></b></i></li>\r
-    <li><i><b><a href="#2_2">2.2 Study in persistent format</a></b></i></li>\r
-    <li><i><b><a href="#2_3">2.3 Link between transient and persistent formats</a></b></i></li>\r
-  </ul>\r
-  <li><i><b><a href="#3">3. Services and features of the study</a></b></i></li>\r
-  <ul>\r
-  <li><i><b><a href="#3_1">3.1 Study class </a></b></i></li>\r
-  <li><i><b><a href="#3_2">3.2 StudyBuilder class </a></b></i></li>\r
-  <li><i><b><a href="#3_3">3.3 StudyManager class </a></b></i></li>\r
-  <li><i><b><a href="#3_4">3.4 SObject class </a></b></i></li>\r
-  <li><i><b><a href="#3_5">3.5 SComponent class </a></b></i></li>\r
-  <li><i><b><a href="#3_6">3.6 ChildIterator class </a></b></i></li>\r
-  <li><i><b><a href="#3_7">3.7 SComponentIterator </a></b></i></li>\r
-  <li><i><b><a href="#3_8">3.8 GenericAttribute class  </a></b></i></li>\r
-  <li><i><b><a href="#3_9">3.9 UseCaseBuilder class </a></b></i></li>\r
-  <li><i><b><a href="#3_10">3.10 UseCaseIterator </a></b></i></li>\r
-  <li><i><b><a href="#3_12">3.11 Callback class </a></b></i></li>\r
-  <li><i><b><a href="#3_12">3.12 Driver class </a></b></i></li>\r
-  </ul>\r
-</ul> \r
-<h2><a name="1"></a>1. Introduction</h2>\r
-<p>In SALOME application the Study module is used for management (creation, saving \r
-  etc.) of studies. In the framework of the platform, a study represents a working \r
-  document allowing to manage the data produced by various components which are \r
-  integarted into SALOME.<br>\r
-</p>\r
-<h2><a name="2"></a>2. Representation of the study</h2>\r
-<p>The study represents a set of objects that we will call Study Objects or SObjects. \r
-  The study can be represented as a tree, every node of that tree containing a \r
-  SObject. SObjects in the study can be values or references towards data of calculation, \r
-  graphs of calculation, trees of construction of detail(room), results. Every \r
-  SOject of the study is characterised by a unique identifier in the study.</p>\r
-<p>The study allows to describe the following relations:</p>\r
-<ul>\r
-  <li>The link between the transient and persistent values of an SObject.</li>\r
-  <li>The relations between the SObjects produced by different components.</li>\r
-  <li>The relations between the SObjects produced by the same component.</li>\r
-  <li>The link between an object and its user name.</li>\r
-  <li>The access to the definition of the component which produce an object of \r
-    the study.</li>\r
-  <li>The access to instance of the component (if this one exists) which has produced \r
-    this SObject of the study.</li>\r
-</ul>\r
-\r
-<p>Every SObject in the study contains a set of attributes. These attributes represent \r
-  a set of definitions associated to that object, they can contain values or corba \r
-  references towards the data contained in the internal data structure of a component.</p>\r
-<p>As the structure of the study is tree-like it is possible to associate sub-objects \r
-  to objects.</p>\r
-<p>As particular object, the study contains Component Data which are labels associated to the component\r
-which produce data in the study. It is to this object that we can associate attributes containing ID which\r
-we shall allow to identify the type of the component and also its instance. Objects produced by a\r
-component will be sub-objects of the coresponding Data Component.</p>\r
-<p>For example Component Data GEOM will contain the data produced by the component \r
-  Geom.</p>\r
-<table width="100%" border="0">\r
-  <tr>\r
-    <td><img src="Study_Struct.gif"></td>\r
-    <td>GEOM contains the data produced by the component GEOM. The component MESH \r
-      contains a SObject Mesh_1 wich refers to the SObject identified \r
-      by ID4 corresponding to Geometrie_1.</td>\r
-  </tr>\r
-</table>\r
-<p>We distinguish two forms of the study, the study opened in a session SALOME and the study in the\r
-persistent format. These two formats are described in the following sections</p>\r
-<h3><a name="2_1"></a>2.1 Study in transient format</h3>\r
-<p>The representation of the study in memory will be based on the document OCAF (supplied by OCC).\r
-The document OCAF can be seen as a tree, every node of that tree is identified by <i>a tag</i> representing an integer value.</p>\r
-<p>The exploration of the tree from the root to a node supplies a sequence of tags which establishes a\r
-unique identifier <i>ID</i>. ID represents a character string containing the sequence of tags separated by\r
-one ':'.</p> \r
-<p>For example  0:1:12:4 </p>\r
-<p>To every node we can associate a set of attributes.</p>\r
-<p>The attributes which the study can contain can be of the following types:</p>\r
-<ul>\r
-<li>All standard attributes supplied by OCC (package TdataStd) which allow to define (integers,\r
-real, strings, identifiers, references etc.)</li>\r
-<li>Attributes which contain CORBA references.</li>\r
-<li>Attributes which contain the path HDF to reach the persistent datum. (Cf. the following chapter)</li>\r
-</ul>\r
-<p><b>Remark</b>: it is the study which takes care to build the attributes from the values which are passed to it, so\r
-an attribute is always in a study, and it knows the study object to which it is attached.</p>\r
-<p>Example of a Study Object as a set of various attributes.</p>\r
-<img src="SObject.gif"> \r
-<h3><a name="2_2"></a>2.2 Study in persistent format</h3>\r
-<p>To store a study HDF format is used, this tool allows to represent persistent data in the form of a tree.</p>\r
-<p>Under the root of the persistent document, you can find a set of nodes:</p>\r
-<ul>\r
-<li>The first node contains the skeleton of the study. The skeleton consists of the identifiers of the\r
-objects, as well as the references among them.</li>\r
-<li>There is also one node for every component which has produced data during this SALOME session. Under each of these\r
-node there are values of the data produced by this component.</li>\r
-</ul>\r
-<h3><a name="2_3"></a>2.3 Link between transient and persistent formats</h3>\r
-<p>It will be possible to complete the definition of one object in the study by associating to it an attribute\r
-<i>HDFPath</i> which will contain the path to the persistent data.</p>\r
-<img src="Link.gif"> \r
-<p><a href="#cont"><b><i>Back to the contents</i></b></a></p>\r
-<h2><a name="3"></a>3. Services and features of the study</h2>\r
-<p>The Study in SALOME application possess a wide functionality. This functionality is provided by a set of classes which are described\r
-below.\r
-<h3><a name="3_1"></a>3.1 Study class</h3>\r
-<p>The purpose of the Study class is to manage the data produced by various components \r
-  of SALOME platform. Most of the Study operations are handled by the <a href="#3_3">StudyManager</a> \r
-  and the <a href="#3_2">StudyBuilder</a>. What \r
-  is left in the Study class are elementary inquiries. A Study is explored by \r
-  a set of tools, mainly iterators , which are described further.</p> \r
-  <p>Nevertheless, the Study class contains a set of methods providing: </p>\r
-  \r
-<ul>\r
-  <li>management of study properties \r
-  <li> search for SObjects. \r
-  <li>search for SComponents\r
-  <li>creation of a new StudyBuilder, ComponentIterator, ChildIterator etc.\r
-</ul>\r
-<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1Study.html">here</a>.</p>\r
-<h3><a name="3_2"></a>3.2 StudyBuilder class</h3>\r
-<p>StudyBuilder supplies basic services to edit the study. The edition of the study is made by the\r
-component. Every component will use the basic services of the StudyBuilder allowing to write and publish objects.</p>\r
-<p>StudyBulder provides the following functionality:</p>\r
-<ul>\r
-  <li>creation, modification or deletetion of SObjects in the study</li>\r
-  <li>creation or removal of SComponents </li>\r
-  <li>undo/redo functionality. For that purpose it supplies the methods NewCommand, \r
-    CommitCommand, AbortCommand. </li>\r
-</ul>\r
-<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1StudyBuilder.html">here</a>.</p>\r
-<h3><a name="3_3"></a>3.3 StudyManager class</h3>\r
-<p>The purpose of the Manager is to manipulate Studies. Since SALOME is a multi-document \r
-  application during a working session you can operate as many stadies as you \r
-  wishes to create. </p>\r
-<p>For that purpose StudyManager provides the following functionality:</p>\r
-<ul>\r
-  <li>creation, opening, closing and saving studies</li>\r
-  <li>navigation through a set of studies present in the current working session</li>\r
-  <li> copy/paste of the objects in the study functionality.</li>\r
-</ul>\r
-<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1StudyManager.html">here</a>.</p>\r
-<h3><a name="3_4"></a>3.4 SObject class</h3>\r
-<p>The objects in the study are built by the StudyBuilder. \r
-The SObject class provides methods for elementary inquiries, like getting an object ID or its attribuites. </p>\r
-<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1SObject.html">here</a>.</p>\r
-<h3><a name="3_5"></a>3.5 SComponent class</h3>\r
-<p>The SComponent class establishes in the study a permanent assocition to the components \r
-integrated into SALOME platform. The SComponent interface is a specialization of the SObject\r
- class. It inherits the most of its methods from the SObject class which are used for management of the SComponents.</p>\r
-<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1SComponent.html">here</a>.</p>\r
-<h3><a name="3_6"></a>3.6 ChildIterator class</h3>\r
-<p>It is one of the tools destined for exploration of the study. This class contains a set of methods allowing to get \r
-the access to all identified objects which are sons of another identifiedobject.</p>\r
-<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1ChildIterator.html">here</a>.</p>\r
-<h3><a name="3_7"></a>3.7 SComponentIterator</h3>\r
-<p>This is the second tool destined for exploration of the study. This interface contains the methods allowing to iterate over all SComponents in the list.\r
- The search is started from the first SComponent in the list. </p>\r
-<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1SComponentIterator.html">here</a>.</p> \r
\r
-<h3><a name="3_8"></a>3.8 GenericAttribute class </h3>\r
- <p>GenericAttribute represents a base class for all attributes which can be assigned to the SObjects created in the study. All attribute classes \r
- derive from this classe and inherit its methods. </p>\r
- <p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1GenericAttribute.html">here</a>.</p> \r
\r
-<p>In SALOME application a SObject can possess the following attributes:</p>\r
-<table width="48%" border="0">\r
-  <tr>\r
-    <td width="44%" height="241"> \r
-      <ul>\r
-       <li><a href="interfaceSALOMEDS_1_1AttributeName.html">AttributeName</a></li>\r
- <li><a href="interfaceSALOMEDS_1_1AttributeComment.html">AttributeComment</a></li>\r
- <li><a href="interfaceSALOMEDS_1_1AttributeIOR.html">AttributeIOR</a></li>\r
- <li><a href="interfaceSALOMEDS_1_1AttributeReal.html">AttributeReal</a></li>\r
- <li><a href="interfaceSALOMEDS_1_1AttributeInteger.html">AttributeInteger</a></li>\r
- <li><a href="interfaceSALOMEDS_1_1AttributeSequenceOfReal.html">AttributeSequenceOfReal</a></li>\r
- <li><a href="interfaceSALOMEDS_1_1AttributeSequenceOfInteger.html">AttributeSequenceOfInteger</a></li>\r
- <li><a href="interfaceSALOMEDS_1_1AttributePersistentRef.html">AttributePersistentRef</a></li>\r
- <li><a href="interfaceSALOMEDS_1_1AttributeDrawable.html">AttributeDrawable</a></li>\r
- <li><a href="interfaceSALOMEDS_1_1AttributeSelectable.html">AttributeSelectable</a></li>\r
- <li><a href="interfaceSALOMEDS_1_1AttributeExpandable.html">AttributeExpandable</a></li>\r
- <li><a href="interfaceSALOMEDS_1_1AttributeOpened.html">AttributeOpened</a></li>\r
- </ul></td>\r
-    <td width="56%" height="241"> \r
-      <ul>\r
- <li><a href="interfaceSALOMEDS_1_1AttributeTextColor.html">AttributeTextColor </a></li>\r
- <li><a href="interfaceSALOMEDS_1_1AttributeTextHighlightColor.html">AttributeTextHighlightColor</a></li>\r
- <li><a href="interfaceSALOMEDS_1_1AttributePixMap.html">AttributePixMap</a></li>\r
- <li><a href="interfaceSALOMEDS_1_1AttributeTreeNode.html">AttributeTreeNode</a></li>\r
- <li><a href="interfaceSALOMEDS_1_1AttributeLocalID.html">AttributeLocalID</a></li>\r
- <li><a href="interfaceSALOMEDS_1_1AttributeUserID.html">AttributeUserID</a></li>\r
- <li><a href="interfaceSALOMEDS_1_1AttributeTarget.html">AttributeTarget</a></li>\r
- <li><a href="interfaceSALOMEDS_1_1AttributeTableOfInteger.html">AttributeTableOfInteger</a></li>\r
- <li><a href="interfaceSALOMEDS_1_1AttributeTableOfReal.html">AttributeTableOfReal</a></li>\r
- <li><a href="interfaceSALOMEDS_1_1AttributeTableOfString.html">AttributeTableOfString</a></li>\r
- <li><a href="interfaceSALOMEDS_1_1AttributeStudyProperties.html">AttributeStudyProperties</a></li>\r
- <li><a href="interfaceSALOMEDS_1_1AttributePythonObject.html">AttributePythonObject</a></li>  \r
- </ul></td>\r
-  </tr>\r
-</table>\r
-<h3><a name="3_9"></a>3.9 UseCaseBuilder class</h3>\r
-<p>UseCase in the study represents a user-defined subtree, containing all or some of the objects which currently exist \r
-in the study. The UseCaseBuilder class contains a set of methods used for management (creation, deletion etc) of this sub-tree in the study. </p>\r
-<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1UseCaseBuilder.html">here</a>.</p>\r
\r
-<h3><a name="3_10"></a>3.10 UseCaseIterator</h3>\r
- <p>This class represents an exploration tool for the UseCase. It contains a set of methods used for iteration over the objects in the UseCase.</p> \r
- <p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1UseCaseIterator.html">here</a>.</p>\r
\r
-<h3><a name="3_11"></a>3.11 Callback class</h3>\r
- <p>The StudyBuilder can be created with the method NewBuilder. While invocation of this method a new object of the class \r
- Callback is created and this object is assigned to the newly created Builder as callback which should be called \r
- when <i>adding</i> and <i>removing</i> the objects. </p>\r
- <p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1Callback.html">here</a>.</p>\r
\r
-<h3><a name="3_12"></a>3.12 Driver class</h3>\r
\r
-<p>This class represents a common tool for all components integrated into SALOME \r
-  application, that allows them to communicate with the study. It contains a set \r
-  of methods which can be called by any component and which provide the following \r
-  functionality:\r
-<ul>\r
-  <li>publishing in the study of the objects created by a definite component </li>\r
-  <li>saving/loading of the data created by a definite component. These methods \r
-    are called by the StudyManager when loading/saving a study containing the \r
-    data created by a definite component.</li>\r
-  <li>transforming of the transient references into persistant references (or \r
-    vice versa) of the SObjects when saving (or loading) a study</li>\r
-  <li>copy/paste common functionality. These methods can be called by any component \r
-    in order to copy/paste its object created in the study</li>\r
-</ul>\r
-<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1Driver.html">here</a>.</p>\r
-<p><a href="#cont"><b><i>Back to the contents</i></b></a></p>\r
-</body>\r
-</html>\r
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+   <meta name="GENERATOR" content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+   <title>Main Page</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head>
+<body>
+&nbsp;
+<center><table WIDTH="96%" >
+<tr>
+<td><a href="http://www.opencascade.com"><img src="sources/logocorp.gif" BORDER=0 height=46 width=122></a></td>
+
+
+<td>
+<div align=right><a href="http://www.opencascade.org/SALOME/"><img src="sources/application.gif" BORDER=0 height=46 width=108></a></div>
+</td>
+</tr>
+</table></center>
+
+
+<h1><a name="page2">General overview</a>
+</h1>
+<br>
+<h2><a name="cont"></a>Table of contents</h2>
+<ul>
+  <li><i><b><a href="#1">1. Introduction</a></b></i></li>
+  <li><i><b><a href="#2">2. Representation of the study</a></b></i></li>
+  <ul>
+    <li><i><b><a href="#2_1">2.1 Study in transient format</a></b></i></li>
+    <li><i><b><a href="#2_2">2.2 Study in persistent format</a></b></i></li>
+    <li><i><b><a href="#2_3">2.3 Link between transient and persistent formats</a></b></i></li>
+  </ul>
+  <li><i><b><a href="#3">3. Services and features of the study</a></b></i></li>
+  <ul>
+  <li><i><b><a href="#3_1">3.1 Study class </a></b></i></li>
+  <li><i><b><a href="#3_2">3.2 StudyBuilder class </a></b></i></li>
+  <li><i><b><a href="#3_3">3.3 StudyManager class </a></b></i></li>
+  <li><i><b><a href="#3_4">3.4 SObject class </a></b></i></li>
+  <li><i><b><a href="#3_5">3.5 SComponent class </a></b></i></li>
+  <li><i><b><a href="#3_6">3.6 ChildIterator class </a></b></i></li>
+  <li><i><b><a href="#3_7">3.7 SComponentIterator </a></b></i></li>
+  <li><i><b><a href="#3_8">3.8 GenericAttribute class  </a></b></i></li>
+  <li><i><b><a href="#3_9">3.9 UseCaseBuilder class </a></b></i></li>
+  <li><i><b><a href="#3_10">3.10 UseCaseIterator </a></b></i></li>
+  <li><i><b><a href="#3_12">3.11 Callback class </a></b></i></li>
+  <li><i><b><a href="#3_12">3.12 Driver class </a></b></i></li>
+  </ul>
+</ul> 
+<h2><a name="1"></a>1. Introduction</h2>
+<p>In SALOME application the Study module is used for management (creation, saving 
+  etc.) of studies. In the framework of the platform, a study represents a working 
+  document allowing to manage the data produced by various components which are 
+  integarted into SALOME.<br>
+</p>
+<h2><a name="2"></a>2. Representation of the study</h2>
+<p>The study represents a set of objects that we will call Study Objects or SObjects. 
+  The study can be represented as a tree, every node of that tree containing a 
+  SObject. SObjects in the study can be values or references towards data of calculation, 
+  graphs of calculation, trees of construction of detail(room), results. Every 
+  SOject of the study is characterised by a unique identifier in the study.</p>
+<p>The study allows to describe the following relations:</p>
+<ul>
+  <li>The link between the transient and persistent values of an SObject.</li>
+  <li>The relations between the SObjects produced by different components.</li>
+  <li>The relations between the SObjects produced by the same component.</li>
+  <li>The link between an object and its user name.</li>
+  <li>The access to the definition of the component which produce an object of 
+    the study.</li>
+  <li>The access to instance of the component (if this one exists) which has produced 
+    this SObject of the study.</li>
+</ul>
+
+<p>Every SObject in the study contains a set of attributes. These attributes represent 
+  a set of definitions associated to that object, they can contain values or corba 
+  references towards the data contained in the internal data structure of a component.</p>
+<p>As the structure of the study is tree-like it is possible to associate sub-objects 
+  to objects.</p>
+<p>As particular object, the study contains Component Data which are labels associated to the component
+which produce data in the study. It is to this object that we can associate attributes containing ID which
+we shall allow to identify the type of the component and also its instance. Objects produced by a
+component will be sub-objects of the coresponding Data Component.</p>
+<p>For example Component Data GEOM will contain the data produced by the component 
+  Geom.</p>
+<table width="100%" border="0">
+  <tr>
+    <td><img src="Study_Struct.gif"></td>
+    <td>GEOM contains the data produced by the component GEOM. The component MESH 
+      contains a SObject Mesh_1 wich refers to the SObject identified 
+      by ID4 corresponding to Geometrie_1.</td>
+  </tr>
+</table>
+<p>We distinguish two forms of the study, the study opened in a session SALOME and the study in the
+persistent format. These two formats are described in the following sections</p>
+<h3><a name="2_1"></a>2.1 Study in transient format</h3>
+<p>The representation of the study in memory will be based on the document OCAF (supplied by OCC).
+The document OCAF can be seen as a tree, every node of that tree is identified by <i>a tag</i> representing an integer value.</p>
+<p>The exploration of the tree from the root to a node supplies a sequence of tags which establishes a
+unique identifier <i>ID</i>. ID represents a character string containing the sequence of tags separated by
+one ':'.</p> 
+<p>For example  0:1:12:4 </p>
+<p>To every node we can associate a set of attributes.</p>
+<p>The attributes which the study can contain can be of the following types:</p>
+<ul>
+<li>All standard attributes supplied by OCC (package TdataStd) which allow to define (integers,
+real, strings, identifiers, references etc.)</li>
+<li>Attributes which contain CORBA references.</li>
+<li>Attributes which contain the path HDF to reach the persistent datum. (Cf. the following chapter)</li>
+</ul>
+<p><b>Remark</b>: it is the study which takes care to build the attributes from the values which are passed to it, so
+an attribute is always in a study, and it knows the study object to which it is attached.</p>
+<p>Example of a Study Object as a set of various attributes.</p>
+<img src="SObject.gif"> 
+<h3><a name="2_2"></a>2.2 Study in persistent format</h3>
+<p>To store a study HDF format is used, this tool allows to represent persistent data in the form of a tree.</p>
+<p>Under the root of the persistent document, you can find a set of nodes:</p>
+<ul>
+<li>The first node contains the skeleton of the study. The skeleton consists of the identifiers of the
+objects, as well as the references among them.</li>
+<li>There is also one node for every component which has produced data during this SALOME session. Under each of these
+node there are values of the data produced by this component.</li>
+</ul>
+<h3><a name="2_3"></a>2.3 Link between transient and persistent formats</h3>
+<p>It will be possible to complete the definition of one object in the study by associating to it an attribute
+<i>HDFPath</i> which will contain the path to the persistent data.</p>
+<img src="Link.gif"> 
+<p><a href="#cont"><b><i>Back to the contents</i></b></a></p>
+<h2><a name="3"></a>3. Services and features of the study</h2>
+<p>The Study in SALOME application possess a wide functionality. This functionality is provided by a set of classes which are described
+below.
+<h3><a name="3_1"></a>3.1 Study class</h3>
+<p>The purpose of the Study class is to manage the data produced by various components 
+  of SALOME platform. Most of the Study operations are handled by the <a href="#3_3">StudyManager</a> 
+  and the <a href="#3_2">StudyBuilder</a>. What 
+  is left in the Study class are elementary inquiries. A Study is explored by 
+  a set of tools, mainly iterators , which are described further.</p> 
+  <p>Nevertheless, the Study class contains a set of methods providing: </p>
+  
+<ul>
+  <li>management of study properties 
+  <li> search for SObjects. 
+  <li>search for SComponents
+  <li>creation of a new StudyBuilder, ComponentIterator, ChildIterator etc.
+</ul>
+<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1Study.html">here</a>.</p>
+<h3><a name="3_2"></a>3.2 StudyBuilder class</h3>
+<p>StudyBuilder supplies basic services to edit the study. The edition of the study is made by the
+component. Every component will use the basic services of the StudyBuilder allowing to write and publish objects.</p>
+<p>StudyBulder provides the following functionality:</p>
+<ul>
+  <li>creation, modification or deletetion of SObjects in the study</li>
+  <li>creation or removal of SComponents </li>
+  <li>undo/redo functionality. For that purpose it supplies the methods NewCommand, 
+    CommitCommand, AbortCommand. </li>
+</ul>
+<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1StudyBuilder.html">here</a>.</p>
+<h3><a name="3_3"></a>3.3 StudyManager class</h3>
+<p>The purpose of the Manager is to manipulate Studies. Since SALOME is a multi-document 
+  application during a working session you can operate as many stadies as you 
+  wishes to create. </p>
+<p>For that purpose StudyManager provides the following functionality:</p>
+<ul>
+  <li>creation, opening, closing and saving studies</li>
+  <li>navigation through a set of studies present in the current working session</li>
+  <li> copy/paste of the objects in the study functionality.</li>
+</ul>
+<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1StudyManager.html">here</a>.</p>
+<h3><a name="3_4"></a>3.4 SObject class</h3>
+<p>The objects in the study are built by the StudyBuilder. 
+The SObject class provides methods for elementary inquiries, like getting an object ID or its attribuites. </p>
+<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1SObject.html">here</a>.</p>
+<h3><a name="3_5"></a>3.5 SComponent class</h3>
+<p>The SComponent class establishes in the study a permanent assocition to the components 
+integrated into SALOME platform. The SComponent interface is a specialization of the SObject
+ class. It inherits the most of its methods from the SObject class which are used for management of the SComponents.</p>
+<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1SComponent.html">here</a>.</p>
+<h3><a name="3_6"></a>3.6 ChildIterator class</h3>
+<p>It is one of the tools destined for exploration of the study. This class contains a set of methods allowing to get 
+the access to all identified objects which are sons of another identifiedobject.</p>
+<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1ChildIterator.html">here</a>.</p>
+<h3><a name="3_7"></a>3.7 SComponentIterator</h3>
+<p>This is the second tool destined for exploration of the study. This interface contains the methods allowing to iterate over all SComponents in the list.
+ The search is started from the first SComponent in the list. </p>
+<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1SComponentIterator.html">here</a>.</p> 
+<h3><a name="3_8"></a>3.8 GenericAttribute class </h3>
+ <p>GenericAttribute represents a base class for all attributes which can be assigned to the SObjects created in the study. All attribute classes 
+ derive from this classe and inherit its methods. </p>
+ <p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1GenericAttribute.html">here</a>.</p> 
+<p>In SALOME application a SObject can possess the following attributes:</p>
+<table width="48%" border="0">
+  <tr>
+    <td width="44%" height="241"> 
+      <ul>
+       <li><a href="interfaceSALOMEDS_1_1AttributeName.html">AttributeName</a></li>
+ <li><a href="interfaceSALOMEDS_1_1AttributeComment.html">AttributeComment</a></li>
+ <li><a href="interfaceSALOMEDS_1_1AttributeIOR.html">AttributeIOR</a></li>
+ <li><a href="interfaceSALOMEDS_1_1AttributeReal.html">AttributeReal</a></li>
+ <li><a href="interfaceSALOMEDS_1_1AttributeInteger.html">AttributeInteger</a></li>
+ <li><a href="interfaceSALOMEDS_1_1AttributeSequenceOfReal.html">AttributeSequenceOfReal</a></li>
+ <li><a href="interfaceSALOMEDS_1_1AttributeSequenceOfInteger.html">AttributeSequenceOfInteger</a></li>
+ <li><a href="interfaceSALOMEDS_1_1AttributePersistentRef.html">AttributePersistentRef</a></li>
+ <li><a href="interfaceSALOMEDS_1_1AttributeDrawable.html">AttributeDrawable</a></li>
+ <li><a href="interfaceSALOMEDS_1_1AttributeSelectable.html">AttributeSelectable</a></li>
+ <li><a href="interfaceSALOMEDS_1_1AttributeExpandable.html">AttributeExpandable</a></li>
+ <li><a href="interfaceSALOMEDS_1_1AttributeOpened.html">AttributeOpened</a></li>
+ </ul></td>
+    <td width="56%" height="241"> 
+      <ul>
+ <li><a href="interfaceSALOMEDS_1_1AttributeTextColor.html">AttributeTextColor </a></li>
+ <li><a href="interfaceSALOMEDS_1_1AttributeTextHighlightColor.html">AttributeTextHighlightColor</a></li>
+ <li><a href="interfaceSALOMEDS_1_1AttributePixMap.html">AttributePixMap</a></li>
+ <li><a href="interfaceSALOMEDS_1_1AttributeTreeNode.html">AttributeTreeNode</a></li>
+ <li><a href="interfaceSALOMEDS_1_1AttributeLocalID.html">AttributeLocalID</a></li>
+ <li><a href="interfaceSALOMEDS_1_1AttributeUserID.html">AttributeUserID</a></li>
+ <li><a href="interfaceSALOMEDS_1_1AttributeTarget.html">AttributeTarget</a></li>
+ <li><a href="interfaceSALOMEDS_1_1AttributeTableOfInteger.html">AttributeTableOfInteger</a></li>
+ <li><a href="interfaceSALOMEDS_1_1AttributeTableOfReal.html">AttributeTableOfReal</a></li>
+ <li><a href="interfaceSALOMEDS_1_1AttributeTableOfString.html">AttributeTableOfString</a></li>
+ <li><a href="interfaceSALOMEDS_1_1AttributeStudyProperties.html">AttributeStudyProperties</a></li>
+ <li><a href="interfaceSALOMEDS_1_1AttributePythonObject.html">AttributePythonObject</a></li>  
+ </ul></td>
+  </tr>
+</table>
+<h3><a name="3_9"></a>3.9 UseCaseBuilder class</h3>
+<p>UseCase in the study represents a user-defined subtree, containing all or some of the objects which currently exist 
+in the study. The UseCaseBuilder class contains a set of methods used for management (creation, deletion etc) of this sub-tree in the study. </p>
+<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1UseCaseBuilder.html">here</a>.</p>
+<h3><a name="3_10"></a>3.10 UseCaseIterator</h3>
+ <p>This class represents an exploration tool for the UseCase. It contains a set of methods used for iteration over the objects in the UseCase.</p> 
+ <p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1UseCaseIterator.html">here</a>.</p>
+<h3><a name="3_11"></a>3.11 Callback class</h3>
+ <p>The StudyBuilder can be created with the method NewBuilder. While invocation of this method a new object of the class 
+ Callback is created and this object is assigned to the newly created Builder as callback which should be called 
+ when <i>adding</i> and <i>removing</i> the objects. </p>
+ <p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1Callback.html">here</a>.</p>
+<h3><a name="3_12"></a>3.12 Driver class</h3>
+<p>This class represents a common tool for all components integrated into SALOME 
+  application, that allows them to communicate with the study. It contains a set 
+  of methods which can be called by any component and which provide the following 
+  functionality:
+<ul>
+  <li>publishing in the study of the objects created by a definite component </li>
+  <li>saving/loading of the data created by a definite component. These methods 
+    are called by the StudyManager when loading/saving a study containing the 
+    data created by a definite component.</li>
+  <li>transforming of the transient references into persistant references (or 
+    vice versa) of the SObjects when saving (or loading) a study</li>
+  <li>copy/paste common functionality. These methods can be called by any component 
+    in order to copy/paste its object created in the study</li>
+</ul>
+<p>The API reference for this class can be found <a href="interfaceSALOMEDS_1_1Driver.html">here</a>.</p>
+<p><a href="#cont"><b><i>Back to the contents</i></b></a></p>
+</body>
+</html>