/// <summary>Reads the STL document contained within the <paramref name="stream"/> into a new <see cref="STLDocument"/>.</summary> /// <remarks>This method will expects a binary-based <see cref="STLDocument"/> to be contained within the <paramref name="reader"/>.</remarks> /// <param name="reader">The reader which contains the binary-based STL data.</param> /// <returns>An <see cref="STLDocument"/> representing the data contained in the stream or null if the stream is empty.</returns> public static STLDocument Read(BinaryReader reader) { if (reader == null) { return(null); } byte[] buffer = new byte[80]; STLDocument stl = new STLDocument(); Facet currentFacet = null; //Read (and ignore) the header and number of triangles. buffer = reader.ReadBytes(80); reader.ReadBytes(4); //Read each facet until the end of the stream. Stop when the end of the stream is reached. while ((reader.BaseStream.Position != reader.BaseStream.Length) && (currentFacet = Facet.Read(reader)) != null) { stl.Facets.Add(currentFacet); } return(stl); }