def traverseAndRefactor( handler, root, validroot, transform ): valid = isValidVolume(root) if validroot == 0: valid = True #elif valid: # valid = root.solid.fitsInside(validroot.solid) # if not valid: handler.droppednofit += 1 if valid: transform = AffineTransform() validroot = root daugh = root.daughters root.daughters = [] for d in daugh: if d.logvol == 0: d.logvol = handler.logvols[ d.logvolref ] oldtform = AffineTransform.Create(d.rotation, d.position) newtform = transform.mult( oldtform ) if traverseAndRefactor( handler, d.logvol, validroot, newtform ): d.rotation = newtform.rot d.position = newtform.trans validroot.daughters.append( d ) handler.totalsolids += 1 else: handler.droppedsolids += 1 return valid
def getTransform( self ): return AffineTransform( self.rotation, self.position )