Esempio n. 1
0
 // eFrameDesignOrientation
 internal static CSiProgram.eFrameDesignOrientation ToCSi(eFrameDesignOrientation enumValue)
 {
     return((CSiProgram.eFrameDesignOrientation)enumValue);
 }
Esempio n. 2
0
        public ETABSElement1D FrameToSpeckle(string name)
        {
            string units = ModelUnits();

            var speckleStructFrame = new ETABSElement1D();

            speckleStructFrame.name = name;
            string pointI, pointJ;

            pointI = pointJ = null;
            _      = Model.FrameObj.GetPoints(name, ref pointI, ref pointJ);
            var pointINode = PointToSpeckle(pointI);
            var pointJNode = PointToSpeckle(pointJ);

            speckleStructFrame.end1Node = pointINode;
            speckleStructFrame.end2Node = pointJNode;
            var speckleLine = new Line();

            if (units != null)
            {
                speckleLine = new Line(pointINode.basePoint, pointJNode.basePoint, units);
            }
            else
            {
                speckleLine = new Line(pointINode.basePoint, pointJNode.basePoint);
            }
            speckleStructFrame.baseLine = speckleLine;
            eFrameDesignOrientation frameDesignOrientation = eFrameDesignOrientation.Null;

            Model.FrameObj.GetDesignOrientation(name, ref frameDesignOrientation);
            switch (frameDesignOrientation)
            {
            case eFrameDesignOrientation.Column:
            {
                speckleStructFrame.type = ElementType1D.Column;
                break;
            }

            case eFrameDesignOrientation.Beam:
            {
                speckleStructFrame.type = ElementType1D.Beam;
                break;
            }

            case eFrameDesignOrientation.Brace:
            {
                speckleStructFrame.type = ElementType1D.Brace;
                break;
            }

            case eFrameDesignOrientation.Null:
            {
                speckleStructFrame.type = ElementType1D.Null;
                break;
            }

            case eFrameDesignOrientation.Other:
            {
                speckleStructFrame.type = ElementType1D.Other;
                break;
            }
            }

            bool[] iRelease, jRelease;
            iRelease = jRelease = null;
            double[] startV, endV;
            startV = endV = null;
            Model.FrameObj.GetReleases(name, ref iRelease, ref jRelease, ref startV, ref endV);

            speckleStructFrame.end1Releases = RestraintToSpeckle(iRelease);
            speckleStructFrame.end2Releases = RestraintToSpeckle(jRelease);
            SpeckleModel.restraints.Add(speckleStructFrame.end1Releases);
            SpeckleModel.restraints.Add(speckleStructFrame.end2Releases);


            double localAxis = 0;
            bool   advanced  = false;

            Model.FrameObj.GetLocalAxes(name, ref localAxis, ref advanced);
            speckleStructFrame.orientationAngle = localAxis;


            string property, SAuto;

            property = SAuto = null;
            Model.FrameObj.GetSection(name, ref property, ref SAuto);
            speckleStructFrame.property = Property1DToSpeckle(property);

            double offSetEnd1 = 0;
            double offSetEnd2 = 0;
            double RZ         = 0;
            bool   autoOffSet = true;

            Model.FrameObj.GetEndLengthOffset(name, ref autoOffSet, ref offSetEnd1, ref offSetEnd2, ref RZ);
            //Offset needs to be oriented wrt to 1-axis
            Vector end1Offset = new Vector(0, 0, offSetEnd1, ModelUnits());
            Vector end2Offset = new Vector(0, 0, offSetEnd2, ModelUnits());

            speckleStructFrame.end1Offset = end1Offset;
            speckleStructFrame.end2Offset = end2Offset;

            string springLineName = null;

            Model.FrameObj.GetSpringAssignment(name, ref springLineName);
            if (springLineName != null)
            {
                speckleStructFrame.ETABSLinearSpring = LinearSpringToSpeckle(springLineName);
            }

            string pierAssignment = null;

            Model.FrameObj.GetPier(name, ref pierAssignment);
            if (pierAssignment != null)
            {
                speckleStructFrame.PierAssignment = pierAssignment;
            }

            string spandrelAssignment = null;

            Model.FrameObj.GetSpandrel(name, ref spandrelAssignment);
            if (spandrelAssignment != null)
            {
                speckleStructFrame.SpandrelAssignment = spandrelAssignment;
            }

            int designProcedure = 9;

            Model.FrameObj.GetDesignProcedure(name, ref designProcedure);
            if (designProcedure != 9)
            {
                switch (designProcedure)
                {
                case 0:
                    speckleStructFrame.DesignProcedure = DesignProcedure.ProgramDetermined;
                    break;

                case 1:
                    speckleStructFrame.DesignProcedure = DesignProcedure.SteelFrameDesign;
                    break;

                case 2:
                    speckleStructFrame.DesignProcedure = DesignProcedure.ConcreteFrameDesign;
                    break;

                case 3:
                    speckleStructFrame.DesignProcedure = DesignProcedure.CompositeBeamDesign;
                    break;

                case 4:
                    speckleStructFrame.DesignProcedure = DesignProcedure.SteelJoistDesign;
                    break;

                case 7:
                    speckleStructFrame.DesignProcedure = DesignProcedure.NoDesign;
                    break;

                case 13:
                    speckleStructFrame.DesignProcedure = DesignProcedure.CompositeColumnDesign;
                    break;
                }
            }
            double[] modifiers = new double[] { };
            int      s         = Model.FrameObj.GetModifiers(name, ref modifiers);

            if (s == 0)
            {
                speckleStructFrame.Modifiers = modifiers;
            }

            var GUID = "";

            Model.FrameObj.GetGUID(name, ref GUID);
            speckleStructFrame.applicationId = GUID;
            List <Base>   elements       = SpeckleModel.elements;
            List <string> application_Id = elements.Select(o => o.applicationId).ToList();

            if (!application_Id.Contains(speckleStructFrame.applicationId))
            {
                SpeckleModel.elements.Add(speckleStructFrame);
            }


            return(speckleStructFrame);
        }