using (DBObject obj = validatedGroundElevations[iofTextDistanceBetweenElevations].Open(OpenMode.ForRead))
{
Extents3d extents2 = obj.Bounds.Value;
Point3d midPointGroundElevation = extents2.MaxPoint + extents2.MaxPoint.GetVectorTo(extents2.MinPoint).DivideBy(2);
Point3d midPointBase = midPoint;
using (Line line = new Line(midPoint, midPointGroundElevation)) {
Point3dCollection intersects = new Point3dCollection();
(obj as Entity).BoundingBoxIntersectWith(line, Intersect.OnBothOperands, intersects, IntPtr.Zero, IntPtr.Zero);
if (intersects.Count > 0)
midPointGroundElevation = intersects[0];
intersects.Clear();
(drawable as Entity).BoundingBoxIntersectWith(line, Intersect.OnBothOperands, intersects, IntPtr.Zero, IntPtr.Zero);
if (intersects.Count > 0)
midPointBase = intersects[0];
Vector3d v = (midPointBase - midPointGroundElevation).MultiplyBy(0.1);
midPointBase -= v;
midPointGroundElevation += v;
}
wd.SubEntityTraits.Color = 253;
wd.Geometry.WorldLine(midPointBase, midPointGroundElevation);
}