Example #1
0
 public void Read(string fileName)
 {
     using (BinaryReader binaryReader = new BinaryReader(File.Open(fileName, FileMode.Open)))
     {
         BinarySTL.Class0 @class = new BinarySTL.Class0(binaryReader.ReadChars(80));
         if (@class.string_0.ToUpper().Contains("COLOR="))
         {
             this.ContainsColorDefinitions = true;
         }
         binaryReader.ReadUInt32();
         bool flag = true;
         while (flag)
         {
             try
             {
                 float  num   = binaryReader.ReadSingle();
                 float  num2  = binaryReader.ReadSingle();
                 float  num3  = binaryReader.ReadSingle();
                 float  num4  = binaryReader.ReadSingle();
                 float  num5  = binaryReader.ReadSingle();
                 float  num6  = binaryReader.ReadSingle();
                 float  num7  = binaryReader.ReadSingle();
                 float  num8  = binaryReader.ReadSingle();
                 float  num9  = binaryReader.ReadSingle();
                 float  num10 = binaryReader.ReadSingle();
                 float  num11 = binaryReader.ReadSingle();
                 float  num12 = binaryReader.ReadSingle();
                 ushort num13 = binaryReader.ReadUInt16();
                 if (num13 > 0)
                 {
                     this.ContainsColorDefinitions = true;
                 }
                 try
                 {
                     Vector3d vector3d_ = new Vector3d((double)num, (double)num2, (double)num3);
                     Triangle triangle  = new Triangle(new Point((double)num4, (double)num5, (double)num6), new Point((double)num7, (double)num8, (double)num9), new Point((double)num10, (double)num11, (double)num12), false);
                     if (this.method_0(triangle))
                     {
                         this.HasNegativeCoordinates = true;
                     }
                     if (this.method_1(triangle, vector3d_))
                     {
                         this.HasInconsitentNormals = true;
                     }
                     this.Triangles.Add(triangle);
                     this.Colors.Add(new BinarySTL.STLColor(num13, this.ColorDefinition));
                     this.NumberOfTrianglesRead++;
                 }
                 catch
                 {
                     this.NumberOfDegenerateTriangles++;
                 }
             }
             catch
             {
                 flag = false;
             }
         }
     }
 }
Example #2
0
        public void Write(string fileName)
        {
            string string_ = "Binary STL generated by TCPlugin for AutoCAD www.computational-cad.com".PadRight(80);

            BinarySTL.Class0 @class = new BinarySTL.Class0(string_);
            uint             count  = (uint)this.Triangles.Count;

            using (BinaryWriter binaryWriter = new BinaryWriter(File.Open(fileName, FileMode.Create)))
            {
                binaryWriter.Write(@class.char_0);
                binaryWriter.Write(count);
                for (int i = 0; i < this.Triangles.Count; i++)
                {
                    try
                    {
                        Triangle triangle = this.Triangles[i];
                        Vector3d vector3d = triangle.NormalVector.Normalize();
                        binaryWriter.Write((float)vector3d.X);
                        binaryWriter.Write((float)vector3d.Y);
                        binaryWriter.Write((float)vector3d.Z);
                        binaryWriter.Write((float)triangle.Vertex1.X);
                        binaryWriter.Write((float)triangle.Vertex1.Y);
                        binaryWriter.Write((float)triangle.Vertex1.Z);
                        binaryWriter.Write((float)triangle.Vertex2.X);
                        binaryWriter.Write((float)triangle.Vertex2.Y);
                        binaryWriter.Write((float)triangle.Vertex2.Z);
                        binaryWriter.Write((float)triangle.Vertex3.X);
                        binaryWriter.Write((float)triangle.Vertex3.Y);
                        binaryWriter.Write((float)triangle.Vertex3.Z);
                        byte[] array = this.Colors[i].ToBytes();
                        binaryWriter.Write(array[0]);
                        binaryWriter.Write(array[1]);
                        this.NumberOfTrianglesWritten++;
                    }
                    catch
                    {
                        this.NumberOfDegenerateTriangles++;
                    }
                }
            }
        }