public ShellType ConvertShellType(eShellType eShellType)
        {
            ShellType shellType = new ShellType();

            switch (eShellType)
            {
            case eShellType.Membrane:
                shellType = ShellType.Membrane;
                break;

            case eShellType.ShellThick:
                shellType = ShellType.ShellThick;
                break;

            case eShellType.ShellThin:
                shellType = ShellType.ShellThin;
                break;

            case eShellType.Layered:
                shellType = ShellType.Layered;
                break;

            default:
                shellType = ShellType.Null;
                break;
            }

            return(shellType);
        }
        ETABSProperty2D Property2DToSpeckle(string area, string property)
        {
            eAreaDesignOrientation areaDesignOrientation = eAreaDesignOrientation.Null;

            Model.AreaObj.GetDesignOrientation(area, ref areaDesignOrientation);
            eDeckType     deckType     = eDeckType.Filled;
            eSlabType     slabType     = eSlabType.Drop;
            eWallPropType wallPropType = eWallPropType.Specified;
            eShellType    shellType    = eShellType.Layered;
            string        matProp      = "";
            double        thickness    = 0;
            int           color        = 0;
            string        notes        = "";
            string        GUID         = "";

            switch (areaDesignOrientation)
            {
            case eAreaDesignOrientation.Wall:
                return(WallPropertyToSpeckle(property));

                break;

            case eAreaDesignOrientation.Floor:
                return(FloorPropertyToSpeckle(property));

                break;
            }

            double[] value = null;

            return(null);
        }
예제 #3
0
        /// <summary>
        /// Converts the type of to shell.
        /// </summary>
        /// <param name="value">The value.</param>
        /// <returns>eShellType.</returns>
        private static string convertFromShellType(eShellType value)
        {
            switch (value)
            {
            case eShellType.ShellThin:
                return("Shell-Thin");

            case eShellType.ShellThick:
                return("Shell-Thick");

            case eShellType.ShellLayered:
                return("Shell-Layered");

            case eShellType.PlateThin:
                return("Plate-Thin");

            case eShellType.PlateThick:
                return("Plate-Thick");

            case eShellType.Membrane:
                return("Membrane");

            default:
                return(string.Empty);
            }
        }
예제 #4
0
        internal Wall_Section(string secName, string secMat, double Th, Shell_Stiffness_Modifier sSM, eShellType shellType)

        {
            SecName   = secName;
            SecMat    = secMat;
            H         = Th;
            SSM       = sSM;
            ShellType = shellType;
        }
예제 #5
0
 public void SetDeck(string name,
                     double thickness,
                     eDeckType deckType,
                     eShellType shellType,
                     string nameMaterial,
                     int color    = -1,
                     string notes = "",
                     string GUID  = "")
 {
 }
예제 #6
0
 public void SetWall(string name,
                     double thickness,
                     eWallPropertyType walltype,
                     eShellType shellType,
                     string nameMaterial,
                     int color    = -1,
                     string notes = "",
                     string GUID  = "")
 {
 }
예제 #7
0
 public void GetSlab(string name,
                     ref double thickness,
                     ref eSlabType slabType,
                     ref eShellType shellType,
                     ref string nameMaterial,
                     ref int color,
                     ref string notes,
                     ref string GUID)
 {
 }
예제 #8
0
 public void GetWall(string name,
                     ref double thickness,
                     ref eWallPropertyType walltype,
                     ref eShellType shellType,
                     ref string nameMaterial,
                     ref int color,
                     ref string notes,
                     ref string GUID)
 {
 }
예제 #9
0
 public void SetSlab(string name,
                     double thickness,
                     eSlabType slabType,
                     eShellType shellType,
                     string nameMaterial,
                     int color    = -1,
                     string notes = "",
                     string GUID  = "")
 {
 }
예제 #10
0
 public void GetDeck(string name,
                     ref double thickness,
                     ref eDeckType deckType,
                     ref eShellType shellType,
                     ref string nameMaterial,
                     ref int color,
                     ref string notes,
                     ref string GUID)
 {
 }
예제 #11
0
        /***************************************************/

        private void SetShellType(ISurfaceProperty property, eShellType shellType)
        {
            oM.Adapters.ETABS.ShellType?bhSHellType = ShellTypeToBHoM(shellType);

            if (bhSHellType.HasValue)
            {
                property.Fragments.AddOrReplace(new ShellTypeFragment {
                    ShellType = bhSHellType.Value
                });
            }
        }
예제 #12
0
 public void SetShell(string name,
                      eShellType shellType,
                      bool includeDrillingDOF,
                      string nameMaterial,
                      double materialAngle,
                      double membraneThickness,
                      double bendingThickness,
                      int color    = -1,
                      string notes = "",
                      string GUID  = "")
 {
 }
예제 #13
0
 public void GetShell(string name,
                      ref eShellType shellType,
                      ref bool includeDrillingDOF,
                      ref string nameMaterial,
                      ref double materialAngle,
                      ref double membraneThickness,
                      ref double bendingThickness,
                      ref int color,
                      ref string notes,
                      ref string GUID)
 {
 }
예제 #14
0
        /***************************************************/
        /***    Helper Methods                           ***/
        /***************************************************/

        private oM.Adapters.ETABS.ShellType? ShellTypeToBHoM(eShellType shellType)
        {
            switch (shellType)
            {
            case eShellType.ShellThin:
                return(oM.Adapters.ETABS.ShellType.ShellThin);

            case eShellType.ShellThick:
                return(oM.Adapters.ETABS.ShellType.ShellThick);

            case eShellType.Membrane:
                return(oM.Adapters.ETABS.ShellType.Membrane);

            default:
                return(null);
            }
        }
예제 #15
0
        /***************************************************/

        private void SetShellType(ISurfaceProperty prop, eShellType eShellType)
        {
            switch (eShellType)
            {
            case eShellType.ShellThin:
                prop.CustomData["ShellType"] = oM.Adapters.ETABS.ShellType.ShellThin;
                break;

            case eShellType.ShellThick:
                prop.CustomData["ShellType"] = oM.Adapters.ETABS.ShellType.ShellThick;
                break;

            case eShellType.Membrane:
                prop.CustomData["ShellType"] = oM.Adapters.ETABS.ShellType.Membrane;
                break;
            }
        }
        public ETABSProperty2D WallPropertyToSpeckle(string property)
        {
            eWallPropType wallPropType         = eWallPropType.Specified;
            eShellType    shellType            = eShellType.Layered;
            string        matProp              = "";
            double        thickness            = 0;
            int           color                = 0;
            string        notes                = "";
            string        GUID                 = "";
            var           specklePropery2DWall = new ETABSProperty2D();

            specklePropery2DWall.type = Structural.PropertyType2D.Shell;
            Model.PropArea.GetWall(property, ref wallPropType, ref shellType, ref matProp, ref thickness, ref color, ref notes, ref GUID);
            var speckleShellType = ConvertShellType(shellType);

            specklePropery2DWall.shellType = speckleShellType;
            setProperties(specklePropery2DWall, matProp, thickness, property);
            specklePropery2DWall.type2D        = Structural.ETABS.Analysis.ETABSPropertyType2D.Wall;
            specklePropery2DWall.applicationId = GUID;
            return(specklePropery2DWall);
        }
예제 #17
0
        public ETABSProperty2D FloorPropertyToSpeckle(string property)
        {
            eDeckType  deckType  = eDeckType.Filled;
            eSlabType  slabType  = eSlabType.Drop;
            eShellType shellType = eShellType.Layered;
            string     matProp   = "";
            double     thickness = 0;
            int        color     = 0;
            string     notes     = "";
            string     GUID      = "";

            int d = Model.PropArea.GetDeck(property, ref deckType, ref shellType, ref matProp, ref thickness, ref color, ref notes, ref GUID);

            if (d == 0)
            {
                var    speckleProperties2D = new ETABSProperty2D();
                double slabDepth           = 0;
                double shearStudDia        = 0;
                double shearStudFu         = 0;
                double shearStudHt         = 0;
                double ribDepth            = 0;
                double ribWidthTop         = 0;
                double ribWidthBot         = 0;
                double ribSpacing          = 0;
                double shearThickness      = 0;
                double unitWeight          = 0;
                var    speckleShellType    = ConvertShellType(shellType);
                if (deckType == eDeckType.Filled)
                {
                    var speckleProperty2D = new ETABSProperty2D.DeckFilled();
                    Model.PropArea.GetDeckFilled(property,
                                                 ref slabDepth,
                                                 ref ribDepth,
                                                 ref ribWidthTop,
                                                 ref ribWidthBot,
                                                 ref ribSpacing,
                                                 ref shearThickness,
                                                 ref unitWeight,
                                                 ref shearStudDia,
                                                 ref shearStudHt,
                                                 ref shearStudFu);
                    speckleProperty2D.SlabDepth      = slabDepth;
                    speckleProperty2D.ShearStudDia   = shearStudDia;
                    speckleProperty2D.ShearStudFu    = shearStudFu;
                    speckleProperty2D.RibDepth       = ribDepth;
                    speckleProperty2D.RibWidthTop    = ribWidthTop;
                    speckleProperty2D.RibWidthBot    = ribWidthBot;
                    speckleProperty2D.RibSpacing     = ribSpacing;
                    speckleProperty2D.ShearThickness = shearThickness;
                    speckleProperty2D.UnitWeight     = unitWeight;
                    speckleProperty2D.ShearStudHt    = shearStudHt;
                    speckleProperty2D.deckType       = Structural.ETABS.Analysis.DeckType.Filled;
                    setProperties(speckleProperty2D, matProp, thickness, property);
                    speckleProperty2D.type2D        = Structural.ETABS.Analysis.ETABSPropertyType2D.Deck;
                    speckleProperty2D.shellType     = speckleShellType;
                    speckleProperty2D.applicationId = GUID;
                    return(speckleProperty2D);
                }
                else if (deckType == eDeckType.Unfilled)
                {
                    var speckleProperty2D = new ETABSProperty2D.DeckUnFilled();
                    Model.PropArea.GetDeckUnfilled(property,
                                                   ref ribDepth,
                                                   ref ribWidthTop,
                                                   ref ribWidthBot,
                                                   ref ribSpacing,
                                                   ref shearThickness,
                                                   ref unitWeight);
                    speckleProperty2D.RibDepth       = ribDepth;
                    speckleProperty2D.RibWidthTop    = ribWidthTop;
                    speckleProperty2D.RibWidthBot    = ribWidthBot;
                    speckleProperty2D.RibSpacing     = ribSpacing;
                    speckleProperty2D.ShearThickness = shearThickness;
                    speckleProperty2D.UnitWeight     = unitWeight;
                    speckleProperty2D.deckType       = Structural.ETABS.Analysis.DeckType.Filled;
                    setProperties(speckleProperty2D, matProp, thickness, property);
                    speckleProperty2D.type2D        = Structural.ETABS.Analysis.ETABSPropertyType2D.Deck;
                    speckleProperty2D.shellType     = speckleShellType;
                    speckleProperty2D.applicationId = GUID;
                    return(speckleProperty2D);
                }
                else if (deckType == eDeckType.SolidSlab)
                {
                    var speckleProperty2D = new ETABSProperty2D.DeckSlab();
                    Model.PropArea.GetDeckSolidSlab(property, ref slabDepth, ref shearStudDia, ref shearStudDia, ref shearStudFu);
                    speckleProperty2D.SlabDepth    = slabDepth;
                    speckleProperty2D.ShearStudDia = shearStudDia;
                    speckleProperty2D.ShearStudFu  = shearStudFu;
                    speckleProperty2D.ShearStudHt  = shearStudHt;
                    speckleProperty2D.deckType     = Structural.ETABS.Analysis.DeckType.SolidSlab;
                    setProperties(speckleProperty2D, matProp, thickness, property);
                    speckleProperty2D.type2D        = Structural.ETABS.Analysis.ETABSPropertyType2D.Deck;
                    speckleProperty2D.shellType     = speckleShellType;
                    speckleProperty2D.applicationId = GUID;
                    return(speckleProperty2D);
                }
            }
            int s = Model.PropArea.GetSlab(property, ref slabType, ref shellType, ref matProp, ref thickness, ref color, ref notes, ref GUID);

            if (s == 0)
            {
                var specklePropery2DSlab = new ETABSProperty2D();
                setProperties(specklePropery2DSlab, matProp, thickness, property);
                specklePropery2DSlab.type2D = Structural.ETABS.Analysis.ETABSPropertyType2D.Slab;
                double overallDepth     = 0;
                double slabThickness    = 0;
                double stemWidthTop     = 0;
                double stemWidthBot     = 0;
                double ribSpacingDir1   = 0;
                double ribSpacingDir2   = 0;
                double ribSpacing       = 0;
                int    ribParrallelTo   = 0;
                var    speckleShellType = ConvertShellType(shellType);
                if (slabType == eSlabType.Waffle)
                {
                    var speckleProperty2D = new ETABSProperty2D.WaffleSlab();
                    Model.PropArea.GetSlabWaffle(property, ref overallDepth, ref slabThickness, ref stemWidthTop, ref stemWidthBot, ref ribSpacingDir1, ref ribSpacingDir2);
                    speckleProperty2D.OverAllDepth   = overallDepth;
                    speckleProperty2D.StemWidthBot   = stemWidthBot;
                    speckleProperty2D.StemWidthTop   = stemWidthTop;
                    speckleProperty2D.RibSpacingDir1 = ribSpacingDir1;
                    speckleProperty2D.RibSpacingDir2 = ribSpacingDir2;
                    speckleProperty2D.slabType       = Structural.ETABS.Analysis.SlabType.Waffle;
                    speckleProperty2D.deckType       = Structural.ETABS.Analysis.DeckType.Null;
                    setProperties(speckleProperty2D, matProp, thickness, property);
                    speckleProperty2D.shellType     = speckleShellType;
                    speckleProperty2D.applicationId = GUID;
                    return(speckleProperty2D);
                }
                else if (slabType == eSlabType.Ribbed)
                {
                    var speckleProperty2D = new ETABSProperty2D.RibbedSlab();
                    Model.PropArea.GetSlabRibbed(property, ref overallDepth, ref slabThickness, ref stemWidthTop, ref stemWidthBot, ref ribSpacing, ref ribParrallelTo);
                    speckleProperty2D.OverAllDepth   = overallDepth;
                    speckleProperty2D.StemWidthBot   = stemWidthBot;
                    speckleProperty2D.StemWidthTop   = stemWidthTop;
                    speckleProperty2D.RibSpacing     = ribSpacing;
                    speckleProperty2D.RibsParallelTo = ribParrallelTo;
                    speckleProperty2D.slabType       = Structural.ETABS.Analysis.SlabType.Ribbed;
                    speckleProperty2D.deckType       = Structural.ETABS.Analysis.DeckType.Null;
                    setProperties(speckleProperty2D, matProp, thickness, property);
                    speckleProperty2D.shellType     = speckleShellType;
                    speckleProperty2D.applicationId = GUID;
                    return(speckleProperty2D);
                }
                else
                {
                    switch (slabType)
                    {
                    case eSlabType.Slab:
                        specklePropery2DSlab.slabType = Structural.ETABS.Analysis.SlabType.Slab;
                        break;

                    case eSlabType.Drop:
                        specklePropery2DSlab.slabType = Structural.ETABS.Analysis.SlabType.Drop;
                        break;

                    case eSlabType.Mat:
                        specklePropery2DSlab.slabType = Structural.ETABS.Analysis.SlabType.Mat;
                        break;

                    case eSlabType.Footing:
                        specklePropery2DSlab.slabType = Structural.ETABS.Analysis.SlabType.Footing;
                        break;

                    default:
                        specklePropery2DSlab.slabType = Structural.ETABS.Analysis.SlabType.Null;
                        break;
                    }
                    specklePropery2DSlab.deckType      = Structural.ETABS.Analysis.DeckType.Null;
                    specklePropery2DSlab.shellType     = speckleShellType;
                    specklePropery2DSlab.applicationId = GUID;
                    return(specklePropery2DSlab);
                }
            }
            return(null);
        }
예제 #18
0
        /***************************************************/
        /***    Create Methods                           ***/
        /***************************************************/

        private bool CreateObject(ISurfaceProperty property2d)
        {
            bool success = true;
            int  retA    = 0;

            string propertyName = property2d.DescriptionOrName();

            SetAdapterId(property2d, propertyName);

            string materialName = "";

            if (CheckPropertyWarning(property2d, p => p.Material))
            {
                materialName = GetAdapterId <string>(property2d.Material) ?? "";
            }

            eShellType shellType = ShellTypeToCSI(property2d);

            if (property2d.GetType() == typeof(Waffle))
            {
                Waffle waffleProperty = (Waffle)property2d;
                m_model.PropArea.SetSlab(propertyName, eSlabType.Waffle, shellType, materialName, waffleProperty.Thickness);
                retA = m_model.PropArea.SetSlabWaffle(propertyName, waffleProperty.TotalDepthX, waffleProperty.Thickness, waffleProperty.StemWidthX, waffleProperty.StemWidthX, waffleProperty.SpacingX, waffleProperty.SpacingY);
            }
            else if (property2d.GetType() == typeof(Ribbed))
            {
                Ribbed ribbedProperty = (Ribbed)property2d;
                m_model.PropArea.SetSlab(propertyName, eSlabType.Ribbed, shellType, materialName, ribbedProperty.Thickness);
                retA = m_model.PropArea.SetSlabRibbed(propertyName, ribbedProperty.TotalDepth, ribbedProperty.Thickness, ribbedProperty.StemWidth, ribbedProperty.StemWidth, ribbedProperty.Spacing, (int)ribbedProperty.Direction);
            }
            else if (property2d.GetType() == typeof(LoadingPanelProperty))
            {
                retA = m_model.PropArea.SetSlab(propertyName, eSlabType.Slab, shellType, materialName, 0);
            }
            else if (property2d.GetType() == typeof(ConstantThickness))
            {
                ConstantThickness constantThickness = (ConstantThickness)property2d;
                if (constantThickness.PanelType == PanelType.Wall)
                {
                    retA = m_model.PropArea.SetWall(propertyName, eWallPropType.Specified, shellType, materialName, constantThickness.Thickness);
                }
                else
                {
                    retA = m_model.PropArea.SetSlab(propertyName, eSlabType.Slab, shellType, materialName, constantThickness.Thickness);
                }
            }

            SurfacePropertyModifier modifier = property2d.FindFragment <SurfacePropertyModifier>();

            if (modifier != null)
            {
                double[] modifiers = new double[] { modifier.FXX, modifier.FYY, modifier.FXY, modifier.MXX, modifier.MYY, modifier.MXY, modifier.VXZ, modifier.VYZ, modifier.Mass, modifier.Weight };
                m_model.PropArea.SetModifiers(propertyName, ref modifiers);
            }

            if (retA != 0)
            {
                success = false;
            }

            return(success);
        }
예제 #19
0
        //Define a new Slab_Section object
        public static Slab_Section DefineSlabSection(string SectionName, string MaterialProperty, double Thickness, Shell_Stiffness_Modifier Stiffness_Modifier, eSlabType SlabType, eShellType ShellType)
        {
            Slab_Section SlabSec = new Slab_Section(SectionName, MaterialProperty, Thickness, Stiffness_Modifier, SlabType, ShellType);

            return(SlabSec);
        }
예제 #20
0
        /***************************************************/

        private List <ISurfaceProperty> ReadProperty2d(List <string> ids = null)
        {
            List <ISurfaceProperty> propertyList = new List <ISurfaceProperty>();
            int nameCount = 0;

            string[] nameArr = { };

            if (ids == null)
            {
                m_model.PropArea.GetNameList(ref nameCount, ref nameArr);
                ids = nameArr.ToList();
            }

            foreach (string id in ids)
            {
                ISurfaceProperty bhProperty = null;
                eSlabType        slabType   = eSlabType.Slab;
                eShellType       shellType  = eShellType.ShellThin;
                eWallPropType    wallType   = eWallPropType.Specified;
                string           material   = "";
                double           thickness  = 0;
                int      colour             = 0;
                string   notes           = "";
                string   guid            = "";
                double   depth           = 0;
                double   stemWidthTop    = 0;
                double   stemWidthBottom = 0;//not used
                double   ribSpacing      = 0;
                double   ribSpacing2nd   = 0;
                int      direction       = 0;
                double[] modifiers       = new double[] { };
                bool     hasModifiers    = false;

                int ret = m_model.PropArea.GetSlab(id, ref slabType, ref shellType, ref material, ref thickness, ref colour, ref notes, ref guid);
                if (ret != 0)
                {
                    m_model.PropArea.GetWall(id, ref wallType, ref shellType, ref material, ref thickness, ref colour, ref notes, ref guid);
                }

                if (m_model.PropArea.GetModifiers(id, ref modifiers) == 0)
                {
                    hasModifiers = true;
                }

                if (wallType == eWallPropType.AutoSelectList)
                {
                    string[] propList        = null;
                    string   currentProperty = "";

                    m_model.PropArea.GetWallAutoSelectList(id, ref propList, ref currentProperty);
                    m_model.PropArea.GetWall(currentProperty, ref wallType, ref shellType, ref material, ref thickness, ref colour, ref notes, ref guid);

                    ConstantThickness panelConstant = new ConstantThickness();
                    panelConstant.Name = currentProperty;
                    panelConstant.CustomData[AdapterId] = id;
                    panelConstant.Material = ReadMaterials(new List <string>()
                    {
                        material
                    })[0];
                    panelConstant.Thickness = thickness;
                    panelConstant.PanelType = PanelType.Wall;
                    SetShellType(panelConstant, shellType);
                    if (hasModifiers)
                    {
                        panelConstant.CustomData.Add("Modifiers", modifiers);
                    }

                    propertyList.Add(panelConstant);
                }
                else
                {
                    switch (slabType)
                    {
                    case eSlabType.Ribbed:
                        Ribbed panelRibbed = new Ribbed();

                        m_model.PropArea.GetSlabRibbed(id, ref depth, ref thickness, ref stemWidthTop, ref stemWidthBottom, ref ribSpacing, ref direction);
                        panelRibbed.Name = id;
                        panelRibbed.CustomData[AdapterId] = id;
                        panelRibbed.Material = ReadMaterials(new List <string>()
                        {
                            material
                        })[0];
                        panelRibbed.Thickness  = thickness;
                        panelRibbed.PanelType  = PanelType.Slab;
                        panelRibbed.Direction  = (PanelDirection)direction;
                        panelRibbed.Spacing    = ribSpacing;
                        panelRibbed.StemWidth  = stemWidthTop;
                        panelRibbed.TotalDepth = depth;
                        SetShellType(panelRibbed, shellType);
                        if (hasModifiers)
                        {
                            panelRibbed.CustomData.Add("Modifiers", modifiers);
                        }

                        propertyList.Add(panelRibbed);
                        break;

                    case eSlabType.Waffle:
                        Waffle panelWaffle = new Waffle();

                        m_model.PropArea.GetSlabWaffle(id, ref depth, ref thickness, ref stemWidthTop, ref stemWidthBottom, ref ribSpacing, ref ribSpacing2nd);
                        panelWaffle.Name = id;
                        panelWaffle.CustomData[AdapterId] = id;
                        panelWaffle.Material = ReadMaterials(new List <string>()
                        {
                            material
                        })[0];
                        panelWaffle.SpacingX    = ribSpacing;
                        panelWaffle.SpacingY    = ribSpacing2nd;
                        panelWaffle.StemWidthX  = stemWidthTop;
                        panelWaffle.StemWidthY  = stemWidthTop;    //ETABS does not appear to support direction dependent stem width
                        panelWaffle.Thickness   = thickness;
                        panelWaffle.TotalDepthX = depth;
                        panelWaffle.TotalDepthY = depth;     // ETABS does not appear to to support direction dependent depth
                        panelWaffle.PanelType   = PanelType.Slab;
                        SetShellType(panelWaffle, shellType);
                        if (hasModifiers)
                        {
                            panelWaffle.CustomData.Add("Modifiers", modifiers);
                        }

                        propertyList.Add(panelWaffle);
                        break;

                    case eSlabType.Slab:
                    case eSlabType.Drop:
                    case eSlabType.Stiff_DO_NOT_USE:
                    default:
                        ConstantThickness panelConstant = new ConstantThickness();
                        panelConstant.CustomData[AdapterId] = id;
                        panelConstant.Name     = id;
                        panelConstant.Material = ReadMaterials(new List <string>()
                        {
                            material
                        })[0];
                        panelConstant.Thickness = thickness;
                        panelConstant.Name      = id;
                        panelConstant.PanelType = PanelType.Slab;
                        SetShellType(panelConstant, shellType);
                        if (hasModifiers)
                        {
                            panelConstant.CustomData.Add("Modifiers", modifiers);
                        }

                        propertyList.Add(panelConstant);
                        break;
                    }
                }
            }

            return(propertyList);
        }
예제 #21
0
        //Define a new Wall_Section object
        public static Wall_Section DefineWallSection(string SectionName, string MaterialProperty, double Thickness, Shell_Stiffness_Modifier Stiffness_Modifier, eShellType ShellType)
        {
            Wall_Section WallSec = new Wall_Section(SectionName, MaterialProperty, Thickness, Stiffness_Modifier, ShellType);

            return(WallSec);
        }
예제 #22
0
        /***************************************************/
        /***    Read Methods                             ***/
        /***************************************************/

        private List <ISurfaceProperty> ReadSurfaceProperty(List <string> ids = null)
        {
            List <ISurfaceProperty> propertyList = new List <ISurfaceProperty>();

            Dictionary <string, IMaterialFragment> bhomMaterials = ReadMaterial().ToDictionary(x => GetAdapterId <string>(x));

            int nameCount = 0;

            string[] nameArr = { };
            m_model.PropArea.GetNameList(ref nameCount, ref nameArr);

            ids = FilterIds(ids, nameArr);

            foreach (string id in ids)
            {
                eSlabType     slabType        = eSlabType.Slab;
                eShellType    shellType       = eShellType.ShellThin;
                eWallPropType wallType        = eWallPropType.Specified;
                string        material        = "";
                double        thickness       = 0;
                int           colour          = 0;
                string        notes           = "";
                string        guid            = null;
                double        depth           = 0;
                double        stemWidthTop    = 0;
                double        stemWidthBottom = 0;//not used
                double        ribSpacing      = 0;
                double        ribSpacing2nd   = 0;
                int           direction       = 0;
                double[]      modifiers       = new double[] { };


                int ret = m_model.PropArea.GetSlab(id, ref slabType, ref shellType, ref material, ref thickness, ref colour, ref notes, ref guid);
                if (ret != 0)
                {
                    m_model.PropArea.GetWall(id, ref wallType, ref shellType, ref material, ref thickness, ref colour, ref notes, ref guid);
                }

                SurfacePropertyModifier modifier = null;
                if (m_model.PropArea.GetModifiers(id, ref modifiers) == 0 && modifiers != null && modifiers.Length == 10 && modifiers.Any(x => x != 1))
                {
                    modifier = new SurfacePropertyModifier
                    {
                        FXX    = modifiers[0],
                        FYY    = modifiers[1],
                        FXY    = modifiers[2],
                        MXX    = modifiers[3],
                        MYY    = modifiers[4],
                        MXY    = modifiers[5],
                        VXZ    = modifiers[6],
                        VYZ    = modifiers[7],
                        Mass   = modifiers[8],
                        Weight = modifiers[9]
                    };
                }

                IMaterialFragment bhMaterial = null;

                try
                {
                    bhMaterial = bhomMaterials[material];
                }
                catch (Exception)
                {
                    Engine.Base.Compute.RecordNote("Could not get material from ETABS. Material for surface property " + id + " will be null");
                }

                if (wallType == eWallPropType.AutoSelectList)
                {
                    string[] propList        = null;
                    string   currentProperty = "";

                    m_model.PropArea.GetWallAutoSelectList(id, ref propList, ref currentProperty);
                    m_model.PropArea.GetWall(currentProperty, ref wallType, ref shellType, ref material, ref thickness, ref colour, ref notes, ref guid);

                    ConstantThickness panelConstant = new ConstantThickness();
                    panelConstant.Name      = currentProperty;
                    panelConstant.Material  = bhMaterial;
                    panelConstant.Thickness = thickness;
                    panelConstant.PanelType = PanelType.Wall;
                    SetShellType(panelConstant, shellType);
                    if (modifier != null)
                    {
                        panelConstant.Fragments.Add(modifier);
                    }

                    SetAdapterId(panelConstant, id);
                    propertyList.Add(panelConstant);
                }
                else
                {
                    switch (slabType)
                    {
                    case eSlabType.Ribbed:
                        Ribbed panelRibbed = new Ribbed();

                        m_model.PropArea.GetSlabRibbed(id, ref depth, ref thickness, ref stemWidthTop, ref stemWidthBottom, ref ribSpacing, ref direction);
                        panelRibbed.Name       = id;
                        panelRibbed.Material   = bhMaterial;
                        panelRibbed.Thickness  = thickness;
                        panelRibbed.PanelType  = PanelType.Slab;
                        panelRibbed.Direction  = (PanelDirection)direction;
                        panelRibbed.Spacing    = ribSpacing;
                        panelRibbed.StemWidth  = stemWidthTop;
                        panelRibbed.TotalDepth = depth;
                        SetShellType(panelRibbed, shellType);
                        if (modifier != null)
                        {
                            panelRibbed.Fragments.Add(modifier);
                        }

                        SetAdapterId(panelRibbed, id);
                        propertyList.Add(panelRibbed);
                        break;

                    case eSlabType.Waffle:
                        Waffle panelWaffle = new Waffle();

                        m_model.PropArea.GetSlabWaffle(id, ref depth, ref thickness, ref stemWidthTop, ref stemWidthBottom, ref ribSpacing, ref ribSpacing2nd);
                        panelWaffle.Name        = id;
                        panelWaffle.Material    = bhMaterial;
                        panelWaffle.SpacingX    = ribSpacing;
                        panelWaffle.SpacingY    = ribSpacing2nd;
                        panelWaffle.StemWidthX  = stemWidthTop;
                        panelWaffle.StemWidthY  = stemWidthTop;    //ETABS does not appear to support direction dependent stem width
                        panelWaffle.Thickness   = thickness;
                        panelWaffle.TotalDepthX = depth;
                        panelWaffle.TotalDepthY = depth;     // ETABS does not appear to to support direction dependent depth
                        panelWaffle.PanelType   = PanelType.Slab;
                        SetShellType(panelWaffle, shellType);
                        if (modifier != null)
                        {
                            panelWaffle.Fragments.Add(modifier);
                        }

                        SetAdapterId(panelWaffle, id);
                        propertyList.Add(panelWaffle);
                        break;

                    case eSlabType.Slab:
                    case eSlabType.Drop:
                    case eSlabType.Stiff_DO_NOT_USE:
                    default:
                        ConstantThickness panelConstant = new ConstantThickness();
                        panelConstant.Name      = id;
                        panelConstant.Material  = bhMaterial;
                        panelConstant.Thickness = thickness;
                        panelConstant.Name      = id;
                        panelConstant.PanelType = PanelType.Slab;
                        SetShellType(panelConstant, shellType);
                        if (modifier != null)
                        {
                            panelConstant.Fragments.Add(modifier);
                        }

                        SetAdapterId(panelConstant, id);
                        propertyList.Add(panelConstant);
                        break;
                    }
                }
            }

            return(propertyList);
        }
예제 #23
0
 // eShellType
 internal static CSiProgram.eShellType ToCSi(eShellType enumValue)
 {
     return((CSiProgram.eShellType)enumValue);
 }