// // Steel
        // // DesignSect="Program Determined"/FSEC1/...
        // // Fy=0/32
        // // (Reduced Live Load Factor)RLLF=0/11
        // // (Net Area to Total Area ratio)AreaRatio=0/10
        // // (Unbraced length ratios) XLMajor=0/12   XLMinor=0/13   XLLTB=0/14
        // // (Effective length)K1Major=0/15   K1Minor=0/16   K2Major=0/17         K2Minor=0/18      KLTB=0/41
        // // CheckDefl="Program Determined"/Yes/No
        // // DeflType="Program Determined"/Both/Ratio/Absolute
        // // (Ratio, L/)DLRat=0/1   SDLAndLLRat=0/2   LLRat=0/400   TotalRat=0/500   NetRat=0/3
        // // (Absolute) DLAbs=0/4   SDLAndLLAbs=0/5   LLAbs=0/6     TotalAbs=0/7     NetAbs=0/8
        // // (Specified Camber)SpecCamber=0/9
        // // DCLimit=0/40

        private static SteelDesignOverwrite setOverwritesSteelBasic(Model model, Dictionary <string, string> tableRow)
        {
            SteelDesignOverwrite overwrite = new SteelDesignOverwrite
            {
                DesignSection            = getNullableFrameSection(model, tableRow["DesignSect"]),
                Fy                       = Adaptor.toDouble(tableRow["Fy"]),
                RLLF                     = Adaptor.toDouble(tableRow["RLLF"]),
                AreaRatio                = Adaptor.toDouble(tableRow["AreaRatio"]),
                XLMajor                  = Adaptor.toDouble(tableRow["XLMajor"]),
                XLMinor                  = Adaptor.toDouble(tableRow["XLMinor"]),
                XLLTB                    = Adaptor.toDouble(tableRow["XLLTB"]),
                K1Major                  = getNullableDouble(tableRow, "K1Major"),
                K1Minor                  = getNullableDouble(tableRow, "K1Minor"),
                K2Major                  = getNullableDouble(tableRow, "K2Major"),
                K2Minor                  = getNullableDouble(tableRow, "K2Minor"),
                KLTB                     = Adaptor.toDouble(tableRow["KLTB"]),
                IsDeflectionConsidered   = getNullableYesNo(tableRow["CheckDefl"]),
                DeflectionCheckType      = getNullableEnum <SteelDesignOverwrite.DeflectionCheckTypes>(tableRow["DeflType"]),
                RatioDL                  = Adaptor.toDouble(tableRow["DLRat"]),
                RatioSDLAndLL            = Adaptor.toDouble(tableRow["SDLAndLLRat"]),
                RatioLL                  = Adaptor.toDouble(tableRow["LLRat"]),
                RatioTotal               = Adaptor.toDouble(tableRow["TotalRat"]),
                RatioNet                 = Adaptor.toDouble(tableRow["NetRat"]),
                AbsoluteDL               = Adaptor.toDouble(tableRow["DLAbs"]),
                AbsoluteSDLAndLL         = Adaptor.toDouble(tableRow["SDLAndLLAbs"]),
                AbsoluteLL               = Adaptor.toDouble(tableRow["LLAbs"]),
                AbsoluteTotal            = Adaptor.toDouble(tableRow["TotalAbs"]),
                AbsoluteNet              = Adaptor.toDouble(tableRow["NetAbs"]),
                SpecifiedCamber          = Adaptor.toDouble(tableRow["SpecCamber"]),
                DemandCapacityRatioLimit = Adaptor.toDouble(tableRow["DCLimit"])
            };

            return(overwrite);
        }
        //TABLE:  "OVERWRITES - STEEL DESIGN - NZS 3404-1997"
        // Frame=39   DesignSect="Program Determined"   FrameType="Program Determined"   Fy=0   RLLF=0   AreaRatio=0
        // SteelType="Program Determined"
        // XLMajor=0   XLMinor=0   XLLTB=0
        // keMajor=0   keMinor=0   keSwayMajor=0   keSwayMinor=0
        // ktLTB=0   krLTB=0   klLTB=0
        // CmMajor=0   CmMinor=0
        // Alpham=0   Alphas=0   Kf=0   KtAxial=0   DbMajor=0   DbMinor=0   DsMajor=0   DsMinor=0   Ns=0   Nt=0   Ms3=0   Ms2=0   Mb=0   Vv2=0   Vv3=0
        // CheckDefl="Program Determined"
        // DeflType="Program Determined"   DLRat=0   SDLAndLLRat=0   LLRat=0   TotalRat=0   NetRat=0   DLAbs=0   SDLAndLLAbs=0   LLAbs=0   TotalAbs=0   NetAbs=0   SpecCamber=0   DCLimit=0

        // Frame=40   DesignSect="Program Determined"   FrameType="Program Determined"   Fy=0   RLLF=0   AreaRatio=0   SteelType="Program Determined"   XLMajor=0   XLMinor=0   XLLTB=0   keMajor=0   keMinor=0   keSwayMajor=0   keSwayMinor=0 _
        // ktLTB = 0   krLTB=0   klLTB=0   CmMajor=0   CmMinor=0   Alpham=0   Alphas=0   Kf=0   KtAxial=0   DbMajor=0   DbMinor=0   DsMajor=0   DsMinor=0   Ns=0   Nt=0   Ms3=0   Ms2=0   Mb=0   Vv2=0   Vv3=0   CheckDefl=Yes _
        // DeflType="Program Determined"   DLRat=0   SDLAndLLRat=0   LLRat=400   TotalRat=500   NetRat=0   DLAbs=0   SDLAndLLAbs=0   LLAbs=0   TotalAbs=0   NetAbs=0   SpecCamber=0   DCLimit=0

        // TABLE:  "OVERWRITES - STEEL DESIGN - NZS 3404-1997"
        // // FrameType="Program Determined"/"Moment Frame"
        // // SteelType="Program Determined"/"Hot Finished"
        // // (Twist Restraint Factor)ktLTB=0/19
        // // (Lateral Rotation Restraint Factor)krLTB=0/20
        // // (Load Height Factor for LTB)klLTB=0/21
        // // (Moment Modification Factor)Alpham=0/24
        // // (Slenderness Reduction Factor)Alphas=0/25
        // // (Form Factor)Kf=0/30
        // // (Axial Capacity Correction Factor)KtAxial=0/31
        // // (Nonsway/sway Moment Factors)DbMajor=0/26   DbMinor=0/27   DsMajor=0/28   DsMinor=0/29
        // // (Moment Coefficient) CmMajor=0/22   CmMinor=0/23
        // // (Capacities)Ns=0/33   Nt=0/34   Ms3=0/35   Ms2=0/36   Mb=0/37   Vv2=0/38   Vv3=0/39
        private static void setOVERWRITES_STEEL_DESIGN_NZS_3404_1997(Model model, List <Dictionary <string, string> > table)
        {
            foreach (Frame frame in model.Structure.Frames)
            {
                NZS_3404_1997_Overwrites overwrite =
                    frame.FrameDesignOverwrites.SteelDesignOverwrite.GetItem <NZS_3404_1997_Overwrites>();

                Dictionary <string, string> tableRow = setOverwritesSteelBasic(frame);

                SteelDesignOverwrite steelDesignOverwrite = frame.FrameDesignOverwrites.SteelDesignOverwrite.GenericOverwrites;
                tableRow.Remove("K1Major");
                if (steelDesignOverwrite.K1Major.HasValue)
                {
                    tableRow["keMajor"] = Adaptor.fromDouble(steelDesignOverwrite.K1Major.Value);
                }
                tableRow.Remove("K1Minor");
                if (steelDesignOverwrite.K1Minor.HasValue)
                {
                    tableRow["keMinor"] = Adaptor.fromDouble(steelDesignOverwrite.K1Minor.Value);
                }
                tableRow.Remove("K2Major");
                if (steelDesignOverwrite.K2Major.HasValue)
                {
                    tableRow["keSwayMajor"] = Adaptor.fromDouble(steelDesignOverwrite.K2Major.Value);
                }
                tableRow.Remove("K2Minor");
                if (steelDesignOverwrite.K2Minor.HasValue)
                {
                    tableRow["keSwayMinor"] = Adaptor.fromDouble(steelDesignOverwrite.K2Minor.Value);
                }

                tableRow["FrameType"] = getNullableEnum(overwrite.FrameType);
                tableRow["SteelType"] = getNullableEnum(overwrite.SteelType);
                tableRow["CmMajor"]   = Adaptor.fromDouble(overwrite.CmMajor);
                tableRow["CmMinor"]   = Adaptor.fromDouble(overwrite.CmMinor);
                tableRow["ktLTB"]     = Adaptor.fromDouble(overwrite.ktLTB);
                tableRow["krLTB"]     = Adaptor.fromDouble(overwrite.krLTB);
                tableRow["klLTB"]     = Adaptor.fromDouble(overwrite.klLTB);
                tableRow["Alpham"]    = Adaptor.fromDouble(overwrite.Alpha_m);
                tableRow["Alphas"]    = Adaptor.fromDouble(overwrite.Alpha_s);
                tableRow["Kf"]        = Adaptor.fromDouble(overwrite.Kf);
                tableRow["KtAxial"]   = Adaptor.fromDouble(overwrite.KtAxial);
                tableRow["DbMajor"]   = Adaptor.fromDouble(overwrite.DbMajor);
                tableRow["DbMinor"]   = Adaptor.fromDouble(overwrite.DbMinor);
                tableRow["DsMajor"]   = Adaptor.fromDouble(overwrite.DsMajor);
                tableRow["DsMinor"]   = Adaptor.fromDouble(overwrite.DsMinor);
                tableRow["Ns"]        = Adaptor.fromDouble(overwrite.Ns);
                tableRow["Nt"]        = Adaptor.fromDouble(overwrite.Nt);
                tableRow["Ms3"]       = Adaptor.fromDouble(overwrite.Ms3);
                tableRow["Ms2"]       = Adaptor.fromDouble(overwrite.Ms2);
                tableRow["Mb"]        = Adaptor.fromDouble(overwrite.Mb);
                tableRow["Vv2"]       = Adaptor.fromDouble(overwrite.Vv2);
                tableRow["Vv3"]       = Adaptor.fromDouble(overwrite.Vv3);

                table.Add(tableRow);
            }
        }