Пример #1
0
        //------------------------------------------//
        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));
        }
Пример #2
0
        //------------------------------------------//
        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 + "]");
                }
            }
        }
Пример #3
0
        //------------------------------------------//
        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);
        }