コード例 #1
0
        private bool InternReadBlockEntities(ref int rlngIdx, ref AcadBlock robjAcadBlock, ref string nrstrErrMsg)
        {
            nrstrErrMsg = null;
            bool             dblnError            = default(bool);
            bool             dblnStop             = default(bool);
            AcadPolyfaceMesh dobjAcadPolyfaceMesh = default(AcadPolyfaceMesh);
            AcadPolygonMesh  dobjAcadPolygonMesh  = default(AcadPolygonMesh);
            Acad3DPolyline   dobjAcad3DPolyline   = default(Acad3DPolyline);
            AcadPolyline     dobjAcadPolyline     = default(AcadPolyline);

            while (rlngIdx <= mlngSecEnd && !dblnError && !dblnStop)
            {
                int    dlngCode2  = Conversions.ToInteger(mobjDictReadCodes[rlngIdx]);
                object dvarValue2 = RuntimeHelpers.GetObjectValue(mobjDictReadValues[rlngIdx]);
                if (dlngCode2 == 0 && Operators.ConditionalCompareObjectEqual(dvarValue2, "ENDBLK", TextCompare: false))
                {
                    dblnStop = true;
                }
                InternIncreaseIndex(ref rlngIdx, 1);
                if (dblnStop)
                {
                    continue;
                }
                object left = dvarValue2;
                if (Operators.ConditionalCompareObjectEqual(left, "ARC", TextCompare: false))
                {
                    dblnError = !hwpDxf_ReadEnt.BkDXFReadEnt_AcadArc(mobjAcadDatabase, ref rlngIdx, ref robjAcadBlock, mobjDictReadCodes, mobjDictReadValues, ref nrstrErrMsg);
                    InternCheckIndex(rlngIdx);
                }
                else if (Operators.ConditionalCompareObjectEqual(left, "CIRCLE", TextCompare: false))
                {
                    dblnError = !hwpDxf_ReadEnt.BkDXFReadEnt_AcadCircle(mobjAcadDatabase, ref rlngIdx, ref robjAcadBlock, mobjDictReadCodes, mobjDictReadValues, ref nrstrErrMsg);
                    InternCheckIndex(rlngIdx);
                }
                else if (Operators.ConditionalCompareObjectEqual(left, "LINE", TextCompare: false))
                {
                    dblnError = !hwpDxf_ReadEnt.BkDXFReadEnt_AcadLine(mobjAcadDatabase, ref rlngIdx, ref robjAcadBlock, mobjDictReadCodes, mobjDictReadValues, ref nrstrErrMsg);
                    InternCheckIndex(rlngIdx);
                }
                else if (Operators.ConditionalCompareObjectEqual(left, "POINT", TextCompare: false))
                {
                    dblnError = !hwpDxf_ReadEnt.BkDXFReadEnt_AcadPoint(mobjAcadDatabase, ref rlngIdx, ref robjAcadBlock, mobjDictReadCodes, mobjDictReadValues, ref nrstrErrMsg);
                    InternCheckIndex(rlngIdx);
                }
                else if (Operators.ConditionalCompareObjectEqual(left, "XLINE", TextCompare: false))
                {
                    dblnError = !hwpDxf_ReadEnt.BkDXFReadEnt_AcadXline(mobjAcadDatabase, ref rlngIdx, ref robjAcadBlock, mobjDictReadCodes, mobjDictReadValues, ref nrstrErrMsg);
                    InternCheckIndex(rlngIdx);
                }
                else if (Operators.ConditionalCompareObjectEqual(left, "RAY", TextCompare: false))
                {
                    dblnError = !hwpDxf_ReadEnt.BkDXFReadEnt_AcadRay(mobjAcadDatabase, ref rlngIdx, ref robjAcadBlock, mobjDictReadCodes, mobjDictReadValues, ref nrstrErrMsg);
                    InternCheckIndex(rlngIdx);
                }
                else if (Operators.ConditionalCompareObjectEqual(left, "LWPOLYLINE", TextCompare: false))
                {
                    dblnError = !hwpDxf_ReadEnt.BkDXFReadEnt_AcadLWPolyline(mobjAcadDatabase, ref rlngIdx, ref robjAcadBlock, mobjDictReadCodes, mobjDictReadValues, ref nrstrErrMsg);
                    InternCheckIndex(rlngIdx);
                }
                else if (Operators.ConditionalCompareObjectEqual(left, "POLYLINE", TextCompare: false))
                {
                    int dlngAcadPolylineIdx = rlngIdx;
                    dblnError = !hwpDxf_ReadEnt.BkDXFReadEnt_AcadPolyline(ref dobjAcadPolyline, ref dobjAcad3DPolyline, ref dobjAcadPolygonMesh, ref dobjAcadPolyfaceMesh, mobjAcadDatabase, ref rlngIdx, ref robjAcadBlock, mobjDictReadCodes, mobjDictReadValues, ref nrstrErrMsg);
                    InternCheckIndex(rlngIdx);
                    if (dblnError)
                    {
                        continue;
                    }
                    bool dblnAcadPolyline = true;
                    while (rlngIdx <= mlngSecEnd && !dblnError && dblnAcadPolyline)
                    {
                        dlngCode2  = Conversions.ToInteger(mobjDictReadCodes[rlngIdx]);
                        dvarValue2 = RuntimeHelpers.GetObjectValue(mobjDictReadValues[rlngIdx]);
                        if (dlngCode2 != 0)
                        {
                            nrstrErrMsg = "Fehlender Objektnamencode in Zeile " + Conversions.ToString(checked (rlngIdx * 2 + 1)) + ".";
                            dblnError   = true;
                            continue;
                        }
                        InternIncreaseIndex(ref rlngIdx, 1);
                        object left2 = dvarValue2;
                        if (Operators.ConditionalCompareObjectEqual(left2, "VERTEX", TextCompare: false))
                        {
                            dblnError = !hwpDxf_ReadEnt.BkDXFReadEnt_AcadVertex(mobjAcadDatabase, ref rlngIdx, ref dobjAcadPolyline, ref dobjAcad3DPolyline, ref dobjAcadPolygonMesh, ref dobjAcadPolyfaceMesh, mobjDictReadCodes, mobjDictReadValues, ref nrstrErrMsg);
                            InternCheckIndex(rlngIdx);
                        }
                        else if (Operators.ConditionalCompareObjectEqual(left2, "SEQEND", TextCompare: false))
                        {
                            AcadDatabase       vobjAcadDatabase       = mobjAcadDatabase;
                            AcadBlockReference robjAcadBlockReference = null;
                            AcadMInsertBlock   robjAcadMInsertBlock   = null;
                            dblnError = !hwpDxf_ReadEnt.BkDXFReadEnt_AcadSequenceEnd(vobjAcadDatabase, ref rlngIdx, ref robjAcadBlockReference, ref robjAcadMInsertBlock, ref dobjAcadPolyline, ref dobjAcad3DPolyline, ref dobjAcadPolygonMesh, ref dobjAcadPolyfaceMesh, mobjDictReadCodes, mobjDictReadValues, ref nrstrErrMsg);
                            InternCheckIndex(rlngIdx);
                            dblnAcadPolyline = false;
                            dobjAcadPolyline?.FriendCalcSize();
                            dobjAcad3DPolyline?.FriendCalcSize();
                            dobjAcadPolyline     = null;
                            dobjAcad3DPolyline   = null;
                            dobjAcadPolygonMesh  = null;
                            dobjAcadPolyfaceMesh = null;
                        }
                        else
                        {
                            nrstrErrMsg = "Polylinie ohne Sequenzende ab Zeile " + Conversions.ToString(dlngAcadPolylineIdx) + ".";
                            dblnError   = true;
                        }
                    }
                }
                else if (Operators.ConditionalCompareObjectEqual(left, "MTEXT", TextCompare: false))
                {
                    dblnError = !hwpDxf_ReadEnt.BkDXFReadEnt_AcadMText(mobjAcadDatabase, ref rlngIdx, ref robjAcadBlock, mobjDictReadCodes, mobjDictReadValues, ref nrstrErrMsg);
                    InternCheckIndex(rlngIdx);
                }
                else if (Operators.ConditionalCompareObjectEqual(left, "TEXT", TextCompare: false))
                {
                    dblnError = !hwpDxf_ReadEnt.BkDXFReadEnt_AcadText(mobjAcadDatabase, ref rlngIdx, ref robjAcadBlock, mobjDictReadCodes, mobjDictReadValues, ref nrstrErrMsg);
                    InternCheckIndex(rlngIdx);
                }
                else if (Operators.ConditionalCompareObjectEqual(left, "ATTDEF", TextCompare: false))
                {
                    dblnError = !hwpDxf_ReadEnt.BkDXFReadEnt_AcadAttributeDefinition(mobjAcadDatabase, ref rlngIdx, ref robjAcadBlock, mobjDictReadCodes, mobjDictReadValues, ref nrstrErrMsg);
                    InternCheckIndex(rlngIdx);
                }
                else if (Operators.ConditionalCompareObjectEqual(left, "INSERT", TextCompare: false))
                {
                    dblnError = !hwpDxf_ReadEnt.BkDXFReadEnt_AcadBlockReference(mobjAcadDatabase, ref rlngIdx, ref robjAcadBlock, mobjDictReadCodes, mobjDictReadValues, ref nrstrErrMsg);
                    InternCheckIndex(rlngIdx);
                }
                else if (Operators.ConditionalCompareObjectEqual(left, "SHAPE", TextCompare: false))
                {
                    dblnError = !hwpDxf_ReadEnt.BkDXFReadEnt_AcadShape(mobjAcadDatabase, ref rlngIdx, ref robjAcadBlock, mobjDictReadCodes, mobjDictReadValues, ref nrstrErrMsg);
                    InternCheckIndex(rlngIdx);
                }
                else if (Operators.ConditionalCompareObjectEqual(left, "ELLIPSE", TextCompare: false))
                {
                    dblnError = !hwpDxf_ReadEnt.BkDXFReadEnt_AcadEllipse(mobjAcadDatabase, ref rlngIdx, ref robjAcadBlock, mobjDictReadCodes, mobjDictReadValues, ref nrstrErrMsg);
                    InternCheckIndex(rlngIdx);
                }
                else if (Operators.ConditionalCompareObjectEqual(left, "HATCH", TextCompare: false))
                {
                    dblnError = !hwpDxf_ReadEnt.BkDXFReadEnt_AcadHatch(mobjAcadDatabase, ref rlngIdx, ref robjAcadBlock, mobjDictReadCodes, mobjDictReadValues, ref nrstrErrMsg);
                    InternCheckIndex(rlngIdx);
                }
                else if (Operators.ConditionalCompareObjectEqual(left, "SPLINE", TextCompare: false))
                {
                    dblnError = !hwpDxf_ReadEnt.BkDXFReadEnt_AcadSpline(mobjAcadDatabase, ref rlngIdx, ref robjAcadBlock, mobjDictReadCodes, mobjDictReadValues, ref nrstrErrMsg);
                    InternCheckIndex(rlngIdx);
                }
                else if (Operators.ConditionalCompareObjectEqual(left, "TRACE", TextCompare: false))
                {
                    dblnError = !hwpDxf_ReadEnt.BkDXFReadEnt_AcadTrace(mobjAcadDatabase, ref rlngIdx, ref robjAcadBlock, mobjDictReadCodes, mobjDictReadValues, ref nrstrErrMsg);
                    InternCheckIndex(rlngIdx);
                }
                else if (Operators.ConditionalCompareObjectEqual(left, "SOLID", TextCompare: false))
                {
                    dblnError = !hwpDxf_ReadEnt.BkDXFReadEnt_AcadSolid(mobjAcadDatabase, ref rlngIdx, ref robjAcadBlock, mobjDictReadCodes, mobjDictReadValues, ref nrstrErrMsg);
                    InternCheckIndex(rlngIdx);
                }
                else
                {
                    dblnError = !hwpDxf_ReadEnt.BkDXFReadEnt_AcadUnknownEnt(mlngSecEnd, Conversions.ToString(dvarValue2), mobjAcadDatabase, ref rlngIdx, ref robjAcadBlock, mobjDictReadCodes, mobjDictReadValues, ref nrstrErrMsg);
                    InternCheckIndex(rlngIdx);
                }
            }
            bool InternReadBlockEntities = !dblnError;

            dobjAcadPolyfaceMesh = null;
            dobjAcadPolygonMesh  = null;
            dobjAcad3DPolyline   = null;
            dobjAcadPolyline     = null;
            return(InternReadBlockEntities);
        }