예제 #1
0
        /***************************************************/

        private bool SetProfile(ZSectionProfile bhomProfile, string sectionName, string matName)
        {
            if (bhomProfile.FlangeThickness != bhomProfile.WebThickness)
            {
                CreatePropertyWarning(sectionName, "Z Section with unequal web and flange thickness", bhomProfile.BHoM_Guid.ToString());
            }
            double t   = Math.Max(bhomProfile.FlangeThickness, bhomProfile.WebThickness);
            int    ret = m_model.PropFrame.SetColdZ(sectionName, matName, bhomProfile.Height, bhomProfile.FlangeWidth, t, bhomProfile.RootRadius, 0, 0);

            return(ret == 0);
        }
예제 #2
0
        /***************************************************/

        public static double TorsionalConstant(this ZSectionProfile profile)
        {
            double b1     = profile.FlangeWidth;
            double b2     = profile.FlangeWidth;
            double height = profile.Height;
            double tf1    = profile.FlangeThickness;
            double tf2    = profile.FlangeThickness;
            double tw     = profile.WebThickness;

            return((b1 * Math.Pow(tf1, 3) + b2 * Math.Pow(tf2, 3) + (height - tf1) * Math.Pow(tw, 3)) / 3);
        }
예제 #3
0
        /***************************************************/

        public static ZSectionProfile InterpolateProfile(ZSectionProfile startProfile, ZSectionProfile endProfile, double parameter, int interpolationOrder,
                                                         double domainStart = 0, double domainEnd = 1)
        {
            return(Create.ZSectionProfile(
                       Interpolate(startProfile.Height, endProfile.Height, parameter, interpolationOrder, domainStart, domainEnd),
                       Interpolate(startProfile.FlangeWidth, endProfile.FlangeWidth, parameter, interpolationOrder, domainStart, domainEnd),
                       Interpolate(startProfile.WebThickness, endProfile.WebThickness, parameter, interpolationOrder, domainStart, domainEnd),
                       Interpolate(startProfile.FlangeThickness, endProfile.FlangeThickness, parameter, interpolationOrder, domainStart, domainEnd),
                       Interpolate(startProfile.RootRadius, endProfile.RootRadius, parameter, interpolationOrder, domainStart, domainEnd),
                       Interpolate(startProfile.ToeRadius, endProfile.ToeRadius, parameter, interpolationOrder, domainStart, domainEnd)));
        }
예제 #4
0
        /***************************************************/

        private bool CreateProfile(string name, ZSectionProfile profile)
        {
            Engine.Base.Compute.RecordWarning("Lusas only supports constant thickness Z sections, flange thickness used as thickness");
            Engine.Base.Compute.RecordWarning("Toe radius not supported for ZSection");

            List <double> dimensionList = new List <double> {
                profile.Height, profile.FlangeWidth, profile.FlangeWidth,
                profile.FlangeThickness, profile.RootRadius
            };

            double[] dimensionArray = dimensionList.ToArray();

            //List<string> valueList = new List<string> { "D", "E", "F", "t", "r" };

            int lusasType = 16;

            CreateLibrarySection(name, dimensionArray, lusasType);

            return(true);
        }
예제 #5
0
 private static void SetSpecificDimensions(ZSectionProfile dimensions, string sectionName, IMaterialFragment material, cSapModel model)
 {
     Engine.Reflection.Compute.RecordWarning("Z-Section currently not supported in the Etabs adapter. Section with name " + sectionName + " has not been pushed.");
 }
예제 #6
0
 private (double[], int, string) GetProfileDimensions(ZSectionProfile profile)
 {
     return(new double[] { profile.FlangeWidth, profile.FlangeWidth, profile.Height, profile.FlangeThickness, profile.FlangeThickness, profile.WebThickness }, St7.bsZSection, profile.Name);
 }