DM_iterate_simple.py
1 ## @package python.demo.DM_iterate_simple
2 #
3 # iterating over all points of an existing ODM within python
4 # (script works in python 2 and 3)
5 #
6 
7 from __future__ import print_function # print function syntax as in python 3
8 import sys
9 
10 from opals import pyDM
11 
12 def DM_iterate_simple(filename, maxOutput=1000):
13  # open the odm / pyDM.Datamanager.load parameters: filename(string), readOnly(bool) threadSafety(bool)
14  dm = pyDM.Datamanager.load(filename, True, False)
15 
16  # if the dm wasn't opened successful exit function
17  if not dm:
18  print("Unable to open ODM '" + filename + "'")
19  return
20 
21  idx = 0
22  print("Output", dm.sizePoint(), "points from the ODM")
23 
24  # now iterate over all points
25  for pt in dm.points():
26  idx += 1
27 
28  # output point
29  print(idx, ".point", "%.3f" % pt.x, "%.3f" % pt.y, "%.3f" % pt.z)
30 
31  if idx >= maxOutput:
32  print("iteration stopped")
33  break
34 
35  print("done")
36 
37 
38 if len(sys.argv) == 1:
39  print("ODM parameter missing")
40  sys.exit(-1)
41 
42 DM_iterate_simple(sys.argv[1])