Adding InstanceReferences to a File3dm object

Hi @rgr,

Try this (in Rhino 6):

protected override Result RunCommand(RhinoDoc doc, RunMode mode)
{
  var path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
  var filename = Path.Combine(path, "Test.3dm");

  Result rc;
  using (var file = new File3dm())
  {
    var layer = new Layer { Name = "Default", Color = Color.Black };
    file.AllLayers.Add(layer);

    var layer_index = file.AllLayers.Count - 1;
    var attribute = new ObjectAttributes { LayerIndex = layer_index };

    var geometry = new List<GeometryBase>();
    var attributes = new List<ObjectAttributes>();
    for (var x = 0; x < 10; x++)
    {
      var line_curve = new LineCurve(new Point3d(x, 0, 0), new Point3d(x, 1, 0));
      geometry.Add(line_curve);
      attributes.Add(attribute.Duplicate());
    }

    var idef_index = file.AllInstanceDefinitions.Add("Test", "Test Definition", Point3d.Origin, geometry, attributes);
    file.Objects.AddInstanceObject(idef_index, Transform.Identity, attribute);

    rc = file.Write(filename, 6) ? Result.Success : Result.Failure;
  }

  return rc;
}

– Dale