コード例 #1
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);
         }
     }
 }
コード例 #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);
         }
     }
 }
コード例 #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);
         }
     }
 }
コード例 #4
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);
         }
     }
 }
コード例 #5
0
ファイル: K2StbSections.cs プロジェクト: hrntsm/HoaryFox
 private static StbSecColumn_RC CreateTrapezoidColumn(int croSecId, int cNum, CroSec_Trapezoid trapezoid)
 {
     return(new StbSecColumn_RC
     {
         id = (croSecId + 1).ToString(),
         name = "C" + cNum,
         kind_column = StbSecColumn_RCKind_column.COLUMN,
         StbSecFigureColumn_RC = new StbSecFigureColumn_RC
         {
             Item = new StbSecColumn_RC_Rect {
                 width_X = trapezoid.maxWidth() * 1000, width_Y = trapezoid._height * 1000
             }
         },
     });
 }
コード例 #6
0
        private static List <CroSec> StbSecBeamRcToK3dCroSec(IEnumerable <StbSecBeam_RC> girders)
        {
            var k3dCroSecList = new List <CroSec>();

            if (girders == null)
            {
                return(k3dCroSecList);
            }

            foreach (StbSecBeam_RC girder in girders)
            {
                double width, depth;
                FemMaterial_Isotrop material = Material.StbToRcFemMaterial(girder.strength_concrete);
                object[]            figures  = girder.StbSecFigureBeam_RC.Items;

                switch (figures[0])
                {
                case StbSecBeam_RC_Straight straight:
                    width = straight.width / 10d;
                    depth = straight.depth / 10d;
                    break;

                case StbSecBeam_RC_Taper _:
                    StbSecBeam_RC_Taper[] tapers = { figures[0] as StbSecBeam_RC_Taper, figures[1] as StbSecBeam_RC_Taper };
                    width = tapers.First(figure => figure.pos == StbSecBeam_RC_TaperPos.START).width / 10d;
                    depth = tapers.First(figure => figure.pos == StbSecBeam_RC_TaperPos.START).depth / 10d;
                    break;

                case StbSecBeam_RC_Haunch _:
                    StbSecBeam_RC_Haunch[] haunches;
                    haunches = figures.Length == 2
                            ? new[] { figures[0] as StbSecBeam_RC_Haunch, figures[1] as StbSecBeam_RC_Haunch }
                            : new[] { figures[0] as StbSecBeam_RC_Haunch, figures[1] as StbSecBeam_RC_Haunch, figures[2] as StbSecBeam_RC_Haunch };
                    width = haunches.First(figure => figure.pos == StbSecBeam_RC_HaunchPos.CENTER).width / 10d;
                    depth = haunches.First(figure => figure.pos == StbSecBeam_RC_HaunchPos.CENTER).depth / 10d;
                    break;

                default:
                    throw new ArgumentException("Convert StbSecBeam_RC to karamba3d error");
                }
                var name      = $"BD-{width * 10}x{depth * 10}";
                var k3dCroSec = new CroSec_Trapezoid("RcBeam", name, null, null, material, depth, width, width);
                k3dCroSec.AddElemId("Id" + girder.id);
                k3dCroSecList.Add(k3dCroSec);
            }

            return(k3dCroSecList);
        }
コード例 #7
0
ファイル: K2StbSections.cs プロジェクト: hrntsm/HoaryFox
 private static StbSecBeam_RC CreateTrapezoidBeam(int croSecId, int gNum, CroSec_Trapezoid trapezoid)
 {
     return(new StbSecBeam_RC
     {
         id = (croSecId + 1).ToString(),
         name = "G" + gNum,
         kind_beam = StbSecBeam_RCKind_beam.GIRDER,
         StbSecFigureBeam_RC = new StbSecFigureBeam_RC
         {
             Items = new object[] { new StbSecBeam_RC_Straight
                                    {
                                        depth = trapezoid._height * 1000,
                                        width = trapezoid.maxWidth() * 1000
                                    } }
         },
     });
 }
コード例 #8
0
        private static List <CroSec> StbSecColumnRcToK3dCroSec(IEnumerable <StbSecColumn_RC> columns)
        {
            var k3dCroSecList = new List <CroSec>();

            if (columns == null)
            {
                return(k3dCroSecList);
            }

            foreach (StbSecColumn_RC column in columns)
            {
                string              name;
                CroSec_Beam         k3dCroSec;
                object              figure   = column.StbSecFigureColumn_RC.Item;
                FemMaterial_Isotrop material = Material.StbToRcFemMaterial(column.strength_concrete);
                switch (figure)
                {
                case StbSecColumn_RC_Rect rect:
                    double widthX = rect.width_X / 10d;
                    double widthY = rect.width_Y / 10d;
                    name      = $"CD-{widthX * 10}x{widthY * 10}";
                    k3dCroSec = new CroSec_Trapezoid("RcColRect", name, null, null, material, widthX, widthY, widthY);
                    break;

                case StbSecColumn_RC_Circle circle:
                    double d = circle.D / 10d;
                    name      = $"P-{d * 10}";
                    k3dCroSec = new CroSec_Circle("RcColCircle", name, null, null, material, d, d / 2);
                    break;

                default:
                    throw new ArgumentException("Convert StbSecColumn_RC to karamba3d error");
                }
                k3dCroSec.AddElemId("Id" + column.id);
                k3dCroSecList.Add(k3dCroSec);
            }

            return(k3dCroSecList);
        }