Пример #1
0
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            //
            FemDesign.Model model    = null;
            string          filePath = null;

            // get data
            if (!DA.GetData(0, ref model))
            {
                return;
            }
            if (!DA.GetData(1, ref filePath))
            {
                return;
            }
            if (model == null || filePath == null)
            {
                return;
            }

            // serialize model
            model.SerializeModel(filePath);

            // return true
            DA.SetData(0, true);
        }
Пример #2
0
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            // set references
            FemDesign.Model model = null;
            if (!DA.GetData("FdModel", ref model))
            {
                return;
            }
            if (model == null)
            {
                return;
            }

            List <StructureGrid.Axis> axes;

            if (model.Entities.Axes != null)
            {
                axes = model.Entities.Axes.Axis;
            }
            else
            {
                axes = null;
            }

            List <StructureGrid.Storey> storeys;

            if (model.Entities.Storeys != null)
            {
                storeys = model.Entities.Storeys.Storey;
            }
            else
            {
                storeys = null;
            }

            // return data
            DA.SetData("CountryCode", model.Country.ToString());
            DA.SetDataList("Bars", model.Entities.Bars);
            DA.SetDataList("FictitiousBars", model.Entities.AdvancedFem.FictitiousBars);
            DA.SetDataList("Shells", model.Entities.Slabs);
            DA.SetDataList("FictitiousShells", model.Entities.AdvancedFem.FictitiousShells);
            DA.SetDataList("Diaphragms", model.Entities.AdvancedFem.Diaphragms);
            DA.SetDataList("Panels", model.Entities.Panels);
            DA.SetDataList("Covers", model.Entities.AdvancedFem.Covers);
            DA.SetDataList("Loads", model.Entities.Loads.GetLoads());
            DA.SetDataList("LoadCases", model.Entities.Loads.LoadCases);
            DA.SetDataList("LoadCombinations", model.Entities.Loads.LoadCombinations);
            DA.SetDataList("LoadGroups", model.Entities.Loads.GetLoadGroups());
            DA.SetDataList("Supports", model.Entities.Supports.GetSupports());
            DA.SetDataList("Axes", axes);
            DA.SetDataList("Storeys", storeys);
        }
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            // set references
            FemDesign.Model model = null;
            if (!DA.GetData(0, ref model))
            {
                return;
            }
            if (model == null)
            {
                return;
            }

            List <StructureGrid.Axis> axes;

            if (model.Entities.Axes != null)
            {
                axes = model.Entities.Axes.Axis;
            }
            else
            {
                axes = null;
            }

            List <StructureGrid.Storey> storeys;

            if (model.Entities.Storeys != null)
            {
                storeys = model.Entities.Storeys.Storey;
            }
            else
            {
                storeys = null;
            }

            // return data
            DA.SetData(0, model.Country);
            DA.SetDataList(1, model.Entities.Bars);
            DA.SetDataList(2, model.Entities.AdvancedFem.FictitiousBars);
            DA.SetDataList(3, model.Entities.Slabs);
            DA.SetDataList(4, model.Entities.AdvancedFem.FictitiousShells);
            DA.SetDataList(5, model.Entities.Panels);
            DA.SetDataList(6, model.Entities.AdvancedFem.Covers);
            DA.SetDataList(7, model.Entities.Loads.GetLoads());
            DA.SetDataList(8, model.Entities.Loads.LoadCases);
            DA.SetDataList(9, model.Entities.Loads.LoadCombinations);
            DA.SetDataList(10, model.Entities.Supports.GetSupports());
            DA.SetDataList(11, axes);
            DA.SetDataList(12, storeys);
        }
Пример #4
0
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            //
            FemDesign.Model model            = null;
            string          filePath         = null;
            bool            closeOpenWindows = false;

            // get data
            if (!DA.GetData(0, ref model))
            {
                return;
            }
            if (!DA.GetData(1, ref filePath))
            {
                return;
            }
            if (!DA.GetData(2, ref closeOpenWindows))
            {
                // pass
            }

            bool runNode = true;

            if (!DA.GetData(3, ref runNode))
            {
                // pass
            }

            if (model == null || filePath == null)
            {
                return;
            }

            //
            if (runNode)
            {
                model.SerializeModel(filePath);
                model.FdApp.OpenStruxml(filePath, closeOpenWindows);
            }
            else
            {
                this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "RunNode is set to false!");
            }
        }
Пример #5
0
        public static Dictionary <string, object> ModelDeconstruct(FemDesign.Model model)
        {
            List <StructureGrid.Axis> axes;

            if (model.Entities.Axes != null)
            {
                axes = model.Entities.Axes.Axis;
            }
            else
            {
                axes = null;
            }

            List <StructureGrid.Storey> storeys;

            if (model.Entities.Storeys != null)
            {
                storeys = model.Entities.Storeys.Storey;
            }
            else
            {
                storeys = null;
            }

            // return
            return(new Dictionary <string, object>
            {
                { "Guid", model.Guid },
                { "CountryCode", model.Country.ToString() },
                { "Bars", model.Entities.Bars },
                { "FictitiousBars", model.Entities.AdvancedFem.FictitiousBars },
                { "Shells", model.Entities.Slabs },
                { "FictitiousShells", model.Entities.AdvancedFem.FictitiousShells },
                { "Diaphragms", model.Entities.AdvancedFem.Diaphragms },
                { "Panels", model.Entities.Panels },
                { "Covers", model.Entities.AdvancedFem.Covers },
                { "Loads", model.Entities.Loads.GetLoads() },
                { "LoadCases", model.Entities.Loads.LoadCases },
                { "LoadCombinations", model.Entities.Loads.LoadCombinations },
                { "Supports", model.Entities.Supports.GetSupports() },
                { "Axes", axes },
                { "Storeys", storeys }
            });
        }
Пример #6
0
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            // get indata
            FemDesign.Model model = null;
            if (!DA.GetData("FdModel", ref model))
            {
                // pass
            }

            List <FemDesign.GenericClasses.IStructureElement> elements = new List <FemDesign.GenericClasses.IStructureElement>();

            DA.GetDataList("Structure Elements", elements);

            List <FemDesign.GenericClasses.ILoadElement> loads = new List <FemDesign.GenericClasses.ILoadElement>();

            DA.GetDataList("Loads", loads);

            List <FemDesign.Loads.LoadCase> loadCases = new List <FemDesign.Loads.LoadCase>();

            DA.GetDataList("LoadCases", loadCases);

            List <FemDesign.Loads.LoadCombination> loadCombinations = new List <FemDesign.Loads.LoadCombination>();

            DA.GetDataList("LoadCombinations", loadCombinations);

            List <FemDesign.Loads.ModelGeneralLoadGroup> loadGroups = new List <FemDesign.Loads.ModelGeneralLoadGroup>();

            DA.GetDataList("LoadGroups", loadGroups);

            bool overwrite = false;

            DA.GetData("Overwrite", ref overwrite);

            var clone = model.DeepClone();

            clone.AddElements(elements, overwrite);
            clone.AddLoads(loads, overwrite);
            clone.AddLoadCases(loadCases, overwrite);
            clone.AddLoadCombinations(loadCombinations, overwrite);
            clone.AddLoadGroupTable(loadGroups, overwrite);


            DA.SetData("FdModel", clone);
        }
Пример #7
0
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            // get indata
            string filePath = null;
            if (!DA.GetData(0, ref filePath))
            {
                return;
            }
            
            if (filePath == null) 
            {
                return;
            }

            //
            FemDesign.Model obj = FemDesign.Model.DeserializeFromFilePath(filePath);

            // return
            DA.SetData(0, obj);

        }
Пример #8
0
 /// <summary>
 /// Internal method to transfer load combination calculation parameters from LoadCombination to Analysis.
 /// </summary>
 /// <param name="model"></param>
 public void SetLoadCombinationCalculationParameters(FemDesign.Model model)
 {
     this.Comb.CombItem.Clear();
     this.Comb.CombItem.AddRange(model.Entities.Loads.LoadCombinations.Select(x => x.CombItem));
 }
Пример #9
0
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            //
            string mode = null;

            FemDesign.Model model    = null;
            string          filePath = null;

            FemDesign.Calculate.Analysis analysis = null;
            FemDesign.Calculate.Design   design   = null;
            List <string> resultTypes             = new List <string>();
            string        docxTemplatePath        = "";
            bool          endSession       = false;
            bool          closeOpenWindows = false;
            bool          runNode          = false;


            // get data
            if (!DA.GetData(0, ref mode))
            {
                return;
            }
            if (!DA.GetData(1, ref model))
            {
                return;
            }
            if (!DA.GetData(2, ref filePath))
            {
                return;
            }
            if (!DA.GetData(3, ref analysis))
            {
                return;
            }
            if (!DA.GetData(4, ref design))
            {
                return;
            }
            if (!DA.GetDataList(5, resultTypes))
            {
                // pass
            }

            var units = Results.UnitResults.Default();

            DA.GetData(6, ref units);

            if (!DA.GetData(7, ref docxTemplatePath))
            {
                // pass
            }
            if (!DA.GetData(8, ref endSession))
            {
                // pass
            }
            if (!DA.GetData(9, ref closeOpenWindows))
            {
                // pass
            }
            if (!DA.GetData(10, ref runNode))
            {
                // pass
            }
            if (mode == null || model == null || filePath == null || analysis == null)
            {
                return;
            }

            // It needs to check if model has been runned
            // Always Return the FeaNode Result
            resultTypes.Insert(0, "FeaNode");
            resultTypes.Insert(1, "FeaBar");
            resultTypes.Insert(2, "FeaShell");


            var _resultTypes = resultTypes.Select(r => GenericClasses.EnumParser.Parse <Results.ResultType>(r));

            var bscPathsFromResultTypes = Calculate.Bsc.BscPathFromResultTypes(_resultTypes, filePath, units);

            bool rtn         = false;
            var  resultsTree = new DataTree <object>();

            Results.FDfea fdFeaModel = null;



            //
            if (runNode)
            {
                model.SerializeModel(filePath);
                analysis.SetLoadCombinationCalculationParameters(model);
                rtn = model.FdApp.RunDesign(mode, filePath, analysis, design, bscPathsFromResultTypes, docxTemplatePath, endSession, closeOpenWindows);


                // Create FdScript
                var fdScript = FemDesign.Calculate.FdScript.ReadStr(filePath, bscPathsFromResultTypes);

                IEnumerable <Results.IResult> results = Enumerable.Empty <Results.IResult>();

                List <Results.FeaNode>  feaNodeRes  = new List <Results.FeaNode>();
                List <Results.FeaBar>   feaBarRes   = new List <Results.FeaBar>();
                List <Results.FeaShell> feaShellRes = new List <Results.FeaShell>();

                if (resultTypes != null && resultTypes.Any())
                {
                    foreach (var cmd in fdScript.CmdListGen)
                    {
                        string path = cmd.OutFile;
                        try
                        {
                            if (path.Contains("FeaNode"))
                            {
                                feaNodeRes = Results.ResultsReader.Parse(path).Cast <Results.FeaNode>().ToList();
                            }
                            else if (path.Contains("FeaBar"))
                            {
                                feaBarRes = Results.ResultsReader.Parse(path).Cast <Results.FeaBar>().ToList();
                            }
                            else if (path.Contains("FeaShell"))
                            {
                                feaShellRes = Results.ResultsReader.Parse(path).Cast <Results.FeaShell>().ToList();
                            }
                            else
                            {
                                var _results = Results.ResultsReader.Parse(path);
                                results = results.Concat(_results);
                            }
                        }
                        catch (Exception e)
                        {
                            throw new Exception(e.InnerException.Message);
                        }
                    }
                }

                fdFeaModel = new FemDesign.Results.FDfea(feaNodeRes, feaBarRes, feaShellRes);

                var resultGroups = results.GroupBy(t => t.GetType()).ToList();

                // Convert Data in DataTree structure
                var i = 0;
                foreach (var resGroup in resultGroups)
                {
                    resultsTree.AddRange(resGroup.AsEnumerable(), new GH_Path(i));
                    i++;
                }
            }
            else
            {
                this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "RunNode is set to false!");
            }

            // Set output
            DA.SetData("FdModel", model);
            DA.SetData("FdFeaModel", fdFeaModel);
            DA.SetDataTree(2, resultsTree);
            DA.SetData(3, rtn);
        }
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            // get indata
            FemDesign.Model model = null;
            DA.GetData("FdModel", ref model);

            List <FemDesign.Bars.Bar> bars = new List <FemDesign.Bars.Bar>();

            DA.GetDataList("Bars", bars);

            List <FemDesign.ModellingTools.FictitiousBar> fictBars = new List <FemDesign.ModellingTools.FictitiousBar>();

            DA.GetDataList("FictitiousBars", fictBars);

            List <FemDesign.Shells.Slab> slabs = new List <FemDesign.Shells.Slab>();

            DA.GetDataList("Shells", slabs);

            List <FemDesign.ModellingTools.FictitiousShell> fictShells = new List <FemDesign.ModellingTools.FictitiousShell>();

            DA.GetDataList("FictitiousShells", fictShells);

            List <FemDesign.Shells.Panel> panels = new List <Shells.Panel>();

            DA.GetDataList("Panels", panels);

            List <FemDesign.Cover> covers = new List <FemDesign.Cover>();

            DA.GetDataList("Covers", covers);

            List <FemDesign.GenericClasses.ILoadElement> loads = new List <FemDesign.GenericClasses.ILoadElement>();

            DA.GetDataList("Loads", loads);

            List <FemDesign.Loads.LoadCase> loadCases = new List <FemDesign.Loads.LoadCase>();

            DA.GetDataList("LoadCases", loadCases);

            List <FemDesign.Loads.LoadCombination> loadCombinations = new List <FemDesign.Loads.LoadCombination>();

            DA.GetDataList("LoadCombinations", loadCombinations);

            List <FemDesign.Loads.ModelGeneralLoadGroup> loadGroups = new List <FemDesign.Loads.ModelGeneralLoadGroup>();

            DA.GetDataList("LoadGroups", loadGroups);

            List <FemDesign.GenericClasses.ISupportElement> supports = new List <FemDesign.GenericClasses.ISupportElement>();

            DA.GetDataList("Supports", supports);

            List <FemDesign.StructureGrid.Storey> storeys = new List <StructureGrid.Storey>();

            DA.GetDataList("Storeys", storeys);

            List <FemDesign.StructureGrid.Axis> axes = new List <StructureGrid.Axis>();

            DA.GetDataList("Axes", axes);

            bool overwrite = false;

            DA.GetData("Overwrite", ref overwrite);


            // Ensure that the component recieves the load cases that are included in the load groups
            bool loadCasesProvided = true;

            if (loadGroups.Any())
            {
                foreach (Loads.ModelGeneralLoadGroup loadGroup in loadGroups)
                {
                    loadCasesProvided = loadGroup.GetLoadCases().All(i => loadCases.Contains(i));
                    if (!loadCasesProvided)
                    {
                        this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Must provide all load cases used in load groups");
                        return;
                    }
                }
            }

            // cast ILoads
            List <object> _loads = loads.Cast <object>().ToList();

            // clone model
            var clone = model.DeepClone();

            clone.AddEntities(bars, fictBars, slabs, fictShells, panels, covers, _loads, loadCases, loadCombinations, supports, storeys, axes, loadGroups, overwrite);

            DA.SetData("FdModel", clone);
        }
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            // get indata
            FemDesign.Model model = null;
            if (!DA.GetData(0, ref model))
            {
                // pass
            }

            List<FemDesign.Bars.Bar> bars = new List<FemDesign.Bars.Bar>();
            if (!DA.GetDataList(1, bars))
            {
                // pass
            }

            List<FemDesign.ModellingTools.FictitiousBar> fictBars = new List<FemDesign.ModellingTools.FictitiousBar>();
            if (!DA.GetDataList(2, fictBars))
            {
                // pass
            }

            List<FemDesign.Shells.Slab> slabs = new List<FemDesign.Shells.Slab>();
            if (!DA.GetDataList(3, slabs))
            {
                // pass
            }

            List<FemDesign.ModellingTools.FictitiousShell> fictShells = new List<FemDesign.ModellingTools.FictitiousShell>();
            if (!DA.GetDataList(4, fictShells))
            {
                // pass
            }

            List<FemDesign.Shells.Panel> panels = new List<Shells.Panel>();
            {
                if (!DA.GetDataList(5, panels))
                {
                    // pass
                }
            }

            List<FemDesign.Cover> covers = new List<FemDesign.Cover>();
            if (!DA.GetDataList(6, covers))
            {
                // pass
            }

            List<FemDesign.GenericClasses.ILoadElement> loads = new List<FemDesign.GenericClasses.ILoadElement>();
            if (!DA.GetDataList(7, loads))
            {
                // pass
            }

            List<FemDesign.Loads.LoadCase> loadCases = new List<FemDesign.Loads.LoadCase>();
            if (!DA.GetDataList(8, loadCases))
            {
                // pass
            }

            List<FemDesign.Loads.LoadCombination> loadCombinations = new List<FemDesign.Loads.LoadCombination>();
            if (!DA.GetDataList(9, loadCombinations))
            {
                // pass
            }

            List<FemDesign.GenericClasses.ISupportElement> supports = new List<FemDesign.GenericClasses.ISupportElement>();
            if (!DA.GetDataList(10, supports))
            {
                // pass
            }

            List<FemDesign.StructureGrid.Storey> storeys = new List<StructureGrid.Storey>();
            if (!DA.GetDataList(11, storeys))
            {
                // pass
            }

            List<FemDesign.StructureGrid.Axis> axes = new List<StructureGrid.Axis>();
            if (!DA.GetDataList(12, axes))
            {
                // pass
            }

            bool overwrite = false;
            if (!DA.GetData(13, ref overwrite))
            {
                // pass
            }

            // cast ILoads
            List<object> _loads = loads.Cast<object>().ToList();

            // clone model
            var clone = model.DeepClone();

            clone.AddEntities(bars, fictBars, slabs, fictShells, panels, covers, _loads, loadCases, loadCombinations, supports, storeys, axes, null, overwrite);

            DA.SetData(0, clone);
        }
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            //
            FemDesign.Model model    = null;
            string          filePath = null;

            FemDesign.Calculate.Analysis analysis = null;
            List <string> bscPath          = new List <string>();
            string        docxTemplatePath = "";
            bool          endSession       = false;
            bool          closeOpenWindows = false;
            bool          runNode          = false;

            // get data
            if (!DA.GetData(0, ref model))
            {
                return;
            }
            if (!DA.GetData(1, ref filePath))
            {
                return;
            }
            if (!DA.GetData(2, ref analysis))
            {
                return;
            }
            if (!DA.GetDataList(3, bscPath))
            {
                // pass
            }
            if (!DA.GetData(4, ref docxTemplatePath))
            {
                // pass
            }
            if (!DA.GetData(5, ref endSession))
            {
                // pass
            }
            if (!DA.GetData(6, ref closeOpenWindows))
            {
                // pass
            }
            if (!DA.GetData(7, ref runNode))
            {
                // pass
            }
            if (model == null || filePath == null || analysis == null)
            {
                return;
            }

            //
            if (runNode)
            {
                model.SerializeModel(filePath);
                analysis.SetLoadCombinationCalculationParameters(model);
                bool rtn = model.FdApp.RunAnalysis(filePath, analysis, bscPath, docxTemplatePath, endSession, closeOpenWindows);
                DA.SetData(0, rtn);
            }
            else
            {
                this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "RunNode is set to false!");
            }
        }