Changeset 368

Show
Ignore:
Timestamp:
11/11/02 18:57:53 (6 years ago)
Author:
sholloway
Message:

*** empty log message ***

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/RBFoundation/RBFoundation/TaskProgress.py

    r367 r368  
    3535    for subtask in Task.Subtasks: 
    3636        result += subtask.Percentage 
    37     result /= len(Task.Subtasks) 
    38     Task.Percentage = result 
     37    Task.Progress = result 
    3938 
    4039#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    124123        return max(0., min(1., result)) 
    125124    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) 
    128126    Percentage = Percent = property(_getPercent, _setPercent, _delProgress, doc="The task's percent [0.,1.] complete.  Linear mapping of Progress to the progress range.") 
    129127 
  • trunk/RBRapier/RBRapier/Formats/Lightwave/Loader.py

    r366 r368  
    174174#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    175175 
    176 class LightwaveLWOLoader(object): 
     176class LightwaveLWOBLoader(object): 
    177177    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    178178    #~ Constants / Variables / Etc.  
     
    202202        if FORMChunk.getname() != 'FORM': 
    203203            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 
    206216        try: 
    207217            while 1: 
     
    217227                else: 
    218228                    ex(NextChunk) 
     229                if TaskProgress:  
     230                    TaskProgress.Progress = FORMChunk.tell() 
    219231        except EOFError: 
    220232            pass # we're done 
  • trunk/RBRapier/RBRapier/Formats/Lightwave/MeshedObject.py

    r366 r368  
    5757class PrintOnTaskProgress(TaskProgress.TaskProgress): 
    5858    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
    6161        self.OnProgress.Add(self._OnProgress) 
    6262        self.OnAddSubtask.Add(self._OnAddSubtask) 
    6363        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 
    6475    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 
    6679    def _OnAddSubtask(self, parent, child): 
    6780        child.Indent = parent.Indent + 1 
    68         print 
    69         #if parent is self: 
    70         #    child.OnAddSubtask.Add(self._OnAddSubtask) 
     81        child.OnAddSubtask.Add(self._OnAddSubtask) 
    7182        child.OnProgress.Add(self._OnProgress) 
    7283        self._OnProgress(child, child.Progress) 
     
    8192    GeoObjectFactory = GeoObject.GeoObject 
    8293    IndexedTraversal = ArrayTraversal.IndexedCollectionTraversal 
    83     TaskProgress = PrintOnTaskProgress('Lightwave Meshed Object', 0., 1., 20) 
     94    TaskProgressFactory = PrintOnTaskProgress 
    8495 
    8596    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    8899 
    89100    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 
    90104        self.Load(FileInFormat) 
    91105        self.Process(optimizetraversal, optimizemesh) 
     
    102116                    resultgroup.AddTraversal(each) 
    103117                resultgroup.LoadFinalized() 
    104  
    105118        result.LoadFinalized() 
     119        del self.TaskProgress 
    106120        return result 
    107121 
     
    168182 
    169183    def Load(self, FileInFormat): 
    170         obj = Loader.LightwaveLWOLoader() 
     184        obj = Loader.LightwaveLWOBLoader() 
    171185        obj.ReadFormat(FileInFormat, TaskProgress=self.TaskProgress) 
    172186 
     
    176190 
    177191        if self.TaskProgress: 
     192            SurfaceSubtasks = self.TaskProgress.NewSubtask('Surfaces', 0, len(self.SurfaceGroups)) 
     193            self.TaskProgress.SurfaceSubtasks = SurfaceSubtasks  
    178194            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.) 
    180196        else: 
    181197            for each in self.SurfaceGroups: 
     
    221237                Group.Traversals = {} 
    222238            else:  
    223                 if Group.SurfaceTask: 
    224                     Subtask = Group.SurfaceTask#.NewSubtask('Mesh traversal (%s)' % TraverseMethodName, 0, 1.) 
     239                if Group.SurfaceTask: Subtask = Group.SurfaceTask 
    225240                else: Subtask = None 
    226241                Group.Traversals = dict(TraversalMaker(mesh, TaskProgress=Subtask)) 
     
    231246 
    232247    def SimpleTraversals(self): 
     248        if self.TaskProgress: 
     249            IndexTraversalSubtask = self.TaskProgress.NewSubtask('Index traversal', 0, len(self.SurfaceGroups)) 
     250        else: IndexTraversalSubtask = 0 
     251 
    233252        for Group in self.SurfaceGroups: 
    234253            if Group.SurfaceTask: 
     
    257276            Subtask += 1 
    258277 
     278            IndexTraversalSubtask += 1 
     279 
    259280    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 
    260285        optimizer = LocalityRemapper.LocalityRemapper() 
    261286 
     
    291316            Subtask += 1 
    292317 
    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 
    296320        optimizer.RemapIndices(self.Vertices.data) 
    297         OptimizingSubtask += len(self.Vertices.data) 
     321        OptimizingSubtask += 1 
    298322        optimizer.RemapIndices(self.Normals.data) 
    299         OptimizingSubtask += len(self.Normals.data) 
     323        OptimizingSubtask += 1 
    300324 
    301325#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~