1
2
3
4
5
6
7
8 import random
9 import math
10
11 unitIndent = " "
12
13 leftMargin = 150
14 rightMargin = 150
15 topMargin = 1500
16 bottomMargin = 1250
17 displayRatio = 16.0/9.0
18
19 markerCount = None
20
21
22
23
24
26 global markerCount
27
28
29 lastNCyclesEqnName = 'lastNCycles'
30 defaultLastNCycles = 2
31
32
33 ddtLines = []
34
35
36 ddtLines.append('defun _DDStemplateSaveRestore_()\n{')
37
38
39 ddtLines.append('decl ddsId, ddWinId, ddoId, pageId, goId, traceId, axisId, plotId, markerId;')
40 ddtLines.append('\nddsId = get_dds();')
41 ddtLines.append('\nddoId = get(ddsId, "CurrentObject");')
42 ddtLines.append('\npageId = get(ddoId, "CurrentPage");')
43
44
45
46 ddtLines.append('\nset(ddoId, "EnableExpressionUpdates", FALSE);')
47
48
49
50 ddtLines.append('goId = get_new(pageId, "Equation");')
51 ddtLines.append(unitIndent + 'set(goId, "Expression", "lastNCycles = %d");' % defaultLastNCycles)
52 ddtLines.append(unitIndent + 'set(goId, "Left", -1000);')
53 ddtLines.append(unitIndent + 'set(goId, "Top", -250);')
54
55
56 markerCount = 1
57
58
59 stepX = 6000.0
60 stepY = 6500.0
61 origin = [1000.0, 1000.0]
62 numberOfColumns = math.floor(math.sqrt(len(nodeNames)*displayRatio))
63 for ind in range(0, len(nodeNames)):
64 dx = stepX*(ind%numberOfColumns)
65 dy = stepY*(ind//numberOfColumns)
66 newOrigin = [origin[0]+dx, origin[1]+dy]
67 pos = [newOrigin[0]+leftMargin, newOrigin[1]+stepY-bottomMargin, newOrigin[0]+stepX-rightMargin, newOrigin[1]+bottomMargin]
68 ddtLines.append(generatePlot(nodeNames[ind], switchingFreq, pos, 1))
69
70
71 ddtLines.append(generateEquationPage(switchingFreq, lastNCyclesEqnName, 1))
72
73
74 ddtLines.append('\nset(ddoId, "UpdateAllExpressions", TRUE);')
75 ddtLines.append('set(ddoId, "EnableExpressionUpdates", TRUE);')
76
77
78 ddtLines.append('\nset(ddsId, "Action", ddsToolZoomAll);')
79
80
81 ddtLines.append('}')
82
83
84 ddtLines.append('_DDStemplateSaveRestore_();')
85
86
87 ddtLines.append('\n// Node names plotted:')
88 for ind in range(0, len(nodeNames)):
89 ddtLines.append('// ' + str(ind) + ': ' + nodeNames[ind])
90 ddtLines.append('\n')
91
92 ddtLines = '\n'.join(ddtLines)
93
94
95 with open(fileName, "w") as fp:
96 fp.write(ddtLines)
97 fp.close()
98 return 0
99
100
101
103
104 plot = []
105 plot.append('\ngoId = get_new(pageId, "Plot");')
106 plot.append(unitIndent*nIndent + 'set(goId, "InitPlot", 0);')
107
108 plot.append(unitIndent*nIndent + 'set(goId, "NameId", 0);')
109 plot.append(unitIndent*nIndent + 'set(goId, "Name", "default");')
110 plot.append(unitIndent*nIndent + 'set(goId, "Right", %d);' % pos[2])
111 plot.append(unitIndent*nIndent + 'set(goId, "Bottom", %d);' % pos[1])
112 plot.append(unitIndent*nIndent + 'set(goId, "Left", %d);' % pos[0])
113 plot.append(unitIndent*nIndent + 'set(goId, "Top", %d);' % pos[3])
114 plot.append(unitIndent*nIndent + 'set(goId, "Zrot", 0.0);')
115 plot.append(unitIndent*nIndent + 'set(goId, "Yrot", 0.0);')
116 plot.append(unitIndent*nIndent + 'set(goId, "Xrot", 0.0);')
117 plot.append(unitIndent*nIndent + 'set(goId, "Status", 0);')
118 plot.append(unitIndent*nIndent + 'set(goId, "LineColor", 0);')
119 plot.append(unitIndent*nIndent + 'set(goId, "LineType", 0);')
120 plot.append(unitIndent*nIndent + 'set(goId, "LineWidth", 7);')
121 plot.append(unitIndent*nIndent + 'set(goId, "FillPattern", -1);')
122 plot.append(unitIndent*nIndent + 'set(goId, "FillColor", 0);')
123 plot.append(unitIndent*nIndent + 'set(goId, "LegendOnOff", TRUE);')
124 plot.append(unitIndent*nIndent + 'set(goId, "leftMargingin", %d);' % leftMargin)
125 plot.append(unitIndent*nIndent + 'set(goId, "rightMargingin", %d);' % rightMargin)
126 plot.append(unitIndent*nIndent + 'set(goId, "topMargingin", %d);' % topMargin)
127 plot.append(unitIndent*nIndent + 'set(goId, "bottomMargingin", %d);' % bottomMargin)
128 plot.append(unitIndent*nIndent + 'set(goId, "Title", "%s");' % nodeName)
129 plot.append(unitIndent*nIndent + 'set(goId, "TitleFont", "Arial For CAE");')
130 plot.append(unitIndent*nIndent + 'set(goId, "TitleFontSize", 150);')
131 plot.append(unitIndent*nIndent + 'set(goId, "TitleColor", 0);')
132 plot.append(generateFourAxes(nIndent))
133 plot.append(generateTrace(nodeName, nIndent))
134 result = '%s[_startIndex::_stopIndex]' % nodeName
135 if switchingFreq > 0:
136 plot.append(generateMarkers(result, switchingFreq, nIndent))
137
138 plot = '\n'.join(plot)
139 return plot
140
141
150
151
153 axis = []
154
155 axis.append(unitIndent*nIndent + 'if (axisId != NULL) {')
156
157 axis.append(unitIndent*(nIndent+1) + 'set(axisId, "Color", 104);')
158 axis.append(unitIndent*(nIndent+1) + 'set(axisId, "UserLabel", "");')
159 axis.append(unitIndent*(nIndent+1) + 'set(axisId, "LabelColor", 0);')
160 axis.append(unitIndent*(nIndent+1) + 'set(axisId, "TicksOnOff", TRUE);')
161 axis.append(unitIndent*(nIndent+1) + 'set(axisId, "GridOnOff", TRUE);')
162 axis.append(unitIndent*(nIndent+1) + 'set(axisId, "LabelsOnOff", TRUE);')
163 axis.append(unitIndent*(nIndent+1) + 'set(axisId, "FontSize", 140);')
164 axis.append(unitIndent*(nIndent+1) + 'set(axisId, "LineThick", 14);')
165 axis.append(unitIndent*(nIndent+1) + 'set(axisId, "LineType", 0);')
166 axis.append(unitIndent*(nIndent+1) + 'set(axisId, "TickFontSize", 140);')
167 axis.append(unitIndent*(nIndent+1) + 'set(axisId, "AutoscaleOnOff", TRUE);')
168 axis.append(unitIndent*(nIndent+1) + 'set(axisId, "Logarithmic", FALSE);')
169 axis.append(unitIndent*(nIndent+1) + 'set(axisId, "Font", "Arial For CAE");')
170 axis.append(unitIndent*(nIndent+1) + 'set(axisId, "Format", ddsFormatAutomatic);')
171 axis.append(unitIndent*(nIndent+1) + 'set(axisId, "AxisLabelRot", 0);')
172 axis.append(unitIndent*(nIndent+1) + 'set(axisId, "NumDigits", 3);')
173 axis.append(unitIndent*(nIndent+1) + 'set(axisId, "DisplayAllIndependentData", TRUE);')
174 axis.append(unitIndent*nIndent + '}')
175 axis = '\n'.join(axis)
176 return axis
177
178
180 trace = []
181
182 trace.append(unitIndent*nIndent + 'traceId = get_new(goId, "Trace", "%s[_startIndex::_stopIndex]", "X Axis", "Y Axis");' % node)
183 trace.append(generateTraceFormat(nIndent+1))
184 trace.append(unitIndent*(nIndent+1) + 'if (traceId != NULL) {')
185 trace.append(unitIndent*(nIndent+2) + 'set(traceId, "TraceType", ddsAutomaticTraceType);')
186 trace.append(unitIndent*(nIndent+2) + 'set(traceId, "Color", 1);')
187
188 trace.append(unitIndent*(nIndent+2) + 'set(traceId, "UIIndex", 0);')
189 trace.append(unitIndent*(nIndent+2) + 'set(traceId, "Status", 43008);')
190 trace.append(unitIndent*(nIndent+1) + '}')
191 trace = '\n'.join(trace)
192 return trace
193
194
228
229
230
231
232 -def generateEquationPage(switchingFreq, lastNCyclesEqnName, nIndent):
233 pageName = '_equations_'
234 pageInvisibile = 'FALSE';
235 expressionList = generateExpressionList(switchingFreq, lastNCyclesEqnName)
236
237
238 equationPage = []
239 equationPage.append(generatePageId(nIndent))
240 equationPage.append(setPageVisibility(pageInvisibile, nIndent))
241 equationPage.append(generateEquation(expressionList, nIndent))
242 equationPage = '\n'.join(equationPage)
243 return equationPage
244
246 if switchingFreq > 0:
247 startIndexExp = '_startIndex = _pe_findStartIndex(%f, %s, time)' % (switchingFreq, lastNCyclesEqnName)
248 else:
249 startIndexExp = '0'
250 stopIndexExp = '_stopIndex = sweep_size(time) - 1'
251 expressionList = [startIndexExp, stopIndexExp]
252 return expressionList
253
254
255 -def generatePageId(nIndent):
256 pageId = '\npageId = get_new(ddoId, "Page");'
257 return pageId
258
259
261 topPosition = 0
262 bottomPosition = 250
263 equation = []
264 for ind in expressionList:
265 equation.append('\ngoId = get_new(pageId, "Equation");')
266 equation.append(unitIndent*nIndent + 'set(goId, "Expression", "%s");' % ind)
267 equation.append(unitIndent*nIndent + 'set(goId, "Bottom", %s);' % bottomPosition)
268 equation.append(unitIndent*nIndent + 'set(goId, "Top", %s);' % topPosition)
269 topPosition = topPosition + 375
270 bottomPosition = bottomPosition + 375
271 equation = '\n'.join(equation)
272 return equation
273
274
282
284 global markerCount
285 baselineMarker = unitIndent*nIndent + 'markerId = get_new(traceId, "MarkerNew", "m%d", "_pe_findBaselineValueTime(%s, %f)", 0, "", "", 1, "");\n' % (markerCount, result, switchingFreq)
286 markerCount += 1
287 return baselineMarker
288
290 global markerCount
291 peakMarker = []
292 peakMarker.append(unitIndent*nIndent + 'markerId = get_new(traceId, "MarkerNew", "m%d", "_pe_findMaxValueTime(%s)", 0, "", "", 1, "m%d");' % (markerCount, result, markerCount-1))
293 peakMarker.append(unitIndent*(nIndent+1) + 'if (markerId != NULL) {')
294 peakMarker.append(unitIndent*(nIndent+2) + 'set(markerId, "DeltaModeStatus", 1);')
295 peakMarker.append(unitIndent*(nIndent+2) + 'set(markerId, "ReadoutIndeVisualLabel", 0);')
296 peakMarker.append(unitIndent*(nIndent+1) + '}\n')
297 peakMarker = '\n'.join(peakMarker)
298 markerCount += 1
299 return peakMarker
300
302 global markerCount
303 nextPeakMarker = []
304 nextPeakMarker.append(unitIndent*nIndent + 'markerId = get_new(traceId, "MarkerNew", "m%d", "_pe_findNextPeakValueTime(%s, %f)", 0, "", "", 1, "m%d");' % (markerCount, result, switchingFreq, markerCount-1))
305 nextPeakMarker.append(unitIndent*(nIndent+1) + 'if (markerId != NULL) {')
306 nextPeakMarker.append(unitIndent*(nIndent+2) + 'set(markerId, "DeltaModeStatus", 1);')
307 nextPeakMarker.append(unitIndent*(nIndent+2) + 'set(markerId, "ReadoutDepeVisualLabel", 0);')
308 nextPeakMarker.append(unitIndent*(nIndent+1) + '}')
309 nextPeakMarker = '\n'.join(nextPeakMarker)
310 markerCount += 1
311 return nextPeakMarker
312
313
314 -def setPageVisibility(pageInvisibile, nIndent):
315 baseClassObject = []
316
317 baseClassObject.append(unitIndent*nIndent + 'set(pageId, "Invisible",%s);' % pageInvisibile)
318 baseClassObject = ''.join(baseClassObject)
319 return baseClassObject
320