Search code examples
eyeshot

How can I get curve entities to be visible on both sides of a surface entity?


I'm fairly new to eyeshot so if I'm missing something obvious please say.

I have a blended surface that I intersect with a plane to try and get "grid" lines on my surface. The trouble is the curves only show on the inside of the surface, where I want them to be visible on both sides.

Is there a tweak to my approach that would work, or is there fundamentally a better approach to achieve what I want please?

Generalised code example below.

  // Define lists to hold curves and points  
  List<devDept.Eyeshot.Entities.ICurve> curveList = new List<devDept.Eyeshot.Entities.ICurve>();
  List<devDept.Geometry.Point3D> points = new List<devDept.Geometry.Point3D>();

  // Add points to a new curve
  points.Add(new devDept.Geometry.Point3D(0, 0, -1));
  points.Add(new devDept.Geometry.Point3D(0, 1, 1));
  curveList.Add(devDept.Eyeshot.Entities.Curve.GlobalInterpolation(points, 3));
  
  // Add points to a second new curve
  points.Clear();
  points.Add(new devDept.Geometry.Point3D(1, 0, -1));
  points.Add(new devDept.Geometry.Point3D(1, 1, 1));
  curveList.Add(devDept.Eyeshot.Entities.Curve.GlobalInterpolation(points, 3));
  
  // Create the surface
  devDept.Eyeshot.Entities.Surface loft1 = devDept.Eyeshot.Entities.Surface.Loft(curveList, 3)[0];

  // Generate a list of entities to render
  devDept.Eyeshot.EntityList entities = new devDept.Eyeshot.EntityList();
  entities.Add(loft1, Color.PeachPuff);

  // Intersect the surface with a horizontal plane at z == 0
  List<ICurve> sectionLine1 = loft1.IntersectWith(new Plane(new devDept.Geometry.Point3D(0, 0, 0), new Vector3D(0, 0, 1)), 1e-1).ToList();
  entities.Add((Entity)sectionLine1[index], Color.Black);

  // Show in the Eyeshot model
  modelVisualiser.Clear();
  modelVisualiser.Entities.AddRange(preview);
  modelVisualiser.Invalidate();

Solution

  • I would try the approach described in this article: https://devdept.zendesk.com/hc/en-us/articles/360015256013-How-do-I-draw-a-Line-entity-that-would-be-shown-above-all-other-entities-