Changeset 368
- Timestamp:
- 11/11/02 18:57:53 (6 years ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/RBFoundation/RBFoundation/TaskProgress.py
r367 r368 35 35 for subtask in Task.Subtasks: 36 36 result += subtask.Percentage 37 result /= len(Task.Subtasks) 38 Task.Percentage = result 37 Task.Progress = result 39 38 40 39 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 124 123 return max(0., min(1., result)) 125 124 def _setPercent(self, percent): 126 ProgressStart = self.ProgressStart 127 self.Progress = ProgressStart + percent*(self.ProgressEnd-ProgressStart) 125 self.Progress = self.ProgressStart + percent*(self.ProgressEnd-self.ProgressStart) 128 126 Percentage = Percent = property(_getPercent, _setPercent, _delProgress, doc="The task's percent [0.,1.] complete. Linear mapping of Progress to the progress range.") 129 127 trunk/RBRapier/RBRapier/Formats/Lightwave/Loader.py
r366 r368 174 174 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 175 175 176 class LightwaveLWO Loader(object):176 class LightwaveLWOBLoader(object): 177 177 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 178 178 #~ Constants / Variables / Etc. … … 202 202 if FORMChunk.getname() != 'FORM': 203 203 raise ValueError, "File does not contain a FORM chunk to contain a Lightwave3D Object" 204 if FORMChunk.read(4) != 'LWOB': 205 raise ValueError, "File does not contain a Lightwave3D Object" 204 205 if TaskProgress: 206 TaskProgress = TaskProgress.NewSubtask('Load Lightwave Object', FORMChunk.tell(), FORMChunk.getsize()) 207 else: TaskProgress = None 208 209 FormType = FORMChunk.read(4) 210 if FormType == 'LWOB': 211 pass # This is what we're looking for 212 elif FormType != 'LWO2': 213 raise NotImplemented, "File contains a Lightwave3D 2 Object (LWO2), which is not (yet) supported." 214 else: raise ValueError, "File does not contain a Lightwave3D Object" 215 206 216 try: 207 217 while 1: … … 217 227 else: 218 228 ex(NextChunk) 229 if TaskProgress: 230 TaskProgress.Progress = FORMChunk.tell() 219 231 except EOFError: 220 232 pass # we're done trunk/RBRapier/RBRapier/Formats/Lightwave/MeshedObject.py
r366 r368 57 57 class PrintOnTaskProgress(TaskProgress.TaskProgress): 58 58 Indent = 0 59 def __init__(self, *args, **kw):60 TaskProgress.TaskProgress.__init__(self, *args, **kw)59 def __init__(self, Name, Start, Stop, Step=20): 60 TaskProgress.TaskProgress.__init__(self, Name, Start, Stop, Step) 61 61 self.OnProgress.Add(self._OnProgress) 62 62 self.OnAddSubtask.Add(self._OnAddSubtask) 63 63 self._OnProgress(self, self.Progress) 64 65 def __del__(self): 66 def _printAllDone(next): 67 print "%s[%3.0f%%] %s" % (" " * next.Indent, 100*next.Percent, next.Name) 68 try: map(_printAllDone, next.Subtasks) 69 except AttributeError: pass 70 print 71 print "All Done!" 72 print "=========" 73 _printAllDone(self) 74 64 75 def _OnProgress(self, task, progress): 65 print '%s[%4.0f] %-20s (%s)' % (' ' * task.Indent, 100*task.Percent, task.Name, id(task)) 76 if not hasattr(task, 'Subtasks'): 77 print '%s[%3.0f%%]%s%-40s (%s)' % (' '*task.Indent, 100*task.Percent, ' '*(5 - task.Indent), task.Name, id(task)) 78 66 79 def _OnAddSubtask(self, parent, child): 67 80 child.Indent = parent.Indent + 1 68 print 69 #if parent is self: 70 # child.OnAddSubtask.Add(self._OnAddSubtask) 81 child.OnAddSubtask.Add(self._OnAddSubtask) 71 82 child.OnProgress.Add(self._OnProgress) 72 83 self._OnProgress(child, child.Progress) … … 81 92 GeoObjectFactory = GeoObject.GeoObject 82 93 IndexedTraversal = ArrayTraversal.IndexedCollectionTraversal 83 TaskProgress = PrintOnTaskProgress('Lightwave Meshed Object', 0., 1., 20)94 TaskProgressFactory = PrintOnTaskProgress 84 95 85 96 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 88 99 89 100 def Build(self, FileInFormat, optimizetraversal=1, optimizemesh=3): 101 if self.TaskProgressFactory: 102 self.TaskProgress = self.TaskProgressFactory('Lightwave Meshed Object', 0., 3.) 103 else: self.TaskProgress = None 90 104 self.Load(FileInFormat) 91 105 self.Process(optimizetraversal, optimizemesh) … … 102 116 resultgroup.AddTraversal(each) 103 117 resultgroup.LoadFinalized() 104 105 118 result.LoadFinalized() 119 del self.TaskProgress 106 120 return result 107 121 … … 168 182 169 183 def Load(self, FileInFormat): 170 obj = Loader.LightwaveLWO Loader()184 obj = Loader.LightwaveLWOBLoader() 171 185 obj.ReadFormat(FileInFormat, TaskProgress=self.TaskProgress) 172 186 … … 176 190 177 191 if self.TaskProgress: 192 SurfaceSubtasks = self.TaskProgress.NewSubtask('Surfaces', 0, len(self.SurfaceGroups)) 193 self.TaskProgress.SurfaceSubtasks = SurfaceSubtasks 178 194 for each in self.SurfaceGroups: 179 each.SurfaceTask = self.TaskProgress.NewSubtask('Surface %s'%each.Name, 0., 1.)195 each.SurfaceTask = SurfaceSubtasks.NewSubtask('Surface %s'%each.Name, 0., 3.) 180 196 else: 181 197 for each in self.SurfaceGroups: … … 221 237 Group.Traversals = {} 222 238 else: 223 if Group.SurfaceTask: 224 Subtask = Group.SurfaceTask#.NewSubtask('Mesh traversal (%s)' % TraverseMethodName, 0, 1.) 239 if Group.SurfaceTask: Subtask = Group.SurfaceTask 225 240 else: Subtask = None 226 241 Group.Traversals = dict(TraversalMaker(mesh, TaskProgress=Subtask)) … … 231 246 232 247 def SimpleTraversals(self): 248 if self.TaskProgress: 249 IndexTraversalSubtask = self.TaskProgress.NewSubtask('Index traversal', 0, len(self.SurfaceGroups)) 250 else: IndexTraversalSubtask = 0 251 233 252 for Group in self.SurfaceGroups: 234 253 if Group.SurfaceTask: … … 257 276 Subtask += 1 258 277 278 IndexTraversalSubtask += 1 279 259 280 def OptimizeTraversals(self, level): 281 if self.TaskProgress: 282 OptimizingSubtask = self.TaskProgress.NewSubtask('Index locality optimized traversal', 0, 2+len(self.SurfaceGroups)) 283 else: OptimizingSubtask = 0 284 260 285 optimizer = LocalityRemapper.LocalityRemapper() 261 286 … … 291 316 Subtask += 1 292 317 293 if self.TaskProgress: 294 OptimizingSubtask = self.TaskProgress.NewSubtask('Index locality optimization', 0, 2*len(self.Vertices.data)) 295 else: OptimizingSubtask = 0 318 OptimizingSubtask += 1 319 296 320 optimizer.RemapIndices(self.Vertices.data) 297 OptimizingSubtask += len(self.Vertices.data)321 OptimizingSubtask += 1 298 322 optimizer.RemapIndices(self.Normals.data) 299 OptimizingSubtask += len(self.Normals.data)323 OptimizingSubtask += 1 300 324 301 325 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
