Esempio n. 1
0
        public static List <CroSec> GetCroSec(StbSections sections, CroSecFamilyName familyName)
        {
            // TODO: 材軸の回転は未設定
            var k3dCroSec = new List <CroSec>();

#if karamba1
            var sn400 = new FemMaterial_Isotrop("Steel", "SN400", 20500_0000, 8076_0000, 8076_0000, 78.5, 23_5000, 1.20E-05, Color.Brown);
#elif karamba2
            var sn400 = new FemMaterial_Isotrop("Steel", "SN400", 20500_0000, 8076_0000, 8076_0000, 78.5, 23_5000, 23_5000, FemMaterial.FlowHypothesis.mises, 1.20E-05, Color.Brown);
#endif

            k3dCroSec.AddRange(StbSecColumnRcToK3dCroSec(sections.StbSecColumn_RC));
            k3dCroSec.AddRange(StbSecBeamRcToK3dCroSec(sections.StbSecBeam_RC));
            k3dCroSec.AddRange(StbSecSteelToK3dCroSec(sections, sn400, familyName));

            return(k3dCroSec);
        }
Esempio n. 2
0
 private static void SetRoundBarSection(StbSections sections, FemMaterial material, CroSecFamilyName familyName, ICollection <CroSec> k3dCroSecList)
 {
     if (sections.StbSecSteel.StbSecRoundBar != null)
     {
         foreach (StbSecRoundBar roundBar in sections.StbSecSteel.StbSecRoundBar)
         {
             // TODO: Karambaは中実円断面ないため、矩形の等価断面。
             double eqLength  = Math.Sqrt(roundBar.R * roundBar.R * Math.PI) / 10d;
             var    k3dCroSec = new CroSec_Trapezoid(familyName.Circle, roundBar.name, null, null, material, eqLength, eqLength, eqLength);
             SetK3dCroSecElemId(sections, k3dCroSec, roundBar.name);
             k3dCroSecList.Add(k3dCroSec);
         }
     }
 }
Esempio n. 3
0
 private static void SetLipCSection(StbSections sections, FemMaterial material, CroSecFamilyName familyName, ICollection <CroSec> k3dCroSecList)
 {
     if (sections.StbSecSteel.StbSecLipC != null)
     {
         foreach (StbSecLipC lipC in sections.StbSecSteel.StbSecLipC)
         {
             // TODO: 正確な形状に合わせて等価断面計算する。フィレットは非考慮
             int typeFactor = lipC.type == StbSecLipCType.SINGLE ? 1 : 2;
             var eqLength   = Math.Sqrt((2 * lipC.A * lipC.t + lipC.H * lipC.t + 2 * lipC.C * lipC.t - 4 * lipC.t * lipC.t) * typeFactor) / 10d;
             var k3dCroSec  = new CroSec_Trapezoid(familyName.Circle, lipC.name, null, null, material, eqLength, eqLength, eqLength);
             SetK3dCroSecElemId(sections, k3dCroSec, lipC.name);
             k3dCroSecList.Add(k3dCroSec);
         }
     }
 }
Esempio n. 4
0
 private static void SetFlatBarSection(StbSections sections, FemMaterial material, CroSecFamilyName familyName, ICollection <CroSec> k3dCroSecList)
 {
     if (sections.StbSecSteel.StbSecFlatBar != null)
     {
         foreach (StbSecFlatBar flatBar in sections.StbSecSteel.StbSecFlatBar)
         {
             var k3dCroSec = new CroSec_Trapezoid(familyName.FB, flatBar.name, null, null, material, flatBar.B, flatBar.t, flatBar.t);
             SetK3dCroSecElemId(sections, k3dCroSec, flatBar.name);
             k3dCroSecList.Add(k3dCroSec);
         }
     }
 }
Esempio n. 5
0
 private static void SetPipeSection(StbSections sections, FemMaterial material, CroSecFamilyName familyName, ICollection <CroSec> k3dCroSecList)
 {
     if (sections.StbSecSteel.StbSecPipe != null)
     {
         foreach (StbSecPipe pipe in sections.StbSecSteel.StbSecPipe)
         {
             var k3dCroSec = new CroSec_Circle(familyName.Circle, pipe.name, null, null, material,
                                               pipe.D / 10d, pipe.t / 10d);
             SetK3dCroSecElemId(sections, k3dCroSec, pipe.name);
             k3dCroSecList.Add(k3dCroSec);
         }
     }
 }
Esempio n. 6
0
 private static void SetRollLSection(StbSections sections, FemMaterial material, CroSecFamilyName familyName, ICollection <CroSec> k3dCroSecList)
 {
     if (sections.StbSecSteel.StbSecRollL != null)
     {
         foreach (StbSecRollL rollL in sections.StbSecSteel.StbSecRollL)
         {
             // TODO: 正確な形状に合わせて等価断面計算する。フィレットは非考慮
             int typeFactor = rollL.type == StbSecRollLType.SINGLE ? 1 : 2;
             var eqLength   = Math.Sqrt((rollL.A * rollL.t1 + rollL.B * rollL.t2 - rollL.t1 * rollL.t2) * typeFactor) / 10d;
             var k3dCroSec  = new CroSec_Trapezoid(familyName.Circle, rollL.name, null, null, material, eqLength, eqLength, eqLength);
             SetK3dCroSecElemId(sections, k3dCroSec, rollL.name);
             k3dCroSecList.Add(k3dCroSec);
         }
     }
 }
Esempio n. 7
0
 private static void SetRollTSection(StbSections sections, FemMaterial material, CroSecFamilyName familyName, ICollection <CroSec> k3dCroSecList)
 {
     if (sections.StbSecSteel.StbSecRollT != null)
     {
         foreach (StbSecRollT rollT in sections.StbSecSteel.StbSecRollT)
         {
             var k3dCroSec = new CroSec_T(familyName.T, rollT.name, null, null, material,
                                          rollT.A / 10d, rollT.B / 10d,
                                          rollT.t2 / 10d, rollT.t1 / 10d, rollT.r / 10d, rollT.r / 10d);
             SetK3dCroSecElemId(sections, k3dCroSec, rollT.name);
             k3dCroSecList.Add(k3dCroSec);
         }
     }
 }
Esempio n. 8
0
 private static void SetBuildBoxSection(StbSections sections, FemMaterial material, CroSecFamilyName familyName, ICollection <CroSec> k3dCroSecList)
 {
     if (sections.StbSecSteel.StbSecBuildBOX != null)
     {
         foreach (StbSecBuildBOX buildBOX in sections.StbSecSteel.StbSecBuildBOX)
         {
             var k3dCroSec = new CroSec_Box(familyName.Box, buildBOX.name, null, null, material,
                                            buildBOX.A / 10d, buildBOX.B / 10d, buildBOX.B / 10d,
                                            buildBOX.t2 / 10d, buildBOX.t2 / 10d, buildBOX.t1 / 10d, 0, -1);
             SetK3dCroSecElemId(sections, k3dCroSec, buildBOX.name);
             k3dCroSecList.Add(k3dCroSec);
         }
     }
 }
Esempio n. 9
0
 private static void SetRollBoxSection(StbSections sections, FemMaterial material, CroSecFamilyName familyName, ICollection <CroSec> k3dCroSecList)
 {
     if (sections.StbSecSteel.StbSecRollBOX != null)
     {
         foreach (StbSecRollBOX rollBOX in sections.StbSecSteel.StbSecRollBOX)
         {
             var k3dCroSec = new CroSec_Box(familyName.Box, rollBOX.name, null, null, material,
                                            rollBOX.A / 10d, rollBOX.B / 10d, rollBOX.B / 10d,
                                            rollBOX.t / 10d, rollBOX.t / 10d, rollBOX.t / 10d, rollBOX.r / 10d, rollBOX.r / 10d);
             SetK3dCroSecElemId(sections, k3dCroSec, rollBOX.name);
             k3dCroSecList.Add(k3dCroSec);
         }
     }
 }
Esempio n. 10
0
 private static void SetBuildHSection(StbSections sections, FemMaterial material, CroSecFamilyName familyName, ICollection <CroSec> k3dCroSecList)
 {
     if (sections.StbSecSteel.StbSecBuildH != null)
     {
         foreach (StbSecBuildH buildH in sections.StbSecSteel.StbSecBuildH)
         {
             var k3dCroSec = new CroSec_I(familyName.H, buildH.name, null, null, material,
                                          buildH.A / 10d, buildH.B / 10d, buildH.B / 10d,
                                          buildH.t2 / 10d, buildH.t2 / 10d, buildH.t1 / 10d);
             SetK3dCroSecElemId(sections, k3dCroSec, buildH.name);
             k3dCroSecList.Add(k3dCroSec);
         }
     }
 }
Esempio n. 11
0
        private static List <CroSec> StbSecSteelToK3dCroSec(StbSections sections, FemMaterial material, CroSecFamilyName familyName)
        {
            var k3dCroSecList = new List <CroSec>();

            if (sections.StbSecSteel == null)
            {
                return(k3dCroSecList);
            }

            SetRollHSection(sections, material, familyName, k3dCroSecList);
            SetBuildHSection(sections, material, familyName, k3dCroSecList);
            SetRollBoxSection(sections, material, familyName, k3dCroSecList);
            SetBuildBoxSection(sections, material, familyName, k3dCroSecList);
            SetRollTSection(sections, material, familyName, k3dCroSecList);
            SetPipeSection(sections, material, familyName, k3dCroSecList);
            SetRollCSection(sections, material, familyName, k3dCroSecList);
            SetRollLSection(sections, material, familyName, k3dCroSecList);
            SetLipCSection(sections, material, familyName, k3dCroSecList);
            SetFlatBarSection(sections, material, familyName, k3dCroSecList);
            SetRoundBarSection(sections, material, familyName, k3dCroSecList);

            return(k3dCroSecList);
        }