/// <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);
            }
        }
Example #4
0
 /// <summary>
 /// Write a solid
 /// </summary>
 public void WriteSolid(Solid solid)
 {
     if (solid == null) throw new ArgumentNullException("solid");
     InternalWriteSolid(solid);
 }
Example #5
0
 /// <summary>
 /// Internal write a solid
 /// </summary>
 protected abstract void InternalWriteSolid(Solid solid);