message: Public boundingRange on ClipVectors
diff: @@ -16,6 +16,7 @@ import { LineSegment3d } from "../curve/LineSegment3d";
  /** Class holding an array structure of shapes defined by clip plane sets */
  export class ClipVector {
  private _clips: ClipShape[];
  + public boundingRange: Range3d = Range3d.createNull();
  /** Returns a reference to the array of ClipShapes. */
  public get clips() { return this._clips; }
  @@ -60,6 +61,7 @@ export class ClipVector {
  for (const clip of donor._clips) {
  retVal._clips.push(clip.clone());
  }
  + retVal.boundingRange.setFrom(donor.boundingRange);
  return retVal;
  }
  @@ -118,7 +120,7 @@ export class ClipVector {
  this._clips.push(clip);
  }
  - /** Returns the three-dimensional range that this ClipVector spans. */
  + /** Returns the three-dimensional range that this ClipVector spans, which may be null. */
  public getRange(transform?: Transform, result?: Range3d): Range3d | undefined {
  const range = Range3d.createNull(result);
  @@ -131,24 +133,32 @@ export class ClipVector {
  range.intersect(thisRange, range);
  }
  }
  - if (range.isNull())
  - return undefined;
  + if (!this.boundingRange.isNull())
  + range.intersect(this.boundingRange, range);
  +
  return range;
  }
  /** Returns true if the given point lies inside all of this ClipVector's ClipShapes (by rule of intersection). */
  public pointInside(point: Point3d, onTolerance: number = Geometry.smallMetricDistanceSquared): boolean {
  + if (!this.boundingRange.isNull() && !this.boundingRange.containsPoint(point))
  + return false;
  +
  for (const clip of this._clips)
  if (!clip.pointInside(point, onTolerance))
  return false;
  return true;
  }
  - /** Transforms this ClipVector to a new coordinate-system. */
  + /** Transforms this ClipVector to a new coordinate-system. Returns true if successful. */
  public transformInPlace(transform: Transform): boolean {
  for (const clip of this._clips)
  if (clip.transformInPlace(transform) === false)
  return false;
  +
  + if (!this.boundingRange.isNull())
  + transform.multiplyRange(this.boundingRange, this.boundingRange);
  +
  return true;
  }
  