//------------------------------------------// private bool readHead() { //- los gehts bei position 0 setOffset(0); //- Datei Magic lesen und prüfen m_FileHead.magic = readStr(40); if (m_FileHead.magic.CompareTo("EOS 1993 SLI FILE ") != 0) //- Achtung Leerzeichen! { m_error.addError("file header magic is wrong? soll: >EOS 1993 SLI FILE < ist >" + m_FileHead.magic + "<"); return(false); } m_FileHead.int01 = readIntBE(2);; m_FileHead.int02 = readIntBE(2); m_FileHead.FileDataOffset = readIntBE(4); m_FileHead.int05 = readIntBE(4); m_FileHead.int07 = readIntBE(4); m_FileHead.FileSliceDataOffset = readIntBE(4); m_FileHead.FileIndexPos = readIntBE(4); m_FileHead.String2 = readStr(40); m_FileHead.LayerCount1 = readIntBE(4); m_FileHead.LayerCount2 = readIntBE(4); m_FileHead.int14 = readIntBE(4); //- 8 DWords überspringen setOffset(m_offset + 4 * 8); m_FileHead.scaleFactor = readFloatBE(4); /* * Debug.Print "------------------------------" * Debug.Print "Header:" * Debug.Print "magic: " & FileHead.magic * Debug.Print "int 1: " & FileHead.int01 * Debug.Print "int 2: " & FileHead.int02 * Debug.Print "DataOffset: " & FileHead.FileDataOffset * Debug.Print "int 5: " & FileHead.int05 * Debug.Print "int 7: " & FileHead.int07 * Debug.Print "FileSliceDataOffset: " & FileHead.FileSliceDataOffset * Debug.Print "FileIndexPos: " & FileHead.FileIndexPos * Debug.Print "string2: " & FileHead.String2 * Debug.Print "LayerCount1: " & FileHead.LayerCount1 * Debug.Print "LayerCount2: " & FileHead.LayerCount2 * Debug.Print "int14: " & FileHead.int14 * Debug.Print "------------------------------" */ return(readIndex(m_FileHead.FileIndexPos, m_FileHead.FileDataOffset, m_FileHead.LayerCount1)); }
//------------------------------------------// private void addSlice(ty_part partInfo) { if (partInfo.filename != "") { string tmp = ""; try { tmp = System.IO.Path.GetFileName(partInfo.filename); } catch (System.Exception e) { m_error.addError("addSlice" + e.Message); return; } string filename = ""; if (System.IO.File.Exists(m_filePath + partInfo.filename)) { filename = m_filePath + partInfo.filename; } else if (System.IO.File.Exists(m_filePath + tmp)) { filename = m_filePath + tmp; } else if (System.IO.File.Exists(partInfo.filename)) { filename = partInfo.filename; } if (filename != "") { //- open slice file absSliceDataSource sliceClass = clHelper.OpenSliceFile(filename); partInfo.sliceClass = sliceClass; //int test = ((clSliFileReader)sliceClass).getLayerUpPosition(1); if (m_max_Layers < sliceClass.getLayerCount()) { m_max_Layers = sliceClass.getLayerCount(); m_partZMax = partInfo; // Speichern des höchsten Bauteils für } partInfo.layerthikness = sliceClass.getLayerThickness(); //- diese klasse hat als Layer-Stärke die minimale Slise-Stärke aller Teile m_layerthickness = Math.Min(m_layerthickness, partInfo.layerthikness); m_List.Add(partInfo); } else { m_error.addError("Can't find file: [" + partInfo.filename + "]"); } } }
//------------------------------------------// public clSliceData getSliceData(int ObjectIndex, int LayerIndex, float jobLayerThickness) { clSliceData retSlice = new clSliceData(); if (ObjectIndex != 0) { return(retSlice); } if ((LayerIndex < 0) || (LayerIndex >= m_IndexTable_count)) { return(retSlice); } setOffset(m_IndexTable[LayerIndex].FileOffset); float scale = m_FileHead.unit; //- Faktor in [mm] for (int i = 0; i < m_IndexTable[LayerIndex].polyCount; i++) { int cmd = readIntBE(2); int pointCount = 0; float [,] pointBuffer; switch (cmd) { case 129: //- Start PolyLine short readIntBE(2); //- id readIntBE(2); //- dir pointCount = readIntBE(2); //- number of points pointBuffer = new float[pointCount, 2]; for (int p = 0; p < pointCount; p++) { pointBuffer[p, 0] = scale * readIntBE(2); pointBuffer[p, 1] = scale * readIntBE(2); } retSlice.addPolygon(pointBuffer, pointCount); break; case 130: //- Start PolyLine long readIntBE(4); //- id readIntBE(4); //- dir pointCount = readIntBE(4); //- number of points pointBuffer = new float[pointCount, 2]; for (int p = 0; p < pointCount; p++) { pointBuffer[p, 0] = readRealBE(4) * scale; pointBuffer[p, 1] = readRealBE(4) * scale; } retSlice.addPolygon(pointBuffer, pointCount); break; default: m_error.addError("indexFileBinary() : data out of sync. Unknown command: " + cmd + " at pos: " + m_offset); break; } } return(retSlice); }