importProgressDemo.py
1 ## @package python.demo.importProgressDemo
2 # Example script demonstrates receiving log messages and progress information from opals modules
3 import opals
4 from opals import Import
5 
6 
7 def progress_bar(currStep, stepCount, prefix="", size=60 ):
8  x = int(size*currStep/float(stepCount))
9  print(f" {prefix} [{'#'*x}{'.'*(size-x)}] {currStep}/{stepCount}", end='\r', flush=True)
10 
11 
12 class Control(opals.Types.IControlObject):
13  def __init__(self):
14  super().__init__()
15  self.stages = None
16  self.prefix = None
17  self.stepCount = None
18 
19  def setStages(self, stages):
20  self.stages = stages # store stage message string list
21 
22  def setCurrStage(self, stageIdx):
23  self.prefix = f"{stageIdx+1}.stage: {self.stages[stageIdx]}"
24 
25  def setSteps(self, stepCount):
26  self.stepCount = stepCount # in this case value corresponds to number of points within laz file
27 
28  def setCurrStep(self, currStep):
29  progress_bar(currStep, self.stepCount, self.prefix)
30  if currStep == self.stepCount:
31  print() # add line feed
32 
33  def log(self, loglevel, threadid, message):
34  # only output error messages
35  if loglevel <= opals.Types.LogLevel.error:
36  print(f"{loglevel}: {message}")
37 
38 
39 #
40 # Import strip11.laz, strip21.laz and strip31.laz, dataset into an ODM
41 #
42 control = Control()
43 imp = Import.Import(inFile=["strip11.laz","strip21.laz","strip31.laz"], outFile="test.odm", screenLogLevel=opals.Types.LogLevel.none)
44 imp.set_controlObject(control)
45 imp.run()