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; } } } }
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++; } } } }