code: def max_effect_length(self):
          
          # Method: using each solid's bounding box:
          #   - get vector from start to bounding box center
          #   - get vector from bounding box center to any corner
          #   - add the length of both vectors
          #   - return the maximum of these from all solids
          def max_length_iter():
              for part in self.parts:
                  if part.local_obj.findSolid():
                      bb = part.local_obj.findSolid().BoundingBox()
                      yield abs(bb.center - self.location.origin) + (bb.DiagonalLength / 2)
          try:
              return max(max_length_iter())
          except ValueError as e:
              # if iter returns before yielding anything
              return 0
docs: :return: The longest possible effect vector length.
          :rtype: float
  
          In other words, the *radius* of a sphere:
  
              - who's center is at ``start``.
              - all ``parts`` are contained within the sphere.