Example #1
0
        public ResultSet1D FrameResultSet1dToSpeckle(string elementName)
        {
            List <Result1D> results = new List <Result1D>();

            SetLoadCombinationsForResults();

            // Reference variables for ETABS API
            int numberOfResults = 0;

            string[] obj, elm, loadCase, stepType;
            obj = elm = loadCase = stepType = new string[1];
            double[] objSta, elmSta, stepNum, p, v2, v3, t, m2, m3;
            objSta = elmSta = stepNum = p = v2 = v3 = t = m2 = m3 = new double[1];

            Model.Results.FrameForce(elementName, eItemTypeElm.ObjectElm, ref numberOfResults, ref obj, ref objSta, ref elm, ref elmSta, ref loadCase, ref stepType, ref stepNum, ref p, ref v2, ref v3, ref t, ref m2, ref m3);

            // Value used to normalized output station of forces between 0 and 1
            var lengthOf1dElement = objSta.Max();

            for (int i = 0; i < numberOfResults; i++)
            {
                Result1D result = new Result1D()
                {
                    element           = FrameToSpeckle(elementName),
                    position          = (float)(objSta[i] / lengthOf1dElement),
                    permutation       = loadCase[i],
                    dispX             = 0, // values eventually populated by element.Node.{displacements}
                    dispY             = 0, // values eventually populated by element.Node.{displacements}
                    dispZ             = 0, // values eventually populated by element.Node.{displacements}
                    rotXX             = 0, // values eventually populated by element.Node.{displacements}
                    rotYY             = 0, // values eventually populated by element.Node.{displacements}
                    rotZZ             = 0, // values eventually populated by element.Node.{displacements}
                    forceX            = (float)v3[i],
                    forceY            = (float)v2[i],
                    forceZ            = (float)p[i],
                    momentXX          = (float)m3[i],
                    momentYY          = (float)m2[i],
                    momentZZ          = (float)t[i],
                    axialStress       = 0, // values eventually populated when element1d.section values are available
                    shearStressY      = 0, // values eventually populated when element1d.section values are available
                    shearStressZ      = 0, // values eventually populated when element1d.section values are available
                    bendingStressYPos = 0, // values eventually populated when element1d.section values are available
                    bendingStressYNeg = 0, // values eventually populated when element1d.section values are available
                    bendingStressZPos = 0, // values eventually populated when element1d.section values are available
                    bendingStressZNeg = 0, // values eventually populated when element1d.section values are available
                    combinedStressMax = 0, // values eventually populated when element1d.section values are available
                    combinedStressMin = 0  // values eventually populated when element1d.section values are available
                };

                results.Add(result);
            }

            return(new ResultSet1D()
            {
                results1D = results
            });
        }
Example #2
0
        /// <summary>
        /// Display the result
        /// 1. Create a new sheet
        /// 2. Create two range to display the key and value
        /// 3. Create a chart based the range object
        /// </summary>
        private void Display1DResult(Result1D result1d)
        {
            if (result1d.Keys.Count > 0)
            {
                Excel.Worksheet resultSheet = this.Sheets.Add(missing, missing, missing, missing) as Excel.Worksheet;

                Excel.Range KeyColumnHead = resultSheet.get_Range("A1", missing);
                KeyColumnHead.Value2 = result1d.KeyLabel;

                Excel.Range ValueColumnHead = resultSheet.get_Range("B1", missing);
                ValueColumnHead.Value2 = result1d.ValueLabel;

                Excel.Range headRange = resultSheet.get_Range("A1", "B1");
                headRange.Style = headStyle;
                headRange.EntireColumn.AutoFit( );

                //Bind the data
                float[,] keyvalues = new float[result1d.Keys.Count, 2];
                for (int i = 0; i < result1d.Keys.Count; i++)
                {
                    keyvalues[i, 0] = result1d.Keys[i];
                    keyvalues[i, 1] = result1d.Values[i];
                }

                string      rangeKey   = string.Format("A2:A{0}", result1d.Keys.Count + 1);
                string      rangeValue = string.Format("B2:B{0}", result1d.Values.Count + 1);
                Excel.Range dataRange  = resultSheet.get_Range(rangeKey, rangeValue);
                dataRange.Value2 = keyvalues;
                dataRange.Style  = dataStyle;
                dataRange.EntireColumn.AutoFit( );

                //Add a Chart for the selected data.
                Excel._Chart oChart = (Excel._Chart) this.Charts.Add(Type.Missing, Type.Missing,
                                                                     Type.Missing, Type.Missing);

                //Use the ChartWizard to create a new chart from the selected data.
                Excel.Range oResizeRange = resultSheet.get_Range(rangeValue, missing).get_Resize(
                    result1d.Keys.Count, 1);

                oChart.ChartWizard(oResizeRange, Excel.XlChartType.xlLine, Type.Missing,
                                   Excel.XlRowCol.xlColumns, Type.Missing, Type.Missing, Type.Missing,
                                   Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                oChart.Visible = Microsoft.Office.Interop.Excel.XlSheetVisibility.xlSheetHidden;

                //Configure the format of chart
                ConfigureExcelChartFormat(resultSheet.Name, result1d.ValueLabel, oChart);

                //Position of the chart
                resultSheet.Shapes.Item(1).Top  = (float)(double)oResizeRange.Top;
                resultSheet.Shapes.Item(1).Left = (float)(double)oResizeRange.Left + (float)(double)oResizeRange.Width;
            }
        }
Example #3
0
        public ResultSet1D SpandrelResultSet1dToSpeckle(string elementName)
        {
            List <Result1D> results = new List <Result1D>();

            SetLoadCombinationsForResults();

            // Reference variables for ETABS API
            int numberOfResults = 0;

            string[] storyName, spandrelName, loadCase, location;
            storyName = spandrelName = loadCase = location = new string[1];
            double[] p, v2, v3, t, m2, m3;
            p = v2 = v3 = t = m2 = m3 = new double[1];

            Model.Results.SpandrelForce(ref numberOfResults, ref storyName, ref spandrelName, ref loadCase, ref location, ref p, ref v2, ref v3, ref t, ref m2, ref m3);

            for (int i = 0; i < numberOfResults; i++)
            {
                if (spandrelName[i] == elementName)
                {
                    Result1D result = new Result1D()
                    {
                        element = new Element1D()
                        {
                            name = elementName
                        },                                    // simple new Element1D until conversion class for spandrels is created
                        position          = 0,
                        description       = "Location: " + location[i] + " - " + storyName[i],
                        permutation       = loadCase[i],
                        dispX             = 0, // values eventually populated by element.Node.{displacements}
                        dispY             = 0, // values eventually populated by element.Node.{displacements}
                        dispZ             = 0, // values eventually populated by element.Node.{displacements}
                        rotXX             = 0, // values eventually populated by element.Node.{displacements}
                        rotYY             = 0, // values eventually populated by element.Node.{displacements}
                        rotZZ             = 0, // values eventually populated by element.Node.{displacements}
                        forceX            = (float)v3[i],
                        forceY            = (float)v2[i],
                        forceZ            = (float)p[i],
                        momentXX          = (float)m3[i],
                        momentYY          = (float)m2[i],
                        momentZZ          = (float)t[i],
                        axialStress       = 0, // values eventually populated when element1d.section values are available
                        shearStressY      = 0, // values eventually populated when element1d.section values are available
                        shearStressZ      = 0, // values eventually populated when element1d.section values are available
                        bendingStressYPos = 0, // values eventually populated when element1d.section values are available
                        bendingStressYNeg = 0, // values eventually populated when element1d.section values are available
                        bendingStressZPos = 0, // values eventually populated when element1d.section values are available
                        bendingStressZNeg = 0, // values eventually populated when element1d.section values are available
                        combinedStressMax = 0, // values eventually populated when element1d.section values are available
                        combinedStressMin = 0  // values eventually populated when element1d.section values are available
                    };

                    results.Add(result);
                }
            }

            return(new ResultSet1D()
            {
                results1D = results
            });
        }