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); }
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); }
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!"); } }
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 } }); }
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); }
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); }
/// <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)); }
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!"); } }