コード例 #1
0
        public static string BkDXF_LineWeightString(Enums.AcLineWeight vnumLineweight)
        {
            switch (vnumLineweight)
            {
            case Enums.AcLineWeight.acLnWtByLayer:
                return("ByLayer");

            case Enums.AcLineWeight.acLnWtByBlock:
                return("ByBlock");

            case Enums.AcLineWeight.acLnWtByLwDefault:
                return("Default");

            default:
            {
                string dstrValue = Strings.Replace(Support.Format(Operators.DivideObject((double)vnumLineweight, Interaction.IIf(Expression: false, new decimal(100L), 100.0)), "#.##"), ",", ".");
                if (LikeOperator.LikeString(dstrValue, ".*", CompareMethod.Binary))
                {
                    dstrValue = "0" + dstrValue;
                }
                if (Strings.Len(dstrValue) < 4)
                {
                    dstrValue += new string('0', checked (4 - Strings.Len(dstrValue)));
                }
                return(dstrValue + " mm");
            }
            }
        }
コード例 #2
0
ファイル: AcadLayer.cs プロジェクト: SoftBIM/DXFReader
        public AcadLayer()
        {
            mblnOpened = true;
            base.FriendLetNodeImageEnabledID  = 125;
            base.FriendLetNodeImageDisabledID = 126;
            base.FriendLetNodeName            = "Layer";
            base.FriendLetNodeText            = "Layer";
            object robjObject = this;

            FriendAddToCollection(ref robjObject);
            mnumColor                 = hwpDxf_Vars.pnumLayerColor;
            mblnDependend             = hwpDxf_Vars.pblnDependend;
            mblnFreeze                = hwpDxf_Vars.pblnFreeze;
            mblnLayerOn               = hwpDxf_Vars.pblnLayerOn;
            mstrLinetype              = hwpDxf_Vars.pstrLayerLinetype;
            mdblLinetypeObjectID      = -1.0;
            mnumLineweight            = hwpDxf_Vars.pnumLayerLineweight;
            mblnLocked                = hwpDxf_Vars.pblnLocked;
            mblnPlottable             = hwpDxf_Vars.pblnPlottable;
            mblnResolved              = hwpDxf_Vars.pblnResolved;
            mblnViewportDefault       = hwpDxf_Vars.pblnViewportDefault;
            mdblPlotStyleNameObjectID = -1.0;
            mblnFriendLetFlags        = false;
            InternCalcFlags70();
            base.FriendLetDXFName    = "LAYER";
            base.FriendLetObjectName = "AcDbLayerTableRecord";
        }
コード例 #3
0
        private bool InternReadOneBlock(ref int rlngIdx, ref string nrstrErrMsg)
        {
            nrstrErrMsg = null;
            Dictionary <object, object> dobjDictReactors = new Dictionary <object, object>();
            bool   dblnError         = default(bool);
            bool   dblnStop          = default(bool);
            double ddblObjectID      = default(double);
            double ddblOwnerID       = default(double);
            int    dlngPaperSpace    = default(int);
            string dstrLayer         = default(string);
            string dstrLineType      = default(string);
            int    dlngColor         = default(int);
            object dvarLinetypeScale = default(object);
            int    dlngVisible       = default(int);
            int    dlngRGB           = default(int);

            Enums.AcLineWeight dnumLineweight             = default(Enums.AcLineWeight);
            string             dstrPlotStyleNameReference = default(string);
            AcadBlock          dobjAcadBlock = default(AcadBlock);

            while (rlngIdx <= mlngSecEnd && !dblnError && !dblnStop)
            {
                if (!InternReadBlockBeginOrEnd("AcDbBlockBegin", ref rlngIdx, ref ddblObjectID, ref ddblOwnerID, ref dlngPaperSpace, ref dstrLayer, ref dstrLineType, ref dlngColor, ref dvarLinetypeScale, ref dlngVisible, ref dlngRGB, ref dnumLineweight, ref dstrPlotStyleNameReference, ref dobjDictReactors, ref nrstrErrMsg))
                {
                    dblnError = true;
                }
                else if (!InternReadBlockData(ref rlngIdx, ref dobjAcadBlock, ref nrstrErrMsg))
                {
                    dblnError = true;
                }
                else if (!InternAddAcadObjectBlockBegin(ref dobjAcadBlock, ddblObjectID, ddblOwnerID, dlngPaperSpace, dstrLayer, dstrLineType, dlngColor, RuntimeHelpers.GetObjectValue(dvarLinetypeScale), dlngVisible, dlngRGB, dnumLineweight, dstrPlotStyleNameReference, dobjDictReactors, ref nrstrErrMsg))
                {
                    dblnError = true;
                }
                else if (!InternReadBlockEntities(ref rlngIdx, ref dobjAcadBlock, ref nrstrErrMsg))
                {
                    dblnError = true;
                }
                else if (!InternReadBlockBeginOrEnd("AcDbBlockEnd", ref rlngIdx, ref ddblObjectID, ref ddblOwnerID, ref dlngPaperSpace, ref dstrLayer, ref dstrLineType, ref dlngColor, ref dvarLinetypeScale, ref dlngVisible, ref dlngRGB, ref dnumLineweight, ref dstrPlotStyleNameReference, ref dobjDictReactors, ref nrstrErrMsg))
                {
                    dblnError = true;
                }
                else if (!InternAddAcadObjectBlockEnd(ref dobjAcadBlock, ddblObjectID, ddblOwnerID, dlngPaperSpace, dstrLayer, dstrLineType, dlngColor, RuntimeHelpers.GetObjectValue(dvarLinetypeScale), dlngVisible, dlngRGB, dnumLineweight, dstrPlotStyleNameReference, dobjDictReactors, ref nrstrErrMsg))
                {
                    dblnError = true;
                }
                else
                {
                    dblnStop = true;
                }
            }
            bool InternReadOneBlock = !dblnError;

            dobjAcadBlock = null;
            return(InternReadOneBlock);
        }
コード例 #4
0
ファイル: TableLayer.cs プロジェクト: SoftBIM/DXFReader
        private bool InternReadLayer(double vdblDefOwnerID, ref int rlngIdx, ref AcadLayers robjAcadLayers, ref string nrstrErrMsg)
        {
            nrstrErrMsg = null;
            Dictionary <object, object> dobjDictReactors2    = new Dictionary <object, object>();
            Dictionary <object, object> dobjDictXDictionary2 = new Dictionary <object, object>();
            int dlngStartIdx = rlngIdx;

            checked
            {
                double    ddblObjectID    = default(double);
                double    ddblOwnerID     = default(double);
                bool      InternReadLayer = default(bool);
                AcadLayer dobjAcadLayer2;
                if (hwpDxf_ReadRef.BkDXFReadRef_AcadSymbolTableRecord(mobjAcadDatabase, vdblDefOwnerID, "LAYER", mobjDictReadCodes, mobjDictReadValues, ref rlngIdx, ref ddblObjectID, ref ddblOwnerID, ref dobjDictReactors2, ref dobjDictXDictionary2, ref nrstrErrMsg))
                {
                    bool dblnError;
                    if (Operators.ConditionalCompareObjectNotEqual(mobjDictReadCodes[rlngIdx], 100, TextCompare: false))
                    {
                        nrstrErrMsg = "Ungültiger Gruppencode für Objektname in Zeile " + Conversions.ToString(rlngIdx * 2 + 1) + ".";
                        dblnError   = true;
                    }
                    else if (Operators.ConditionalCompareObjectNotEqual(mobjDictReadValues[rlngIdx], "AcDbLayerTableRecord", TextCompare: false))
                    {
                        nrstrErrMsg = "Ungültiger Objektname in Zeile " + Conversions.ToString(rlngIdx * 2 + 2) + ".";
                        dblnError   = true;
                    }
                    else if (Operators.ConditionalCompareObjectNotEqual(mobjDictReadCodes[rlngIdx + 1], 2, TextCompare: false))
                    {
                        nrstrErrMsg = "Ungültiger Gruppencode für Layername in Zeile " + Conversions.ToString(rlngIdx * 2 + 3) + ".";
                        dblnError   = true;
                    }
                    else if (Operators.ConditionalCompareObjectNotEqual(mobjDictReadCodes[rlngIdx + 2], 70, TextCompare: false))
                    {
                        nrstrErrMsg = "Ungültiger Gruppencode für Standard-Flag-Werte in Zeile " + Conversions.ToString(rlngIdx * 2 + 5) + ".";
                        dblnError   = true;
                    }
                    else if (Operators.ConditionalCompareObjectNotEqual(mobjDictReadCodes[rlngIdx + 3], 62, TextCompare: false))
                    {
                        nrstrErrMsg = "Ungültiger Gruppencode für Farbnummer in Zeile " + Conversions.ToString(rlngIdx * 2 + 7) + ".";
                        dblnError   = true;
                    }
                    else if (Operators.ConditionalCompareObjectNotEqual(mobjDictReadCodes[rlngIdx + 4], 6, TextCompare: false))
                    {
                        nrstrErrMsg = "Ungültiger Gruppencode für Linientypname in Zeile " + Conversions.ToString(rlngIdx * 2 + 9) + ".";
                        dblnError   = true;
                    }
                    else
                    {
                        string dstrName     = Conversions.ToString(mobjDictReadValues[rlngIdx + 1]);
                        int    dlngCode3    = Conversions.ToInteger(mobjDictReadValues[rlngIdx + 2]);
                        int    dlngCode2    = Conversions.ToInteger(mobjDictReadValues[rlngIdx + 3]);
                        string dstrLineType = Conversions.ToString(mobjDictReadValues[rlngIdx + 4]);
                        rlngIdx += 5;
                        int  dlngCode    = Conversions.ToInteger(mobjDictReadCodes[rlngIdx]);
                        bool dblnCode290 = dlngCode == 290;
                        if (dblnCode290)
                        {
                            rlngIdx++;
                        }
                        if (Operators.ConditionalCompareObjectNotEqual(mobjDictReadCodes[rlngIdx], 370, TextCompare: false))
                        {
                            nrstrErrMsg = "Ungültiger Gruppencode für Linienstärke in Zeile " + Conversions.ToString(rlngIdx * 2 + 1) + ".";
                            dblnError   = true;
                        }
                        else if (Operators.ConditionalCompareObjectNotEqual(mobjDictReadCodes[rlngIdx + 1], "390", TextCompare: false))
                        {
                            nrstrErrMsg = "Ungültiger Gruppencode für Plotstilreferenz in Zeile " + Conversions.ToString(rlngIdx * 2 + 3) + ".";
                            dblnError   = true;
                        }
                        else
                        {
                            bool dblnPlottable = !dblnCode290 || Operators.ConditionalCompareObjectEqual(mobjDictReadValues[rlngIdx - 1], 1, TextCompare: false);
                            Enums.AcLineWeight dnumLineweight             = unchecked ((Enums.AcLineWeight)Conversions.ToInteger(mobjDictReadValues[rlngIdx]));
                            string             dstrPlotStyleNameReference = Conversions.ToString(mobjDictReadValues[rlngIdx + 1]);
                            rlngIdx += 2;
                            object dvarXDataType  = default(object);
                            object dvarXDataValue = default(object);
                            dblnError = !hwpDxf_ReadBas.BkDXFReadBas_XData(ref rlngIdx, mobjDictReadCodes, mobjDictReadValues, ref dvarXDataType, ref dvarXDataValue, ref nrstrErrMsg);
                            if (!dblnError)
                            {
                                if (robjAcadLayers.FriendNameExist(dstrName))
                                {
                                    nrstrErrMsg = "Layer " + dstrName + " ab Zeile " + Conversions.ToString(dlngStartIdx * 2 + 1) + " existiert bereits.";
                                    dblnError   = true;
                                }
                                else
                                {
                                    dobjAcadLayer2 = robjAcadLayers.FriendAddAcadObject(dstrName, ddblObjectID, ref nrstrErrMsg);
                                    if (dobjAcadLayer2 == null)
                                    {
                                        nrstrErrMsg = "Das Objekt konnte nicht hinzugefügt werden.";
                                        dblnError   = true;
                                    }
                                    else
                                    {
                                        AcadLayer acadLayer = dobjAcadLayer2;
                                        acadLayer.FriendLetFlags70 = dlngCode3;
                                        acadLayer.Color            = unchecked ((Enums.AcColor)Math.Abs(dlngCode2));
                                        acadLayer.LayerOn          = ((double)acadLayer.Color == (double)dlngCode2);
                                        acadLayer.Linetype         = dstrLineType;
                                        acadLayer.Plottable        = dblnPlottable;
                                        acadLayer.Lineweight       = dnumLineweight;
                                        acadLayer.FriendLetPlotStyleNameReference = dstrPlotStyleNameReference;
                                        acadLayer.FriendSetDictReactors           = dobjDictReactors2;
                                        acadLayer.FriendSetDictXDictionary        = dobjDictXDictionary2;
                                        acadLayer.SetXData(RuntimeHelpers.GetObjectValue(dvarXDataType), RuntimeHelpers.GetObjectValue(dvarXDataValue));
                                        acadLayer = null;
                                    }
                                }
                            }
                        }
                    }
                    InternReadLayer = !dblnError;
                }
                dobjDictReactors2    = null;
                dobjDictXDictionary2 = null;
                dobjAcadLayer2       = null;
                return(InternReadLayer);
            }
        }
コード例 #5
0
 private bool InternReadBlockBeginOrEnd(string vstrObjectName, ref int rlngIdx, ref double rdblObjectID, ref double rdblOwnerID, ref int rlngPaperSpace, ref string rstrLayer, ref string rstrLinetype, ref int rlngColor, ref object rvarLinetypeScale, ref int rlngVisible, ref int rlngRGB, ref Enums.AcLineWeight rnumLineweight, ref string rstrPlotStyleNameReference, ref Dictionary <object, object> robjDictReactors, ref string nrstrErrMsg)
 {
     nrstrErrMsg = null;
     robjDictReactors.Clear();
     checked
     {
         bool dblnError;
         if (Operators.ConditionalCompareObjectNotEqual(mobjDictReadCodes[rlngIdx], 5, TextCompare: false))
         {
             nrstrErrMsg = "Ungültiger Gruppencode für Referenz in Zeile " + Conversions.ToString(rlngIdx * 2 + 1) + ".";
             dblnError   = true;
         }
         else
         {
             rdblObjectID = hwpDxf_Functions.BkDXF_HexToDbl(Conversions.ToString(mobjDictReadValues[rlngIdx]));
             InternIncreaseIndex(ref rlngIdx, 1);
             dblnError = !hwpDxf_ReadBas.BkDXFReadBas_Reactors(ref rlngIdx, mobjDictReadCodes, mobjDictReadValues, ref robjDictReactors, ref nrstrErrMsg);
             InternCheckIndex(rlngIdx);
             if (!dblnError)
             {
                 if (Operators.ConditionalCompareObjectNotEqual(mobjDictReadCodes[rlngIdx], 330, TextCompare: false))
                 {
                     nrstrErrMsg = "Ungültiger Gruppencode für Objekt-ID (Eigentümer) in Zeile " + Conversions.ToString(rlngIdx * 2 + 1) + ".";
                     dblnError   = true;
                 }
                 else
                 {
                     rdblOwnerID = Conversions.ToDouble(mobjDictReadValues[rlngIdx]);
                     InternIncreaseIndex(ref rlngIdx, 1);
                     if (hwpDxf_ReadRef.BkDXFReadRef_AcadEntity(mstrAcadVer, mobjDictReadCodes, mobjDictReadValues, ref rlngIdx, ref rlngPaperSpace, ref rstrLayer, ref rstrLinetype, ref rlngColor, ref rvarLinetypeScale, ref rlngVisible, ref rlngRGB, ref rnumLineweight, ref rstrPlotStyleNameReference, ref nrstrErrMsg))
                     {
                         if (Operators.ConditionalCompareObjectNotEqual(mobjDictReadCodes[rlngIdx], 100, TextCompare: false))
                         {
                             nrstrErrMsg = "Ungültiger Gruppencode für Objektname in Zeile " + Conversions.ToString(rlngIdx * 2 + 1) + ".";
                             dblnError   = true;
                         }
                         else if (Operators.ConditionalCompareObjectNotEqual(mobjDictReadValues[rlngIdx], vstrObjectName, TextCompare: false))
                         {
                             nrstrErrMsg = "Ungültiger Objektname in Zeile " + Conversions.ToString(rlngIdx * 2 + 2) + ".";
                             dblnError   = true;
                         }
                         else
                         {
                             InternIncreaseIndex(ref rlngIdx, 1);
                         }
                     }
                 }
             }
         }
         return(!dblnError);
     }
 }
コード例 #6
0
        private bool InternAddAcadObjectBlockEnd(ref AcadBlock robjAcadBlock, double vdblObjectID, double vdblOwnerID, int vlngPaperSpace, string vstrLayer, string vstrLinetype, int vlngColor, object vvarLinetypeScale, int vlngVisible, int vlngRGB, Enums.AcLineWeight vnumLineweight, string vstrPlotStyleNameReference, Dictionary <object, object> vobjDictReactors, ref string nrstrErrMsg)
        {
            AcadBlockEnd dobjAcadBlockEnd2           = robjAcadBlock.FriendAddAcadObjectBlockEnd(ref nrstrErrMsg, vdblObjectID, nvblnWithoutObjectID: false);
            bool         InternAddAcadObjectBlockEnd = default(bool);

            if (dobjAcadBlockEnd2 == null)
            {
                nrstrErrMsg = "Das Objekt konnte nicht hinzugefügt werden.";
            }
            else
            {
                AcadBlockEnd acadBlockEnd = dobjAcadBlockEnd2;
                acadBlockEnd.FriendLetIsPaperSpace = (vlngPaperSpace == 1);
                acadBlockEnd.Layer         = vstrLayer;
                acadBlockEnd.Linetype      = vstrLinetype;
                acadBlockEnd.Color         = (Enums.AcColor)vlngColor;
                acadBlockEnd.LinetypeScale = RuntimeHelpers.GetObjectValue(vvarLinetypeScale);
                acadBlockEnd.Visible       = (vlngVisible == 0);
                acadBlockEnd.FriendLetRGB  = vlngRGB;
                acadBlockEnd.Lineweight    = vnumLineweight;
                acadBlockEnd.FriendLetPlotStyleNameReference = vstrPlotStyleNameReference;
                acadBlockEnd.FriendSetDictReactors           = vobjDictReactors;
                acadBlockEnd = null;
                InternAddAcadObjectBlockEnd = true;
            }
            dobjAcadBlockEnd2 = null;
            return(InternAddAcadObjectBlockEnd);
        }