Salome HOME
3be50d9b64da8cc7a758811254445d237450b8a9
[modules/kernel.git] / doc / salome / examples / example16
1
2 dir= os.getenv("TmpDir")
3 if dir == None:
4         dir = "/tmp"
5
6 batchmode_geompy.myBuilder._set_UndoLimit(20)
7
8 # 1st transaction -----------------------------------------
9 batchmode_geompy.myBuilder.NewCommand()
10 #       create AttributeSequenceOfInteger      
11 #=========================================================
12 A = batchmode_geompy.myBuilder.FindOrCreateAttribute(batchmode_geompy.father, "AttributeSequenceOfInteger")
13 if A == None :
14         raise  RuntimeError, "Can't create AttributeSequenceOfInteger attribute"
15 A = A._narrow(SALOMEDS.AttributeSequenceOfInteger)
16 if A == None :
17         raise  RuntimeError, "Can't create AttributeSequenceOfInteger attribute"
18
19 A.Add(100)
20 A.Add(300)
21 A.Add(500)
22 A.Add(400)
23 A.Add(700)
24 print "First transaction goes on :  HasOpenCommand() = ", batchmode_geompy.myBuilder.HasOpenCommand()
25 batchmode_geompy.myBuilder.CommitCommand() #--------------
26
27 # 2nd transaction ------------------------------------------
28 batchmode_geompy.myBuilder.NewCommand() 
29 A.Remove(3)
30 A.ChangeValue(4,500)
31 batchmode_geompy.myBuilder.CommitCommand() #--------------
32
33 if batchmode_geompy.myBuilder.GetAvailableUndos() == 0:
34         raise RuntimeError, "GetAvailableUndos() = 0 but must not !"
35
36 if A.Length() != 4:
37         print "Wrong length of SequenceOfInteger"
38 if A.Value(1) != 100 or A.Value(2) != 300 or A.Value(3) != 400 or A.Value(4) != 500:
39         raise  RuntimeError, "Wrong  value of  AttributeSequenceOfInteger"
40
41 file1 = dir + "/test1.hdf"
42 batchmode_geompy.myStudyManager.SaveAs(file1, batchmode_geompy.myStudy)
43
44 # 1st Undo ---------------------------------------
45 batchmode_geompy.myBuilder.Undo()
46 res, A = batchmode_geompy.myBuilder.FindAttribute(batchmode_geompy.father, "AttributeSequenceOfInteger")
47 if A is None:
48         raise  RuntimeError, "After first 'undo' can't find AttributeSequenceOfInteger"
49 if A.Length() != 5:
50         print "Wrong length of SequenceOfInteger"
51 if A.Value(1) != 100 or A.Value(2) != 300 or A.Value(3) != 500 or A.Value(4) != 400 or  A.Value(5) != 700:
52         print  A.Value(1), A.Value(2), A.Value(3), A.Value(4), A.Value(5)
53         raise  RuntimeError, "Wrong  value of  AttributeSequenceOfInteger after the first 'undo'!"
54 # save 
55 file2 = dir + "/test2.hdf"
56 batchmode_geompy.myStudyManager.SaveAs(file2, batchmode_geompy.myStudy)
57 #-------------------------------------------------
58 # 2nd Undo ---------------------------------------
59 batchmode_geompy.myBuilder.Undo()
60 res, attr = batchmode_geompy.myBuilder.FindAttribute(batchmode_geompy.father, "AttributeSequenceOfInteger")
61 if res !=0 or attr != None :
62         raise  RuntimeError, "After the second 'undo' AttributeSequenceOfInteger exists but must not!"
63 file3 = dir + "/test3.hdf"
64 batchmode_geompy.myStudyManager.SaveAs(file3, batchmode_geompy.myStudy)
65 #-------------------------------------------------
66
67 #make redo twice ---------------------------------
68 if batchmode_geompy.myBuilder.GetAvailableRedos() == 0:
69         raise RuntimeError, "GetAvailableRedos() = 0 but must not !"
70 batchmode_geompy.myBuilder.Redo()
71 batchmode_geompy.myBuilder.Redo()
72 res, A = batchmode_geompy.myBuilder.FindAttribute(batchmode_geompy.father, "AttributeSequenceOfInteger")
73 if res ==0 or A== None :
74         raise  RuntimeError, "AttributeSequenceOfInteger is not found but must be!"
75 if A.Length() != 4:
76         print "Wrong length of SequenceOfInteger"
77 if A.Value(1) != 100 or A.Value(2) != 300 or A.Value(3) != 400 or A.Value(4) != 500:
78         raise  RuntimeError, "Wrong  value of  AttributeSequenceOfInteger"
79
80
81 #----------------------------------------------------------------------
82 openedStudy=batchmode_geompy.myStudyManager.Open(file1);
83
84 if openedStudy == None:
85         raise  RuntimeError, "Can't open saved study!"
86
87
88 father = openedStudy.FindComponent("GEOM")
89 if father is None:
90          raise  RuntimeError, "Geom component is not found!  Wrong study is opened." 
91
92
93 #     find AttributeSequenceOfInteger
94 #======================================
95
96 res,A=father.FindAttribute("AttributeSequenceOfInteger")
97 if res == 0 or A == None:
98         raise  RuntimeError, "Error:  not found AttributeSequenceOfInteger"
99
100 A = A._narrow(SALOMEDS.AttributeSequenceOfInteger)
101
102 if A.Length() != 4:
103         print "Wrong length of SequenceOfInteger"
104 if A.Value(1) != 100 or A.Value(2) != 300 or A.Value(3) != 400 or A.Value(4) != 500:
105         print "Wrong  value of  AttributeSequenceOfInteger"
106 #----------------------------------------------------------------------
107 openedStudy=batchmode_geompy.myStudyManager.Open(file2);
108
109 if openedStudy == None:
110         raise  RuntimeError, "Can't open saved study!"
111
112
113 father = openedStudy.FindComponent("GEOM")
114 if father is None:
115          raise  RuntimeError, "Geom component is not found!  Wrong study is opened." 
116
117
118 #     find AttributeSequenceOfInteger
119 #======================================
120
121 res,A=father.FindAttribute("AttributeSequenceOfInteger")
122 if res == 0 or A == None:
123         raise  RuntimeError, "Error:  not found AttributeSequenceOfInteger"
124
125 A = A._narrow(SALOMEDS.AttributeSequenceOfInteger)
126
127 if A.Length() != 5:
128         print "Wrong length of SequenceOfInteger"
129 if A.Value(1) != 100 or A.Value(2) != 300 or A.Value(3) != 500 or A.Value(4) != 400 or  A.Value(5) != 700:
130         raise  RuntimeError, "Wrong  value of  AttributeSequenceOfInteger after the first 'undo'!"
131
132 #----------------------------------------------------------------------
133 openedStudy=batchmode_geompy.myStudyManager.Open(file3);
134
135 if openedStudy == None:
136         raise  RuntimeError, "Can't open saved study!"
137
138
139 father = openedStudy.FindComponent("GEOM")
140 if father is None:
141          raise  RuntimeError, "Geom component is not found!  Wrong study is opened." 
142
143
144 #     find AttributeSequenceOfInteger
145 #======================================
146
147 res,A=father.FindAttribute("AttributeSequenceOfInteger")
148
149 if res!=0 or A != None:
150         raise RuntimeError, " AttributeSequenceOfInteger is found but must not!"
151