private void btn_analyse_Click(object sender, RoutedEventArgs e)
        {
            //SaveFileDialog saveFileDialog = new SaveFileDialog();
            //if (saveFileDialog.ShowDialog() == true)
            //    File.WriteAllText(saveFileDialog.FileName, txtEditor.Text);

            /*-----------Initialize Model-----------*/
            //file Path and file Name
            string filePath = "C:\\CSiAPIexample";
            string fileName = "Model1";

            //Create Sap Model
            AnalysisMapping.mySapModel = new SapModel(filePath, fileName);
            //initialize Model units KN, m, C:
            AnalysisMapping.mySapModel.InitializeUnits(eUnits.kN_m_C);
            /*-----------------------------------------------------------*/
            AnalysisMapping.CalcSpanValues(FlexureSpanComboBox, ShearSpanComboBox);
            AnalysisMapping.CalcComSpanValues();
            SapMaterial concMat = AnalysisMapping.CreateConcMat(MaterialEditorVM.Material.Fcu);

            AnalysisMapping.CreateSapSections(SectionEditorVM.Sections, concMat);
            AnalysisMapping.CreateSapPoints();
            AnalysisMapping.CreateXbeams();
            AnalysisMapping.InitializeSuports();
            AnalysisMapping.AddLoadPatterns();
            AnalysisMapping.AddLoadCombinations();
            AnalysisMapping.AddDistributedLoads();
            AnalysisMapping.AddPointLoads();
            AnalysisMapping.RunModel(DesignCombinationComboBox);
        }
        public static SapMaterial CreateConcMat(double fcu)
        {
            //fcuName = fcutxtBox.Text
            //Concrete
            SapMaterial concMat = new SapMaterial(mySapModel.MySapObjectModel, $"Fcu{fcu}", eMatType.Concrete);

            concMat.SetNewMaterial($"Fcu{fcu}", eMatType.Concrete);
            concMat.SetConcMat($"Fcu{fcu}", Convert.ToDouble(fcu));
            concMat.SetIsotropicProps($"Fcu{fcu}", 220000, 0.20, 9.900E-06);
            concMat.SetWeight($"Fcu{fcu}", 25);

            return(concMat);
        }
Exemple #3
0
        private void button1_Click(object sender, EventArgs e)
        {
            var currentText = button1.Text;

            button1.Text    = "Please Wait";
            button1.Enabled = false;
            SapModel model = new SapModel(@"SapModel", visible, "TestRun");

            model.Initialize(SapUnits.Ton_m_C);
            SapMaterial ST = new SapMaterial(model.SapObjectModel, "ST52/3", MaterialType.STEEL);

            ST.SetDefaultSteel();
            SapSteelSection  section1  = new SapSteelSection(model.SapObjectModel, ST, 1.3, 0.45, 0.04, 0.015, 0.04, 0.45, "ST1500x550");
            SapSteelSection  section2  = new SapSteelSection(model.SapObjectModel, ST, 0.7, 0.35, 0.04, 0.015, 0.04, 0.35, "ST800x500");
            FactoryOptimizer optimizer = new FactoryOptimizer(model, section1, section2, numberOfIterations, populationSize, eliteCount, richTextBox1);

            optimizer.Start();
            Process.Start(@"SapModel");
            button1.Text    = currentText;
            button1.Enabled = true;
        }
        //Create Sections
        public static void CreateSapSections(ObservableCollection <SectionEditorVM> Sections, SapMaterial concMat)
        {
            SapSectionsArr = new SapRectSection[Sections.Count];

            for (int i = 0; i < Sections.Count; i++)
            {
                SapSectionsArr[i] = new SapRectSection(mySapModel.MySapObjectModel
                                                       , $"B{Convert.ToDouble(Sections[i].Width)}X{Convert.ToDouble(Sections[i].Depth)}"
                                                       , concMat, Convert.ToDouble(Sections[i].Width)
                                                       , Convert.ToDouble(Sections[i].Depth), -1);


                SapSectionsArr[i].SetRectSec();
            }
        }
        private void analysisBtn_Click(object sender, RoutedEventArgs e)
        {
            //file Path and file Name
            string filePath = "C:\\CSiAPIexample";
            string fileName = "Model1";

            //Create Sap Model
            mySapModel = new SapModel(filePath, fileName);
            //initialize Model units KN, m, C:
            mySapModel.InitializeUnits(eUnits.kN_m_C);
            /*----------------------------------------------------------*/
            /*-----------------------Create Material-----------------------*/
            //Concrete
            SapMaterial concMat = new SapMaterial(mySapModel.MySapObjectModel, $"Fcu{fcutxtBox.Text}", eMatType.Concrete);

            concMat.SetNewMaterial($"Fcu{fcutxtBox.Text}", eMatType.Concrete);
            concMat.SetConcMat($"Fcu{fcutxtBox.Text}", Convert.ToDouble(fcutxtBox.Text));
            concMat.SetIsotropicProps($"Fcu{fcutxtBox.Text}", 220000, 0.20, 9.900E-06);
            concMat.SetWeight($"Fcu{fcutxtBox.Text}", 25);

            //Steel Rebar Material
            //SapMaterial rebarMat = new SapMaterial(mySapModel.MySapObjectModel, )

            /*----------------------------------------------------------*/

            //Creating Sections
            B = new SapRectSection(mySapModel.MySapObjectModel, $"B{Convert.ToDouble(btxtBox.Text)}X{Convert.ToDouble(ttxtBox.Text)}"
                                   , concMat, Convert.ToDouble(btxtBox.Text)
                                   , Convert.ToDouble(ttxtBox.Text), -1);
            B.SetRectSec();

            /*----------------------------------------------------------*/

            //Points

            points = new SapPoint[nSpans + 1];
            for (int i = 0; i < nSpans + 1; i++)
            {
                points[i] = new SapPoint(mySapModel.MySapObjectModel, comSpanValues[i], 0, 0);
            }
            /*----------------------------------------------------------*/

            //Beams in X-Direction:
            xbeams = new SapFrameElement[nSpans];
            for (int i = 0; i < nSpans; i++)
            {
                xbeams[i] = new SapFrameElement(mySapModel.MySapObjectModel, points[i], points[i + 1], B, $"{i + 1}", $"B{i + 1}");
            }
            /*----------------------------------------------------------*/

            //Initialize hinged joints
            for (int i = 0; i < nSpans + 1; i++)
            {
                points[i].SetRestraints(Restraints.Hinged);
            }

            //xBeamsComboBox.ItemsSource = xbeams;
            //xBeamsComboBox.SelectedIndex = 0;

            /*----------------------Load Patterns----------------------*/
            for (int i = 0; i < loadPatternName.Count; i++)
            {
                SapLoadPattern load = new SapLoadPattern(mySapModel.MySapObjectModel, patternType[i], loadPatternName[i]
                                                         , SelfWtMultiplier[i], true);

                loadPatterns.Add(load);
                load.AddLoadPattern();
            }
            /*----------------------Load Combinations----------------------*/
            for (int i = 0; i < Combinations.Count; i++)
            {
                mySapModel.MySapObjectModel.RespCombo.Add(Combinations[i], 0);

                mySapModel.MySapObjectModel.RespCombo.SetCaseList(Combinations[i], ref ec, loadCaseName[i]
                                                                  , loadFactorList[i]);
            }
            /*----------------------Adding Distributed Loads----------------------*/
            for (int i = 0; i < distLoadVals.Count; i++)
            {
                SapFrameElement item    = null;
                SapLoadPattern  loadPat = null;
                for (int j = 0; j < nSpans; j++)
                {
                    if (DistLoadFrameElement[i] == xbeams[j].Label)
                    {
                        item = xbeams[j];
                    }
                }
                for (int j = 0; j < loadPatterns.Count; j++)
                {
                    if (distLoadPattern[i] == loadPatterns[j].Name)
                    {
                        loadPat = loadPatterns[j];
                    }
                }
                SapFrameDistLoad distload = new SapFrameDistLoad(loadPat, 1, distLoadDirVal[i], 0, 1, distLoadVals[i], distLoadVals[i], true);
                distLoads.Add(distload);

                item.SetDistributedLoad(distload);
            }
            /*----------------------Adding Point Loads----------------------*/
            for (int i = 0; i < concLoadVals.Count; i++)
            {
                SapFrameElement item    = null;
                SapLoadPattern  loadPat = null;
                for (int j = 0; j < nSpans; j++)
                {
                    if (concLoadFrameElement[i] == xbeams[j].Label)
                    {
                        item = xbeams[j];
                    }
                }
                for (int j = 0; j < loadPatterns.Count; j++)
                {
                    if (concLoadPattern[i] == loadPatterns[j].Name)
                    {
                        loadPat = loadPatterns[j];
                    }
                }
                SapPointLoad D1 = new SapPointLoad(loadPat, concLoadVals[i], ConsoleApplication1.Type.Force, concLoadDirVal[i]);

                pointLoads.Add(D1);
                item.SetFramePointLoad(D1, relDistList[i]);
            }
        }