示例#1
0
        /***************************************************/

        private bool SetProfile(FabricatedBoxProfile profile, string sectionName, IMaterialFragment material)
        {
            if (profile.TopFlangeThickness != profile.BotFlangeThickness)
            {
                Engine.Base.Compute.RecordWarning($"Different thickness of top and bottom flange is not supported in ETABS. Section named {sectionName} pushed to ETABS is using the top thickness for both flanges.");
            }
            return(m_model.PropFrame.SetTube(sectionName, material?.DescriptionOrName() ?? "", profile.Height, profile.Width, profile.TopFlangeThickness, profile.WebThickness) == 0);
        }
示例#2
0
 private static void SetSpecificDimensions(FabricatedBoxProfile dimensions, string sectionName, IMaterialFragment material, cSapModel model)
 {
     if (dimensions.TopFlangeThickness != dimensions.BotFlangeThickness)
     {
         throw new NotImplementedException("different thickness of top and bottom flange is not supported in ETABS");
     }
     model.PropFrame.SetTube(sectionName, material.Name, dimensions.Height, dimensions.Width, dimensions.TopFlangeThickness, dimensions.WebThickness);
 }
示例#3
0
        public static string Description(this FabricatedBoxProfile profile)
        {
            if (profile == null)
            {
                return("null profile");
            }

            return($"FabBox {profile.Height:G3}x{profile.Width:G3}x" +
                   $"{profile.WebThickness:G3}x{profile.TopFlangeThickness:G3}x{profile.BotFlangeThickness:G3}");
        }
示例#4
0
        /***************************************************/

        private bool SetProfile(FabricatedBoxProfile bhomProfile, string sectionName, string matName)
        {
            if (bhomProfile.TopFlangeThickness != bhomProfile.BotFlangeThickness)
            {
                CreatePropertyWarning(sectionName, "Fabricated Box with unequal flanges", bhomProfile.BHoM_Guid.ToString());
            }
            double tf  = Math.Max(bhomProfile.TopFlangeThickness, bhomProfile.BotFlangeThickness);
            int    ret = m_model.PropFrame.SetTube(sectionName, matName, bhomProfile.Height, bhomProfile.Width, tf, bhomProfile.WebThickness);

            return(ret == 0);
        }
示例#5
0
        /***************************************************/

        public static double TorsionalConstant(this FabricatedBoxProfile profile)
        {
            double tf1    = profile.TopFlangeThickness; //TODO: Allow for varying plate thickness
            double tw     = profile.WebThickness;
            double width  = profile.Width;
            double height = profile.Height;


            return(2 * tf1 * tw * Math.Pow(width - tw, 2) * Math.Pow(height - tf1, 2) /
                   (width * tw + height * tf1 - Math.Pow(tw, 2) - Math.Pow(tf1, 2)));
        }
示例#6
0
        /***************************************************/

        public static FabricatedBoxProfile InterpolateProfile(FabricatedBoxProfile startProfile, FabricatedBoxProfile endProfile, double parameter, int interpolationOrder,
                                                              double domainStart = 0, double domainEnd = 1)
        {
            return(Create.FabricatedBoxProfile(
                       Interpolate(startProfile.Height, endProfile.Height, parameter, interpolationOrder, domainStart, domainEnd),
                       Interpolate(startProfile.Width, endProfile.Width, parameter, interpolationOrder, domainStart, domainEnd),
                       Interpolate(startProfile.WebThickness, endProfile.WebThickness, parameter, interpolationOrder, domainStart, domainEnd),
                       Interpolate(startProfile.TopFlangeThickness, endProfile.TopFlangeThickness, parameter, interpolationOrder, domainStart, domainEnd),
                       Interpolate(startProfile.BotFlangeThickness, endProfile.BotFlangeThickness, parameter, interpolationOrder, domainStart, domainEnd),
                       Interpolate(startProfile.WeldSize, endProfile.WeldSize, parameter, interpolationOrder, domainStart, domainEnd)));
        }
示例#7
0
        /***************************************************/

        private bool CreateProfile(string name, FabricatedBoxProfile profile)
        {
            Engine.Base.Compute.RecordWarning(
                "Unequal flange thickness not supported in Lusas for " + profile.GetType().ToString()
                + ", top flange thickness used as flange thickness");
            Engine.Base.Compute.RecordWarning(
                "Weld size assumed to be inner radius for " + profile.GetType().ToString());

            List <double> dimensionList = new List <double> {
                profile.Width, profile.Height, profile.TopFlangeThickness, profile.WebThickness, profile.WeldSize
            };

            double[] dimensionArray = dimensionList.ToArray();

            //List<string> valueList = new List<string> { "B", "D", "tf", "tw", "r" };

            int lusasType = 15;

            CreateLibrarySection(name, dimensionArray, lusasType);

            return(true);
        }
示例#8
0
        /***************************************************/

        public static string Description(this FabricatedBoxProfile profile)
        {
            return("FabBox " + profile.Height + "x" + profile.Width + "x" + profile.WebThickness + "x" + profile.TopFlangeThickness + "x" + profile.BotFlangeThickness);
        }
示例#9
0
 public static double WarpingConstant(this FabricatedBoxProfile profile)
 {
     return(profile.IsNull() ? 0 : 0);
 }
示例#10
0
 public static double WarpingConstant(this FabricatedBoxProfile profile)
 {
     return(0);
 }
示例#11
0
 private (double[], int, string) GetProfileDimensions(FabricatedBoxProfile profile)
 {
     return(new double[] { profile.Width, profile.Height, 0, profile.TopFlangeThickness, profile.WebThickness, 0 }, St7.bsSquareHollow, profile.Name);
 }