/// <summary> /// Read the header /// </summary> protected virtual Solid ReadHeader(BinaryReader reader, out byte[] header, out UInt32 count) { Solid result = new Solid(); result.Format = SolidFormat.Binary; // Read the header header = reader.ReadBytes(80); // Count the facets count = reader.ReadUInt32(); return result; }
/// <summary> /// Internal write a solid /// </summary> protected override void InternalWriteSolid(Solid solid) { using(var writer=new StreamWriter(BaseStream, Consts.FileEncoding)) { // Write header writer.WriteLine("solid {0}", solid.Name); // Foreach facet foreach (var facet in solid.Facets) WriteFacet(facet, writer); // Write footer writer.WriteLine("endsolid {0}", solid.Name); } }
/// <summary> /// Internal write a solid /// </summary> protected override void InternalWriteSolid(Solid solid) { using(var writer=new BinaryWriter(BaseStream)) { // Writer header var headerBytes = new byte[80]; var hd = BuildHeader(); Buffer.BlockCopy(hd, 0, headerBytes, 0, Math.Min(80, hd.Length)); writer.Write(headerBytes); // Facets count writer.Write((UInt32)solid.Facets.Count); // Foreach facet foreach (var facet in solid.Facets) WriteFacet(facet, writer); } }
/// <summary> /// Write a solid /// </summary> public void WriteSolid(Solid solid) { if (solid == null) throw new ArgumentNullException("solid"); InternalWriteSolid(solid); }
/// <summary> /// Internal write a solid /// </summary> protected abstract void InternalWriteSolid(Solid solid);