Ejemplo n.º 1
0
        /// <summary>
        /// Writes an unstructured mesh to an off file with a given streamwriter.
        /// </summary>
        /// <param name="type">The unstructured mesh that needs to be written to an off file.</param>
        /// <param name="writer">The streamwriter that needs to be used.</param>
        public void WriteFile(IMesh type, StreamWriter writer)
        {
            if (type == null)
            {
                throw new ArgumentNullException(nameof(type));
            }
            if (writer == null)
            {
                throw new ArgumentNullException(nameof(writer));
            }

            Thread.CurrentThread.CurrentCulture = Settings.Culture;

            writer.WriteLine("OFF");
            writer.WriteLine($"{type.VertexCount} {type.FaceCount} 0");
            foreach (Vector3 vertice in type.Vertices)
            {
                writer.WriteLine($"{vertice.X} {vertice.Y} {vertice.Z}");
            }

            foreach (Vector3 face in type.Faces)
            {
                writer.WriteLine($"3 {face.X} {face.Y} {face.Z}");
            }
            IOConventions.WriteIfNormalised(type.IsNormalised, writer);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Writes a geometrymesh to a file, given a location.
        /// </summary>
        /// <param name="type">The geometry mesh.</param>
        /// <param name="location">The location of the file.</param>
        public void WriteFile(GeometryMesh type, string location)
        {
            if (type == null)
            {
                throw new ArgumentNullException(nameof(type));
            }
            if (string.IsNullOrEmpty(location))
            {
                throw new ArgumentNullException(nameof(location));
            }

            IOWriteResult result = StandardMeshWriter.WriteMesh(
                location,
                type.Base,
                Options);

            if (result.code != IOCode.Ok)
            {
                throw new G3WriterException(result);
            }

            using (StreamWriter writer = File.AppendText(location)) {
                IOConventions.WriteIfNormalised(type.IsNormalised, writer);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Writes a geometrymesh to a file, given a streamwriter.
        /// </summary>
        /// <param name="type">The geometry mesh.</param>
        /// <param name="location">The streamwriter.</param>
        public void WriteFile(GeometryMesh type, StreamWriter writer)
        {
            if (type == null)
            {
                throw new ArgumentNullException(nameof(type));
            }
            if (writer == null)
            {
                throw new ArgumentNullException(nameof(writer));
            }

            g3.OFFWriter     offWriter          = new g3.OFFWriter();
            List <WriteMesh> serialisableMeshes = new List <WriteMesh>()
            {
                new WriteMesh(type.Base)
            };

            IOWriteResult result = offWriter.Write(writer,
                                                   serialisableMeshes,
                                                   Options);

            if (result.code != IOCode.Ok)
            {
                throw new G3WriterException(result);
            }

            IOConventions.WriteIfNormalised(type.IsNormalised, writer);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Creates a geometry mesh, given a streamreader.
        /// </summary>
        /// <param name="reader">The streamreader.</param>
        /// <returns>The streamreader.</returns>
        public GeometryMesh ConvertFile(StreamReader reader)
        {
            if (reader == null)
            {
                throw new ArgumentNullException(nameof(reader));
            }

            Thread.CurrentThread.CurrentCulture = Settings.Culture;
            DMesh3 mesh = StandardMeshReader.ReadMesh(reader.BaseStream, "off");

            return(new GeometryMesh(mesh, IOConventions.CheckIfNormalised(reader)));
        }