示例#1
0
        public SecProp CalculateSecProp()
        {
            List <SecProp> SecPropList = new List <SecProp>();

            foreach (IShape shape in ShapeList)
            {
                SecPropList.Add(shape.CalculateSecProp());
            }
            ;

            return(SectionElements.SecProp_Section(SecPropList));
        }
示例#2
0
        public virtual Coordinate GlobalPointCoordinate(string PointID)
        {
            //Returns the coordinate of defined point
            //takes into account translation (defined by properties xp & yp)
            //and rotation (defined by property theta)
            Coordinate pnt1_shp = LocalPointCoordinate(point);
            Coordinate pnt2_shp = LocalPointCoordinate(PointID);

            Coordinate point1Coordinate = SectionElements.ConvertXYtoCoordinate(xp, yp);

            Coordinate pnt2_global = SectionElements.TransformCoordinate(point1Coordinate, pnt1_shp, pnt2_shp, theta, mirrorX, mirrorY);

            return(pnt2_global);
        }
示例#3
0
        public virtual SecProp CalculateSecProp()
        {
            double E  = Material.E;
            double _E = E;

            if (E == 0)
            {
                _E = 1E-10;
            }
            SecProp SP_shape = ShapeSecProp();

            //find center of gravity
            Coordinate cg_global = GetGlobalCGcoord();
            double     xcg       = cg_global.x;
            double     ycg       = cg_global.y;

            //Shape Section Properties (before rotation)
            double Ixx_sh = SP_shape.EIxx / _E;
            double Iyy_sh = SP_shape.EIyy / _E;
            double Ixy_sh = SP_shape.EIxy / _E;

            //adjust for shape mirroring (if both are true then Ixy_l is positive again)
            if (mirrorX)
            {
                Ixy_sh = -1 * Ixy_sh;
            }

            if (mirrorY)
            {
                Ixy_sh = -1 * Ixy_sh;
            }

            //Local Section Properties (after rotation)
            double[] Irotated = SectionElements.RotatedElementProperties(Ixx_sh, Iyy_sh, Ixy_sh, theta);
            double   Ixx_l    = Irotated[0];
            double   Iyy_l    = Irotated[1];
            double   Ixy_l    = Irotated[2];


            double thetap = SectionElements.Theta_Principal(Ixx_l, Iyy_l, Ixy_l);

            double[] Iprincipal = SectionElements.RotatedAxesProperties(Ixx_l, Iyy_l, Ixy_l, thetap);
            double   I1p        = Iprincipal[0];
            double   I2p        = Iprincipal[1];

            double A = SP_shape.EA / _E;

            SecProp sp = new SecProp
            {
                Xcg    = xcg,
                Ycg    = ycg,
                EA     = E * A,
                EIxx   = E * Ixx_l,
                EIyy   = E * Iyy_l,
                EIxy   = E * Ixy_l,
                EI1p   = E * I1p,
                EI2p   = E * I2p,
                thetap = thetap
            };

            return(sp);
        }