diff --git a/Examples/03 - Concrete Building/03 RFCOM - Concrete Building.rf5 b/Examples/03 - Concrete Building/03 RFCOM - Concrete Building.rf5 index 144793b..ed8da6a 100644 Binary files a/Examples/03 - Concrete Building/03 RFCOM - Concrete Building.rf5 and b/Examples/03 - Concrete Building/03 RFCOM - Concrete Building.rf5 differ diff --git a/Examples/07 - Calculation/07 RFCOM - Calculation.rf5 b/Examples/07 - Calculation/07 RFCOM - Calculation.rf5 index d4f212d..b480c50 100644 Binary files a/Examples/07 - Calculation/07 RFCOM - Calculation.rf5 and b/Examples/07 - Calculation/07 RFCOM - Calculation.rf5 differ diff --git a/Examples/08 - Optimization/08 RFCOM - Optimization.rf5 b/Examples/08 - Optimization/08 RFCOM - Optimization.rf5 index b90f16d..b30ca22 100644 Binary files a/Examples/08 - Optimization/08 RFCOM - Optimization.rf5 and b/Examples/08 - Optimization/08 RFCOM - Optimization.rf5 differ diff --git a/Parametric_FEM_Toolbox/.vs/Parametric_FEM_Toolbox/v16/-RAZER-DAQ.suo b/Parametric_FEM_Toolbox/.vs/Parametric_FEM_Toolbox/v16/-RAZER-DAQ.suo new file mode 100644 index 0000000..e195543 Binary files /dev/null and b/Parametric_FEM_Toolbox/.vs/Parametric_FEM_Toolbox/v16/-RAZER-DAQ.suo differ diff --git a/Parametric_FEM_Toolbox/.vs/Parametric_FEM_Toolbox/v16/.suo b/Parametric_FEM_Toolbox/.vs/Parametric_FEM_Toolbox/v16/.suo index c6b228a..bf7dcf9 100644 Binary files a/Parametric_FEM_Toolbox/.vs/Parametric_FEM_Toolbox/v16/.suo and b/Parametric_FEM_Toolbox/.vs/Parametric_FEM_Toolbox/v16/.suo differ diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/Deprecated/Component_ResultsLineReactions_GUI_OBSOLETE.cs b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/Deprecated/Component_ResultsLineReactions_GUI_OBSOLETE.cs new file mode 100644 index 0000000..f738fb3 --- /dev/null +++ b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/Deprecated/Component_ResultsLineReactions_GUI_OBSOLETE.cs @@ -0,0 +1,164 @@ +using Grasshopper; +using Grasshopper.Kernel; +using Grasshopper.Kernel.Data; +using Parametric_FEM_Toolbox.GUI; +using Parametric_FEM_Toolbox.RFEM; +using Rhino.Geometry; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Parametric_FEM_Toolbox.Deprecated +{ + public class Component_ResultsLineReactions_GUI_OBSOLETE : GH_Component + { + /// + /// Each implementation of GH_Component must provide a public + /// constructor without any arguments. + /// Category represents the Tab in which the component will appear, + /// Subcategory the panel. If you use non-existing tab or panel names, + /// new tabs/panels will automatically be created. + /// + public Component_ResultsLineReactions_GUI_OBSOLETE() + : base("Line Support Forces", "LSForces", "Get Line Support Forces from Calculation Results.", "B+G Toolbox", "RFEM") + { + } + + /// + /// Registers all the input parameters for this component. + /// + protected override void RegisterInputParams(GH_Component.GH_InputParamManager pManager) + { + // Use the pManager object to register your input parameters. + // You can often supply default values when creating parameters. + // All parameters must have the correct access type. If you want + // to import lists or trees of values, modify the ParamAccess flag. + pManager.AddParameter(new Param_RFEM(), "Calculation Results", "Results", "Calculation results of a certain load case or load combination.", GH_ParamAccess.list); + } + + /// + /// Registers all the output parameters for this component. + /// + protected override void RegisterOutputParams(GH_Component.GH_OutputParamManager pManager) + { + // Use the pManager object to register your output parameters. + // Output parameters do not have default values, but they too must have the correct access type. + pManager.AddIntegerParameter("Line Number", "No", "Index of the RFEM Line", GH_ParamAccess.tree); + pManager.AddNumberParameter("Location", "Loc", "Location of results along line axis", GH_ParamAccess.tree); + pManager.AddVectorParameter("Forces", "F", "Reaction Forces [kN]", GH_ParamAccess.tree); + pManager.AddVectorParameter("Moments", "M", "Reaction Moments [kNm]", GH_ParamAccess.tree); + pManager.AddTextParameter("Results Flag", "Flag", "Results Flag", GH_ParamAccess.tree); + pManager.AddTextParameter("Results Type", "Type", "Results Value Type", GH_ParamAccess.list); + + // Sometimes you want to hide a specific parameter from the Rhino preview. + // You can use the HideParameter() method as a quick way: + //pManager.HideParameter(0); + } + + /// + /// This is the method that actually does the work. + /// + /// The DA object can be used to retrieve data from input parameters and + /// to store data in output parameters. + protected override void SolveInstance(IGH_DataAccess DA) + { + // Output variables + var treeNo = new DataTree(); + var treeLoc = new DataTree(); + var treeF = new DataTree(); + var treeM = new DataTree(); + //var listLoading = new List(); + var treeFlag = new DataTree(); + var treeType = new DataTree(); + + // Input + var inGH = new List(); + var rfResults = new List(); + if (!DA.GetDataList(0, inGH)) + { + return; + } + foreach (var gh in inGH) + { + if (!(gh == null)) + { + rfResults.Add((RFResults)gh.Value); + } + } + var support_forces = new DataTree(); + for (int i = 0; i < rfResults.Count; i++) + { + if (!(rfResults[i].LineSupportForces == null)) + { + var path = new GH_Path(i); + support_forces.AddRange(rfResults[i].LineSupportForces, path); + } + } + + // Get output + if (support_forces.DataCount == 0) + { + AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "No results available"); + return; + } + for (int i = 0; i < support_forces.BranchCount; i++) + { + for (int j = 0; j < support_forces.Branch(i).Count; j++) + { + var path1 = new GH_Path(i,j); + var path2 = new GH_Path(i); + treeNo.Add(support_forces.Branch(i)[j].LineNo, path2); + treeLoc.AddRange(support_forces.Branch(i)[j].Location, path1); + treeF.AddRange(support_forces.Branch(i)[j].Forces, path1); + treeM.AddRange(support_forces.Branch(i)[j].Moments, path1); + treeType.AddRange(support_forces.Branch(i)[j].Type, path1); + treeFlag.Add(support_forces.Branch(i)[j].Flag.ToString(), path2); + } + } + + // Output + DA.SetDataTree(0, treeNo); + DA.SetDataTree(1, treeLoc); + DA.SetDataTree(2, treeF); + DA.SetDataTree(3, treeM); + DA.SetDataTree(4, treeFlag); + DA.SetDataTree(5, treeType); + } + + /// + /// The Exposure property controls where in the panel a component icon + /// will appear. There are seven possible locations (primary to septenary), + /// each of which can be combined with the GH_Exposure.obscure flag, which + /// ensures the component will only be visible on panel dropdowns. + /// + public override GH_Exposure Exposure + { + get { return GH_Exposure.hidden; } + } + + /// + /// Provides an Icon for every component that will be visible in the User Interface. + /// Icons need to be 24x24 pixels. + /// + protected override System.Drawing.Bitmap Icon + { + get + { + // You can add image files to your project resources and access them like this: + return Properties.Resources.Results_LineReactions; + } + } + + /// + /// Each component must have a unique Guid to identify it. + /// It is vital this Guid doesn't change otherwise old ghx files + /// that use the old ID will partially fail during loading. + /// + public override Guid ComponentGuid + { + get { return new Guid("32254ac4-9fbe-400d-8b1a-f05756cddc4f"); } + } + } +} diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/Deprecated/Component_ResultsMemberForces_GUI_OBSOLETE-RAZER-DAQ.cs b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/Deprecated/Component_ResultsMemberForces_GUI_OBSOLETE-RAZER-DAQ.cs new file mode 100644 index 0000000..4c5b577 --- /dev/null +++ b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/Deprecated/Component_ResultsMemberForces_GUI_OBSOLETE-RAZER-DAQ.cs @@ -0,0 +1,166 @@ +using Grasshopper; +using Grasshopper.Kernel; +using Grasshopper.Kernel.Data; +using Parametric_FEM_Toolbox.GUI; +using Parametric_FEM_Toolbox.RFEM; +using Rhino.Geometry; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Parametric_FEM_Toolbox.Deprecated +{ + public class Component_ResultsMemberForces_GUI_OBSOLETE : GH_Component + { + /// + /// Each implementation of GH_Component must provide a public + /// constructor without any arguments. + /// Category represents the Tab in which the component will appear, + /// Subcategory the panel. If you use non-existing tab or panel names, + /// new tabs/panels will automatically be created. + /// + public Component_ResultsMemberForces_GUI_OBSOLETE() + : base("Member Forces", "MForces", "Get Member Forces from Calculation Results.", "B+G Toolbox", "RFEM") + { + } + + /// + /// Registers all the input parameters for this component. + /// + protected override void RegisterInputParams(GH_Component.GH_InputParamManager pManager) + { + // Use the pManager object to register your input parameters. + // You can often supply default values when creating parameters. + // All parameters must have the correct access type. If you want + // to import lists or trees of values, modify the ParamAccess flag. + pManager.AddParameter(new Param_RFEM(), "Calculation Results", "Results", "Calculation results of a certain load case or load combination.", GH_ParamAccess.list); + } + + /// + /// Registers all the output parameters for this component. + /// + protected override void RegisterOutputParams(GH_Component.GH_OutputParamManager pManager) + { + // Use the pManager object to register your output parameters. + // Output parameters do not have default values, but they too must have the correct access type. + pManager.AddIntegerParameter("Member Number", "No", "Index of the RFEM Member", GH_ParamAccess.tree); + pManager.AddNumberParameter("Location", "Loc", "Location of results along member axis", GH_ParamAccess.tree); + pManager.AddVectorParameter("Forces", "F", "Member Forces [kN]", GH_ParamAccess.tree); + pManager.AddVectorParameter("Moments", "M", "Member Moments [kNm]", GH_ParamAccess.tree); + pManager.AddTextParameter("Results Flag", "Flag", "Results Flag", GH_ParamAccess.tree); + pManager.AddTextParameter("Results Type", "Type", "Results Value Type", GH_ParamAccess.list); + + // Sometimes you want to hide a specific parameter from the Rhino preview. + // You can use the HideParameter() method as a quick way: + //pManager.HideParameter(0); + } + + /// + /// This is the method that actually does the work. + /// + /// The DA object can be used to retrieve data from input parameters and + /// to store data in output parameters. + protected override void SolveInstance(IGH_DataAccess DA) + { + // Output variables + var treeNo = new DataTree(); + var treeLoc = new DataTree(); + var treeF = new DataTree(); + var treeM = new DataTree(); + //var listLoading = new List(); + var treeFlag = new DataTree(); + var treeType = new DataTree(); + + // Input + var inGH = new List(); + var rfResults = new List(); + if (!DA.GetDataList(0, inGH)) + { + return; + } + foreach (var gh in inGH) + { + if (!(gh == null)) + { + rfResults.Add((RFResults)gh.Value); + } + } + var member_forces = new DataTree(); + for (int i = 0; i < rfResults.Count; i++) + { + if (!(rfResults[i].MemberForces == null)) + { + var path = new GH_Path(i); + member_forces.AddRange(rfResults[i].MemberForces, path); + } + } + + // Get output + if (member_forces.DataCount == 0) + { + AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "No results available"); + return; + } + for (int i = 0; i < member_forces.BranchCount; i++) + { + for (int j = 0; j < member_forces.Branch(i).Count; j++) + { + var path1 = new GH_Path(i,j); + var path2 = new GH_Path(i); + treeNo.Add(member_forces.Branch(i)[j].MemberNo, path2); + treeLoc.AddRange(member_forces.Branch(i)[j].Location, path1); + treeF.AddRange(member_forces.Branch(i)[j].Forces, path1); + treeM.AddRange(member_forces.Branch(i)[j].Moments, path1); + treeType.AddRange(member_forces.Branch(i)[j].Type, path1); + treeFlag.Add(member_forces.Branch(i)[j].Flag.ToString(), path2); + } + } + + // Output + DA.SetDataTree(0, treeNo); + DA.SetDataTree(1, treeLoc); + DA.SetDataTree(2, treeF); + DA.SetDataTree(3, treeM); + DA.SetDataTree(4, treeFlag); + DA.SetDataTree(5, treeType); + + this.AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Results have been updated from N to kN!!"); + } + + /// + /// The Exposure property controls where in the panel a component icon + /// will appear. There are seven possible locations (primary to septenary), + /// each of which can be combined with the GH_Exposure.obscure flag, which + /// ensures the component will only be visible on panel dropdowns. + /// + public override GH_Exposure Exposure + { + get { return GH_Exposure.hidden; } + } + + /// + /// Provides an Icon for every component that will be visible in the User Interface. + /// Icons need to be 24x24 pixels. + /// + protected override System.Drawing.Bitmap Icon + { + get + { + // You can add image files to your project resources and access them like this: + return Properties.Resources.Results_MemberForces; + } + } + + /// + /// Each component must have a unique Guid to identify it. + /// It is vital this Guid doesn't change otherwise old ghx files + /// that use the old ID will partially fail during loading. + /// + public override Guid ComponentGuid + { + get { return new Guid("799b9e5b-74eb-402d-8f3d-27da6df15cea"); } + } + } +} diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/Deprecated/Component_ResultsMemberForces_GUI_OBSOLETE_2.cs b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/Deprecated/Component_ResultsMemberForces_GUI_OBSOLETE_2.cs new file mode 100644 index 0000000..b358f95 --- /dev/null +++ b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/Deprecated/Component_ResultsMemberForces_GUI_OBSOLETE_2.cs @@ -0,0 +1,164 @@ +using Grasshopper; +using Grasshopper.Kernel; +using Grasshopper.Kernel.Data; +using Parametric_FEM_Toolbox.GUI; +using Parametric_FEM_Toolbox.RFEM; +using Rhino.Geometry; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Parametric_FEM_Toolbox.Deprecated +{ + public class Component_ResultsMemberForces_GUI_OBSOLETE_2 : GH_Component + { + /// + /// Each implementation of GH_Component must provide a public + /// constructor without any arguments. + /// Category represents the Tab in which the component will appear, + /// Subcategory the panel. If you use non-existing tab or panel names, + /// new tabs/panels will automatically be created. + /// + public Component_ResultsMemberForces_GUI_OBSOLETE_2() + : base("Member Forces", "MForces", "Get Member Forces from Calculation Results.", "B+G Toolbox", "RFEM") + { + } + + /// + /// Registers all the input parameters for this component. + /// + protected override void RegisterInputParams(GH_Component.GH_InputParamManager pManager) + { + // Use the pManager object to register your input parameters. + // You can often supply default values when creating parameters. + // All parameters must have the correct access type. If you want + // to import lists or trees of values, modify the ParamAccess flag. + pManager.AddParameter(new Param_RFEM(), "Calculation Results", "Results", "Calculation results of a certain load case or load combination.", GH_ParamAccess.list); + } + + /// + /// Registers all the output parameters for this component. + /// + protected override void RegisterOutputParams(GH_Component.GH_OutputParamManager pManager) + { + // Use the pManager object to register your output parameters. + // Output parameters do not have default values, but they too must have the correct access type. + pManager.AddIntegerParameter("Member Number", "No", "Index of the RFEM Member", GH_ParamAccess.tree); + pManager.AddNumberParameter("Location", "Loc", "Location of results along member axis", GH_ParamAccess.tree); + pManager.AddVectorParameter("Forces", "F", "Member Forces [kN]", GH_ParamAccess.tree); + pManager.AddVectorParameter("Moments", "M", "Member Moments [kNm]", GH_ParamAccess.tree); + pManager.AddTextParameter("Results Flag", "Flag", "Results Flag", GH_ParamAccess.tree); + pManager.AddTextParameter("Results Type", "Type", "Results Value Type", GH_ParamAccess.list); + + // Sometimes you want to hide a specific parameter from the Rhino preview. + // You can use the HideParameter() method as a quick way: + //pManager.HideParameter(0); + } + + /// + /// This is the method that actually does the work. + /// + /// The DA object can be used to retrieve data from input parameters and + /// to store data in output parameters. + protected override void SolveInstance(IGH_DataAccess DA) + { + // Output variables + var treeNo = new DataTree(); + var treeLoc = new DataTree(); + var treeF = new DataTree(); + var treeM = new DataTree(); + //var listLoading = new List(); + var treeFlag = new DataTree(); + var treeType = new DataTree(); + + // Input + var inGH = new List(); + var rfResults = new List(); + if (!DA.GetDataList(0, inGH)) + { + return; + } + foreach (var gh in inGH) + { + if (!(gh == null)) + { + rfResults.Add((RFResults)gh.Value); + } + } + var member_forces = new DataTree(); + for (int i = 0; i < rfResults.Count; i++) + { + if (!(rfResults[i].MemberForces == null)) + { + var path = new GH_Path(i); + member_forces.AddRange(rfResults[i].MemberForces, path); + } + } + + // Get output + if (member_forces.DataCount == 0) + { + AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "No results available"); + return; + } + for (int i = 0; i < member_forces.BranchCount; i++) + { + for (int j = 0; j < member_forces.Branch(i).Count; j++) + { + var path1 = new GH_Path(i,j); + var path2 = new GH_Path(i); + treeNo.Add(member_forces.Branch(i)[j].MemberNo, path2); + treeLoc.AddRange(member_forces.Branch(i)[j].Location, path1); + treeF.AddRange(member_forces.Branch(i)[j].Forces, path1); + treeM.AddRange(member_forces.Branch(i)[j].Moments, path1); + treeType.AddRange(member_forces.Branch(i)[j].Type, path1); + treeFlag.Add(member_forces.Branch(i)[j].Flag.ToString(), path2); + } + } + + // Output + DA.SetDataTree(0, treeNo); + DA.SetDataTree(1, treeLoc); + DA.SetDataTree(2, treeF); + DA.SetDataTree(3, treeM); + DA.SetDataTree(4, treeFlag); + DA.SetDataTree(5, treeType); + } + + /// + /// The Exposure property controls where in the panel a component icon + /// will appear. There are seven possible locations (primary to septenary), + /// each of which can be combined with the GH_Exposure.obscure flag, which + /// ensures the component will only be visible on panel dropdowns. + /// + public override GH_Exposure Exposure + { + get { return GH_Exposure.hidden; } + } + + /// + /// Provides an Icon for every component that will be visible in the User Interface. + /// Icons need to be 24x24 pixels. + /// + protected override System.Drawing.Bitmap Icon + { + get + { + // You can add image files to your project resources and access them like this: + return Properties.Resources.Results_MemberForces; + } + } + + /// + /// Each component must have a unique Guid to identify it. + /// It is vital this Guid doesn't change otherwise old ghx files + /// that use the old ID will partially fail during loading. + /// + public override Guid ComponentGuid + { + get { return new Guid("a40b9353-97a6-462e-bc68-01a97b4d988c"); } + } + } +} diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/Deprecated/Component_ResultsNodeReactions_GUI_OBSOLETE.cs b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/Deprecated/Component_ResultsNodeReactions_GUI_OBSOLETE.cs new file mode 100644 index 0000000..29f14c2 --- /dev/null +++ b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/Deprecated/Component_ResultsNodeReactions_GUI_OBSOLETE.cs @@ -0,0 +1,159 @@ +using Grasshopper; +using Grasshopper.Kernel; +using Grasshopper.Kernel.Data; +using Parametric_FEM_Toolbox.GUI; +using Parametric_FEM_Toolbox.RFEM; +using Rhino.Geometry; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Parametric_FEM_Toolbox.Deprecated +{ + public class Component_ResultsNodeReactions_GUI_OBSOLETE : GH_Component + { + /// + /// Each implementation of GH_Component must provide a public + /// constructor without any arguments. + /// Category represents the Tab in which the component will appear, + /// Subcategory the panel. If you use non-existing tab or panel names, + /// new tabs/panels will automatically be created. + /// + public Component_ResultsNodeReactions_GUI_OBSOLETE() + : base("Nodal Support Forces", "NSForces", "Get Nodal Support Forces from Calculation Results.", "B+G Toolbox", "RFEM") + { + } + + /// + /// Registers all the input parameters for this component. + /// + protected override void RegisterInputParams(GH_Component.GH_InputParamManager pManager) + { + // Use the pManager object to register your input parameters. + // You can often supply default values when creating parameters. + // All parameters must have the correct access type. If you want + // to import lists or trees of values, modify the ParamAccess flag. + pManager.AddParameter(new Param_RFEM(), "Calculation Results", "Results", "Calculation results of a certain load case or load combination.", GH_ParamAccess.list); + } + + /// + /// Registers all the output parameters for this component. + /// + protected override void RegisterOutputParams(GH_Component.GH_OutputParamManager pManager) + { + // Use the pManager object to register your output parameters. + // Output parameters do not have default values, but they too must have the correct access type. + + pManager.AddIntegerParameter("Support Number", "No", "Index of the RFEM Nodal Support", GH_ParamAccess.tree); + pManager.AddPointParameter("Location", "Loc", "Support Location", GH_ParamAccess.tree); + pManager.AddVectorParameter("Forces", "F", "Member Forces in global CSys [kN]", GH_ParamAccess.tree); + pManager.AddVectorParameter("Moments", "M", "Member Moments in global CSys [kNm]", GH_ParamAccess.tree); + pManager.AddTextParameter("Results Type", "Type", "Results Value Type", GH_ParamAccess.tree); + + // Sometimes you want to hide a specific parameter from the Rhino preview. + // You can use the HideParameter() method as a quick way: + //pManager.HideParameter(0); + } + + /// + /// This is the method that actually does the work. + /// + /// The DA object can be used to retrieve data from input parameters and + /// to store data in output parameters. + protected override void SolveInstance(IGH_DataAccess DA) + { + // Output variables + var treeNo = new DataTree(); + var treeCoor = new DataTree(); + var treeF = new DataTree(); + var treeM = new DataTree(); + var treeType = new DataTree(); + + // Input + var inGH = new List(); + var rfResults = new List(); + if (!DA.GetDataList(0, inGH)) + { + return; + } + foreach (var gh in inGH) + { + if (!(gh == null)) + { + rfResults.Add((RFResults)gh.Value); + } + } + var reaction_forces = new DataTree(); + for (int i = 0; i < rfResults.Count; i++) + { + if (!(rfResults[i].NodalSupportForces == null)) + { + var path = new GH_Path(i); + reaction_forces.AddRange(rfResults[i].NodalSupportForces, path); + } + } + + // Get output + if (reaction_forces.DataCount == 0) + { + AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "No results available"); + return; + } + for (int i = 0; i < reaction_forces.BranchCount; i++) + { + for (int j = 0; j < reaction_forces.Branch(i).Count; j++) + { + var path = new GH_Path(i); + treeNo.Add(reaction_forces.Branch(i)[j].NodeNo, path); + treeCoor.Add(reaction_forces.Branch(i)[j].Location, path); + treeF.Add(reaction_forces.Branch(i)[j].Forces, path); + treeM.Add(reaction_forces.Branch(i)[j].Moments, path); + treeType.Add(reaction_forces.Branch(i)[j].Type, path); + } + } + + // Output + DA.SetDataTree(0, treeNo); + DA.SetDataTree(1, treeCoor); + DA.SetDataTree(2, treeF); + DA.SetDataTree(3, treeM); + DA.SetDataTree(4, treeType); + } + + /// + /// The Exposure property controls where in the panel a component icon + /// will appear. There are seven possible locations (primary to septenary), + /// each of which can be combined with the GH_Exposure.obscure flag, which + /// ensures the component will only be visible on panel dropdowns. + /// + public override GH_Exposure Exposure + { + get { return GH_Exposure.hidden; } + } + + /// + /// Provides an Icon for every component that will be visible in the User Interface. + /// Icons need to be 24x24 pixels. + /// + protected override System.Drawing.Bitmap Icon + { + get + { + // You can add image files to your project resources and access them like this: + return Properties.Resources.Results_Reactions; + } + } + + /// + /// Each component must have a unique Guid to identify it. + /// It is vital this Guid doesn't change otherwise old ghx files + /// that use the old ID will partially fail during loading. + /// + public override Guid ComponentGuid + { + get { return new Guid("1dd90138-c7ef-4811-ac44-ad0e68199921"); } + } + } +} diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/Deprecated/Component_ResultsSurfaceForces_GUI_OBSOLETE.cs b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/Deprecated/Component_ResultsSurfaceForces_GUI_OBSOLETE.cs new file mode 100644 index 0000000..f04b375 --- /dev/null +++ b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/Deprecated/Component_ResultsSurfaceForces_GUI_OBSOLETE.cs @@ -0,0 +1,268 @@ +using Grasshopper; +using Grasshopper.Kernel; +using Grasshopper.Kernel.Data; +using Parametric_FEM_Toolbox.GUI; +using Parametric_FEM_Toolbox.RFEM; +using Rhino.Geometry; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Parametric_FEM_Toolbox.Deprecated +{ + public class Component_ResultsSurfaceForces_GUI_OBSOLETE : GH_Component + { + /// + /// Each implementation of GH_Component must provide a public + /// constructor without any arguments. + /// Category represents the Tab in which the component will appear, + /// Subcategory the panel. If you use non-existing tab or panel names, + /// new tabs/panels will automatically be created. + /// + public Component_ResultsSurfaceForces_GUI_OBSOLETE() + : base("Surface Forces", "SForces", "Get Surface Forces from Calculation Results.", "B+G Toolbox", "RFEM") + { + } + + /// + /// Registers all the input parameters for this component. + /// + protected override void RegisterInputParams(GH_Component.GH_InputParamManager pManager) + { + // Use the pManager object to register your input parameters. + // You can often supply default values when creating parameters. + // All parameters must have the correct access type. If you want + // to import lists or trees of values, modify the ParamAccess flag. + pManager.AddParameter(new Param_RFEM(), "Calculation Results", "Results", "Calculation results of a certain load case or load combination.", GH_ParamAccess.list); + } + + /// + /// Registers all the output parameters for this component. + /// + protected override void RegisterOutputParams(GH_Component.GH_OutputParamManager pManager) + { + // Use the pManager object to register your output parameters. + // Output parameters do not have default values, but they too must have the correct access type. + + //pManager.AddPointParameter("Nodes", "N", "Tensegrity nodes", GH_ParamAccess.tree); + + pManager.AddIntegerParameter("Surface Number", "No", "Index of the RFEM Surface", GH_ParamAccess.tree); + pManager.AddPointParameter("Coordinates", "Pt", "Coordinates of results", GH_ParamAccess.tree); + pManager.AddIntegerParameter("Location", "Loc", "Location of results", GH_ParamAccess.tree); + pManager.AddTextParameter("Type", "Type", "Results Type", GH_ParamAccess.tree); + pManager.AddNumberParameter("AxialForceAlphaM", "αm", "Axial force αm [kN/m]", GH_ParamAccess.tree); + pManager.AddNumberParameter("AxialForceN1", "n1", "Axial force n1 [kN/m]", GH_ParamAccess.tree); + pManager.AddNumberParameter("AxialForceN2", "n2", "Axial force n2 [kN/m]", GH_ParamAccess.tree); + pManager.AddNumberParameter("AxialForceNcD", "nc,D", "Axial force nc,D [kN/m]", GH_ParamAccess.tree); + pManager.AddNumberParameter("AxialForceNx", "nx", "Axial force nx [kN/m]", GH_ParamAccess.tree); + pManager.AddNumberParameter("AxialForceNxD", "nx,D", "Axial force nx,D [kN/m]", GH_ParamAccess.tree); + pManager.AddNumberParameter("AxialForceNxy", "nxy", "Axial force nxy [kN/m]", GH_ParamAccess.tree); + pManager.AddNumberParameter("AxialForceNy", "ny", "Axial force ny [kN/m]", GH_ParamAccess.tree); + pManager.AddNumberParameter("AxialForceNyD", "ny,D", "Axial force ny,D [kN/m]", GH_ParamAccess.tree); + pManager.AddNumberParameter("AxialForceVMaxM", "vmax,m", "Axial force vmax,m [kN/m]", GH_ParamAccess.tree); + pManager.AddNumberParameter("MomentAlphaB", "αb", "Moment αb [kNm/m]", GH_ParamAccess.tree); + pManager.AddNumberParameter("MomentM1", "m1", "Moment m1 [kNm/m]", GH_ParamAccess.tree); + pManager.AddNumberParameter("MomentM2", "m2", "Moment m2 [kNm/m]", GH_ParamAccess.tree); + pManager.AddNumberParameter("MomentMcDNegative", "mc,D-", "Moment mc,D- [kNm/m]", GH_ParamAccess.tree); + pManager.AddNumberParameter("MomentMcDPositive", "mc,D+", "Moment mc,D+ [kNm/m]", GH_ParamAccess.tree); + pManager.AddNumberParameter("MomentMx", "mx", "Moment mx [kNm/m]", GH_ParamAccess.tree); + pManager.AddNumberParameter("MomentMxDNegative", "mx,D-", "Moment mx,D- [kNm/m]", GH_ParamAccess.tree); + pManager.AddNumberParameter("MomentMxDPositive", "mx,D+", "Moment mx,D+ [kNm/m]", GH_ParamAccess.tree); + pManager.AddNumberParameter("MomentMxy", "mxy", "Moment mxy [kNm/m]", GH_ParamAccess.tree); + pManager.AddNumberParameter("MomentMy", "my", "Moment my [kNm/m]", GH_ParamAccess.tree); + pManager.AddNumberParameter("MomentMyDNegative", "my,D-", "Moment my,D- [kNm/m]", GH_ParamAccess.tree); + pManager.AddNumberParameter("MomentMxDPositive", "mx,D+", "Moment mx,D+ [kNm/m]", GH_ParamAccess.tree); + pManager.AddNumberParameter("MomentTMaxB", "mT,max,b", "Moment mT,max,b [kNm/m]", GH_ParamAccess.tree); + pManager.AddNumberParameter("ShearForceBetaB", "Βb", "Shear force Βb [kN/m]", GH_ParamAccess.tree); + pManager.AddNumberParameter("ShearForceVMaxB", "vmax,b", "Shear force vmax,b [kN/m]", GH_ParamAccess.tree); + pManager.AddNumberParameter("ShearForceVx", "vx", "Shear force vx [kN/m]", GH_ParamAccess.tree); + pManager.AddNumberParameter("ShearForceVy", "vy", "Shear force vy [kN/m]", GH_ParamAccess.tree); + + // Sometimes you want to hide a specific parameter from the Rhino preview. + // You can use the HideParameter() method as a quick way: + //pManager.HideParameter(0); + } + + /// + /// This is the method that actually does the work. + /// + /// The DA object can be used to retrieve data from input parameters and + /// to store data in output parameters. + protected override void SolveInstance(IGH_DataAccess DA) + { + // Output variables + var treeNo = new DataTree(); + + var treeCoor = new DataTree(); + var treeLoc = new DataTree(); + var treeType = new DataTree(); + + var axialForceAlphaM = new DataTree(); + var axialForceN1 = new DataTree(); + var axialForceN2 = new DataTree(); + var axialForceNcD = new DataTree(); + var axialForceNx = new DataTree(); + var axialForceNxD = new DataTree(); + var axialForceNxy = new DataTree(); + var axialForceNy = new DataTree(); + var axialForceNyD = new DataTree(); + var axialForceVMaxM = new DataTree(); + var momentAlphaB = new DataTree(); + var momentM1 = new DataTree(); + var momentM2 = new DataTree(); + var momentMcDNegative = new DataTree(); + var momentMcDPositive = new DataTree(); + var momentMx = new DataTree(); + var momentMxDNegative = new DataTree(); + var momentMxDPositive = new DataTree(); + var momentMxy = new DataTree(); + var momentMy = new DataTree(); + var momentMyDNegative = new DataTree(); + var momentMyDPositive = new DataTree(); + var momentTMaxB = new DataTree(); + var shearForceBetaB = new DataTree(); + var shearForceVMaxB = new DataTree(); + var shearForceVx = new DataTree(); + var shearForceVy = new DataTree(); + + // Input + var inGH = new List(); + var rfResults = new List(); + if (!DA.GetDataList(0, inGH)) + { + return; + } + foreach (var gh in inGH) + { + if (!(gh == null)) + { + rfResults.Add((RFResults)gh.Value); + } + } + var sfc_forces = new DataTree(); + for (int i = 0; i < rfResults.Count; i++) + { + if (!(rfResults[i].SurfaceForces == null)) + { + var path = new GH_Path(i); + sfc_forces.AddRange(rfResults[i].SurfaceForces, path); + } + } + + // Get output + if (sfc_forces.DataCount == 0) + { + AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "No results available"); + return; + } + for (int i = 0; i < sfc_forces.BranchCount; i++) + { + for (int j = 0; j < sfc_forces.Branch(i).Count; j++) + { + var path = new GH_Path(i, j); + var path2 = new GH_Path(i); + treeNo.Add(sfc_forces.Branch(i)[j].SurfaceNo, path2); + treeCoor.AddRange(sfc_forces.Branch(i)[j].Location, path); + treeLoc.AddRange(sfc_forces.Branch(i)[j].LocationNo, path); + treeType.AddRange(sfc_forces.Branch(i)[j].Type, path); + axialForceAlphaM.AddRange(sfc_forces.Branch(i)[j].AxialForceAlphaM, path); + axialForceN1.AddRange(sfc_forces.Branch(i)[j].AxialForceN1, path); + axialForceN2.AddRange(sfc_forces.Branch(i)[j].AxialForceN2, path); + axialForceNcD.AddRange(sfc_forces.Branch(i)[j].AxialForceNcD, path); + axialForceNx.AddRange(sfc_forces.Branch(i)[j].AxialForceNx, path); + axialForceNxD.AddRange(sfc_forces.Branch(i)[j].AxialForceNxD, path); + axialForceNxy.AddRange(sfc_forces.Branch(i)[j].AxialForceNxy, path); + axialForceNy.AddRange(sfc_forces.Branch(i)[j].AxialForceNy, path); + axialForceNyD.AddRange(sfc_forces.Branch(i)[j].AxialForceNyD, path); + axialForceVMaxM.AddRange(sfc_forces.Branch(i)[j].AxialForceVMaxM, path); + momentAlphaB.AddRange(sfc_forces.Branch(i)[j].MomentAlphaB, path); + momentM1.AddRange(sfc_forces.Branch(i)[j].MomentM1, path); + momentM2.AddRange(sfc_forces.Branch(i)[j].MomentM2, path); + momentMcDNegative.AddRange(sfc_forces.Branch(i)[j].MomentMcDNegative, path); + momentMcDPositive.AddRange(sfc_forces.Branch(i)[j].MomentMcDPositive, path); + momentMx.AddRange(sfc_forces.Branch(i)[j].MomentMx, path); + momentMxDNegative.AddRange(sfc_forces.Branch(i)[j].MomentMxDNegative, path); + momentMxDPositive.AddRange(sfc_forces.Branch(i)[j].MomentMxDPositive, path); + momentMxy.AddRange(sfc_forces.Branch(i)[j].MomentMxy, path); + momentMy.AddRange(sfc_forces.Branch(i)[j].MomentMy, path); + momentMyDNegative.AddRange(sfc_forces.Branch(i)[j].MomentMyDNegative, path); + momentMyDPositive.AddRange(sfc_forces.Branch(i)[j].MomentMyDPositive, path); + momentTMaxB.AddRange(sfc_forces.Branch(i)[j].MomentTMaxB, path); + shearForceBetaB.AddRange(sfc_forces.Branch(i)[j].ShearForceBetaB, path); + shearForceVMaxB.AddRange(sfc_forces.Branch(i)[j].ShearForceVMaxB, path); + shearForceVx.AddRange(sfc_forces.Branch(i)[j].ShearForceVx, path); + shearForceVy.AddRange(sfc_forces.Branch(i)[j].ShearForceVy, path); + } + } + + // Output + DA.SetDataTree(0, treeNo); + DA.SetDataTree(1, treeCoor); + DA.SetDataTree(2, treeLoc); + DA.SetDataTree(3, treeType); + DA.SetDataTree(4, axialForceAlphaM); + DA.SetDataTree(5, axialForceN1); + DA.SetDataTree(6, axialForceN2); + DA.SetDataTree(7, axialForceNcD); + DA.SetDataTree(8, axialForceNx); + DA.SetDataTree(9, axialForceNxD); + DA.SetDataTree(10, axialForceNxy); + DA.SetDataTree(11, axialForceNy); + DA.SetDataTree(12, axialForceNyD); + DA.SetDataTree(13, axialForceVMaxM); + DA.SetDataTree(14, momentAlphaB); + DA.SetDataTree(15, momentM1); + DA.SetDataTree(16, momentM2); + DA.SetDataTree(17, momentMcDNegative); + DA.SetDataTree(18, momentMcDPositive); + DA.SetDataTree(19, momentMx); + DA.SetDataTree(20, momentMxDNegative); + DA.SetDataTree(21, momentMxDPositive); + DA.SetDataTree(22, momentMxy); + DA.SetDataTree(23, momentMy); + DA.SetDataTree(24, momentMyDNegative); + DA.SetDataTree(25, momentMyDPositive); + DA.SetDataTree(26, momentTMaxB); + DA.SetDataTree(27, shearForceBetaB); + DA.SetDataTree(28, shearForceVMaxB); + DA.SetDataTree(29, shearForceVx); + DA.SetDataTree(30, shearForceVy); + } + + /// + /// The Exposure property controls where in the panel a component icon + /// will appear. There are seven possible locations (primary to septenary), + /// each of which can be combined with the GH_Exposure.obscure flag, which + /// ensures the component will only be visible on panel dropdowns. + /// + public override GH_Exposure Exposure + { + get { return GH_Exposure.hidden; } + } + + /// + /// Provides an Icon for every component that will be visible in the User Interface. + /// Icons need to be 24x24 pixels. + /// + protected override System.Drawing.Bitmap Icon + { + get + { + // You can add image files to your project resources and access them like this: + return Properties.Resources.Results_ShellForces; + } + } + + /// + /// Each component must have a unique Guid to identify it. + /// It is vital this Guid doesn't change otherwise old ghx files + /// that use the old ID will partially fail during loading. + /// + public override Guid ComponentGuid + { + get { return new Guid("df9e7012-2731-47d4-987c-6e3ae4c6fb52"); } + } + } +} diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/Component_GetResults_GUI.cs b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/Component_GetResults_GUI.cs index f26bcbd..87ace52 100644 --- a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/Component_GetResults_GUI.cs +++ b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/Component_GetResults_GUI.cs @@ -33,6 +33,7 @@ public class Component_GetResults_GUI : GH_SwitcherComponent DataTree _memberdisplacementsByType = new DataTree(); List _deformedMembers = new List(); List _memberNo = new List(); + bool _deformation_results = false; //private List _loadCases = new List(); //private List _loadCombos = new List(); @@ -43,7 +44,7 @@ public class Component_GetResults_GUI : GH_SwitcherComponent private int _countCases = 0; private int _countCombos = 0; private int _countRcombos = 0; - private List _resultTypes = new List(); + private HashSet _resultTypes = new HashSet(); ICalculation _results = null; IFeMesh _rfemMesh = null; IResults _lcresults = null; @@ -65,6 +66,7 @@ public class Component_GetResults_GUI : GH_SwitcherComponent private string _lastLoadCase; private int _lastType; private bool _restoreDropDown; + private MenuCheckBox _deformationsCheck; private MenuCheckBox _memberForcesCheck; private MenuCheckBox _surfaceForcesCheck; private MenuCheckBox _nodalReactionsCheck; @@ -177,25 +179,32 @@ protected override void RegisterEvaluationUnits(EvaluationUnitManager mngr) // Select results GH_ExtendableMenu gH_ExtendableMenu3 = new GH_ExtendableMenu(3, "Select Results"); gH_ExtendableMenu3.Name = "Select Results"; + gH_ExtendableMenu3.Expand(); evaluationUnit.AddMenu(gH_ExtendableMenu3); MenuPanel menuPanel2 = new MenuPanel(2, "panel_results"); menuPanel2.Header = "Select output results.\n"; - _memberForcesCheck = new MenuCheckBox(0, "check member forces", "Member Forces"); + + _deformationsCheck = new MenuCheckBox(0, "deformations", "Deformation"); + _deformationsCheck.ValueChanged += _deformationsCheck__valueChanged; + _deformationsCheck.Active = true; + _deformationsCheck.Header = "Display deformed shape."; + _memberForcesCheck = new MenuCheckBox(1, "check member forces", "Member Forces"); _memberForcesCheck.ValueChanged += _memberForcesCheck__valueChanged; _memberForcesCheck.Active = true; _memberForcesCheck.Header = "Add member forces to output results."; - _surfaceForcesCheck = new MenuCheckBox(1, "check surface forces", "Surface Forces"); + _surfaceForcesCheck = new MenuCheckBox(2, "check surface forces", "Surface Forces"); _surfaceForcesCheck.ValueChanged += _surfaceForcesCheck__valueChanged; _surfaceForcesCheck.Active = true; _surfaceForcesCheck.Header = "Add surface forces to output results."; - _nodalReactionsCheck = new MenuCheckBox(2, "check nodal reactions", "Nodal Reactions"); + _nodalReactionsCheck = new MenuCheckBox(3, "check nodal reactions", "Nodal Reactions"); _nodalReactionsCheck.ValueChanged += _nodalReactionsCheck__valueChanged; _nodalReactionsCheck.Active = true; _nodalReactionsCheck.Header = "Add nodal reactions to output results."; - _lineReactionsCheck = new MenuCheckBox(3, "check line reactions", "Line Reactions"); + _lineReactionsCheck = new MenuCheckBox(4, "check line reactions", "Line Reactions"); _lineReactionsCheck.ValueChanged += _lineReactionsCheck__valueChanged; _lineReactionsCheck.Active = true; _lineReactionsCheck.Header = "Add line reactions to output results."; + menuPanel2.AddControl(_deformationsCheck); menuPanel2.AddControl(_memberForcesCheck); menuPanel2.AddControl(_surfaceForcesCheck); menuPanel2.AddControl(_nodalReactionsCheck); @@ -247,6 +256,28 @@ private void _loadDrop__valueChanged2(object sender, EventArgs e) setModelProps(); } + private void _deformationsCheck__valueChanged(object sender, EventArgs e) + { + var box_state = ((MenuCheckBox)sender).Active; + if (!box_state) + { + _resulttypeDrop.Clear(); + _feMeshes.Clear(); + _meshdisplacements.Clear(); + _meshdisplacementsByType.Clear(); + _deformedMeshes.Clear(); + _controlPoints.Clear(); + _memberdisplacements.Clear(); + _memberdisplacementsByType.Clear(); + _deformedMembers.Clear(); + _sfcNo.Clear(); + _memberNo.Clear(); + } + _resetLC = true; // Get results + + setModelProps(); + } + private void _memberForcesCheck__valueChanged(object sender, EventArgs e) { _ = ((MenuCheckBox)sender).Active; @@ -304,28 +335,29 @@ private void updateDropDownMenu(List _lcs) _loadDrop.Value = _loadDropLastValue; } - private void updateDropDownMenu2(List _results, ref int result_type) + private void updateDropDownMenu2(List resulttypes, ref int result_type) { - _resulttypeDrop.VisibleItemCount = Math.Min(10, _results.Count); // Maximum visible items = 10 + _resulttypeDrop.VisibleItemCount = Math.Min(10, resulttypes.Count); // Maximum visible items = 10 //int value = 0; //if (_results.Count == _resulttypeDrop.Items.Count) //{ // value = _resulttypeDrop.Value; //} _resulttypeDrop.Clear(); - if (_results.Count > 0) + if (resulttypes.Count > 0) { - for (int i = 0; i < _results.Count; i++) + for (int i = 0; i < resulttypes.Count; i++) { - _resulttypeDrop.AddItem(((int)_results[i]).ToString(), _results[i].ToString()); + _resulttypeDrop.AddItem(((int)resulttypes[i]).ToString(), resulttypes[i].ToString()); } //if (_resulttypeDrop.Items.Count > value) //{ // _resulttypeDrop.Value = value; //} + _resulttypeDrop.Value = _resultDropLastValue; + result_type = Int32.Parse(_resulttypeDrop.Items[_resulttypeDrop.Value].name); } - _resulttypeDrop.Value = _resultDropLastValue; - result_type = Int32.Parse(_resulttypeDrop.Items[_resulttypeDrop.Value].name); + } /// @@ -383,11 +415,19 @@ protected override void SolveInstance(IGH_DataAccess DA, EvaluationUnit unit) _lastType = 0; _restoreDropDown = true; } - // Get members - _rfMembers = Component_GetData.GetRFMembers(data.GetMembers().ToList(), data); - // Get Fe Meshes from RFEM - _rfemMesh = _results.GetFeMesh(); - _feMeshes = CreateFEMeshes(ref msg); + // Get deformed shape? + if (_deformationsCheck.Active) + { + _deformation_results = true; + // Get members + _rfMembers = Component_GetData.GetRFMembers(data.GetMembers().ToList(), data); + // Get Fe Meshes from RFEM + _rfemMesh = _results.GetFeMesh(); + _feMeshes = CreateFEMeshes(ref msg); + }else + { + _deformation_results = false; + } // Disconnect RFEM Component_GetData.DisconnectRFEM(ref model, ref data); @@ -419,6 +459,7 @@ protected override void SolveInstance(IGH_DataAccess DA, EvaluationUnit unit) _deformedMembers.Clear(); _sfcNo.Clear(); _memberNo.Clear(); + _deformation_results = false; throw ex; } } @@ -441,7 +482,7 @@ protected override void SolveInstance(IGH_DataAccess DA, EvaluationUnit unit) AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Provide Valid Result Type."); return; } - result_type_name = Enum.GetName(typeof(ResultsValueType), result_type); + result_type_name = Enum.GetName(typeof(ResultsValueType), result_type); if (_lastLoadCase != iLoadCase || _lastType != result_type) // otherwise execution comes from change in scale and no need to reset load case { _resetLC = true; @@ -498,7 +539,6 @@ protected override void SolveInstance(IGH_DataAccess DA, EvaluationUnit unit) AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, $"{iLoadCase} has no results. Provide valid load case."); return; } - var lcresultsraster = _results.GetResultsInRasterPoints(LoadingType.LoadCaseType, no); if (value < _countCases) { _lcresults = _results.GetResultsInFeNodes(LoadingType.LoadCaseType, no); @@ -517,25 +557,35 @@ protected override void SolveInstance(IGH_DataAccess DA, EvaluationUnit unit) msg.Add("Load case or combo not found"); return; } - // Update drop down menu of result types - _resultTypes = new List(); + // Get analysis results + _resultTypes = new HashSet(); + outResults = new RFResults(_lcresults, _saveddata, ref _resultTypes, iLoadCase, + _memberForcesCheck.Active, _surfaceForcesCheck.Active, _nodalReactionsCheck.Active, + _lineReactionsCheck.Active); // Get deformations - _meshdisplacements = GetMeshDisplacements(ref _sfcNo, ref msg); - _memberdisplacements = GetMemberDisplacements(ref _memberNo, ref msg); - //Get results by type + if (_deformationsCheck.Active) + { + if (!_deformation_results) + { + AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "Run component again to get deformation results."); + } + else + { + _meshdisplacements = GetMeshDisplacements(ref _sfcNo, ref msg); + _memberdisplacements = GetMemberDisplacements(ref _memberNo, ref msg); + _meshdisplacementsByType = GetMeshDisplacementsByType(result_type); + _memberdisplacementsByType = GetMemberDisplacementsByType(result_type); + } + } + // Update drop down menu of result types if (result_type == 0) // if no value obtaines through overwrite { _resultDropLastValue = 0; - updateDropDownMenu2(_resultTypes.Distinct().ToList(), ref result_type); + updateDropDownMenu2(_resultTypes.ToList(), ref result_type); } - _meshdisplacementsByType = GetMeshDisplacementsByType(result_type); - _memberdisplacementsByType = GetMemberDisplacementsByType(result_type); - // Get analysis results - outResults = new RFResults(_lcresults, _saveddata, iLoadCase, - _memberForcesCheck.Active, _surfaceForcesCheck.Active, _nodalReactionsCheck.Active, - _lineReactionsCheck.Active); // Set _resetLC to false again - _resetLC = false; + _resetLC = false; + _resetResultType = true; } if(_resetResultType) // when there are changes in drop down menu { @@ -543,12 +593,16 @@ protected override void SolveInstance(IGH_DataAccess DA, EvaluationUnit unit) { result_type = Int32.Parse(_resulttypeDrop.Items[_resulttypeDrop.Value].name); } - _meshdisplacementsByType = GetMeshDisplacementsByType(result_type); - _memberdisplacementsByType = GetMemberDisplacementsByType(result_type); + if (_deformationsCheck.Active) + { + _meshdisplacementsByType = GetMeshDisplacementsByType(result_type); + _memberdisplacementsByType = GetMemberDisplacementsByType(result_type); + } // Get analysis results - outResults = new RFResults(_lcresults, _saveddata, iLoadCase, - _memberForcesCheck.Active, _surfaceForcesCheck.Active, _nodalReactionsCheck.Active, - _lineReactionsCheck.Active); + if(result_type>0) + { + outResults.ResultType = ((ResultsValueType)result_type).ToString(); + } // Set _resetType to false again _resetResultType = false; } @@ -640,7 +694,10 @@ private DataTree GetMeshDisplacements(ref List sfcNo, ref List(); // Save defoirmation vectors into a tree var surfaceResults = _lcresults.GetSurfacesDeformations(false).OrderBy(o => o.LocationNo); // Sort according to nodes so there are no errors when applying displacements - _resultTypes.AddRange(surfaceResults.Select(x => x.Type)); + foreach (var resulttype in surfaceResults.Select(x => x.Type).Distinct()) + { + _resultTypes.Add(resulttype); + } foreach (var result in surfaceResults) // GET RESULT TYPES!!! { var gh_path = new GH_Path(result.SurfaceNo, (int)result.Type); @@ -712,8 +769,11 @@ private DataTree GetMemberDisplacements(ref List memberNo, ref Li _controlPoints.EnsurePath(pts_path); var baseline = member.BaseLine.ToCurve(); // Get deformations - var memberResults = _lcresults.GetMemberDeformations(member.No, ItemAt.AtNo, MemberAxesType.GlobalAxes); // We can't sort this list - _resultTypes.AddRange(memberResults.Select(x => x.Type)); + var memberResults = _lcresults.GetMemberDeformations(member.No, ItemAt.AtNo, MemberAxesType.GlobalAxes); // We can't sort this list + foreach (var resulttype in memberResults.Select(x => x.Type).Distinct()) + { + _resultTypes.Add(resulttype); + } var valueType = memberResults[0].Type; // Get deformation types to avoid duplicate control points memberNo.Add(member.No); foreach (var result in memberResults) diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/Component_ResultsLineReactions_GUI.cs b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/Component_ResultsLineReactions_GUI.cs index 42d2749..bafea17 100644 --- a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/Component_ResultsLineReactions_GUI.cs +++ b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/Component_ResultsLineReactions_GUI.cs @@ -1,6 +1,7 @@ using Grasshopper; using Grasshopper.Kernel; using Grasshopper.Kernel.Data; +using Parametric_FEM_Toolbox.GUI; using Parametric_FEM_Toolbox.RFEM; using Rhino.Geometry; using System; @@ -49,7 +50,6 @@ protected override void RegisterOutputParams(GH_Component.GH_OutputParamManager pManager.AddVectorParameter("Forces", "F", "Reaction Forces [kN]", GH_ParamAccess.tree); pManager.AddVectorParameter("Moments", "M", "Reaction Moments [kNm]", GH_ParamAccess.tree); pManager.AddTextParameter("Results Flag", "Flag", "Results Flag", GH_ParamAccess.tree); - pManager.AddTextParameter("Results Type", "Type", "Results Value Type", GH_ParamAccess.list); // Sometimes you want to hide a specific parameter from the Rhino preview. // You can use the HideParameter() method as a quick way: @@ -109,10 +109,15 @@ protected override void SolveInstance(IGH_DataAccess DA) var path1 = new GH_Path(i,j); var path2 = new GH_Path(i); treeNo.Add(support_forces.Branch(i)[j].LineNo, path2); - treeLoc.AddRange(support_forces.Branch(i)[j].Location, path1); - treeF.AddRange(support_forces.Branch(i)[j].Forces, path1); - treeM.AddRange(support_forces.Branch(i)[j].Moments, path1); - treeType.AddRange(support_forces.Branch(i)[j].Type, path1); + for (int k = 0; k < support_forces.Branch(i)[j].Location.Count; k++) + { + if(support_forces.Branch(i)[j].Type[k] == rfResults[i].ResultType) + { + treeLoc.Add(support_forces.Branch(i)[j].Location[k], path1); + treeF.Add(support_forces.Branch(i)[j].Forces[k], path1); + treeM.Add(support_forces.Branch(i)[j].Moments[k], path1); + } + } treeFlag.Add(support_forces.Branch(i)[j].Flag.ToString(), path2); } } @@ -123,7 +128,6 @@ protected override void SolveInstance(IGH_DataAccess DA) DA.SetDataTree(2, treeF); DA.SetDataTree(3, treeM); DA.SetDataTree(4, treeFlag); - DA.SetDataTree(5, treeType); } /// @@ -157,7 +161,7 @@ protected override System.Drawing.Bitmap Icon /// public override Guid ComponentGuid { - get { return new Guid("32254ac4-9fbe-400d-8b1a-f05756cddc4f"); } + get { return new Guid("d216ddd1-61c8-4c22-af07-31e58c22dbdc"); } } } } diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/Component_ResultsMemberForces_GUI-RAZER-DAQ.cs b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/Component_ResultsMemberForces_GUI-RAZER-DAQ.cs new file mode 100644 index 0000000..30b4b88 --- /dev/null +++ b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/Component_ResultsMemberForces_GUI-RAZER-DAQ.cs @@ -0,0 +1,163 @@ +using Grasshopper; +using Grasshopper.Kernel; +using Grasshopper.Kernel.Data; +using Parametric_FEM_Toolbox.RFEM; +using Rhino.Geometry; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Parametric_FEM_Toolbox.GUI +{ + public class Component_ResultsMemberForces_GUI : GH_Component + { + /// + /// Each implementation of GH_Component must provide a public + /// constructor without any arguments. + /// Category represents the Tab in which the component will appear, + /// Subcategory the panel. If you use non-existing tab or panel names, + /// new tabs/panels will automatically be created. + /// + public Component_ResultsMemberForces_GUI() + : base("Member Forces", "MForces", "Get Member Forces from Calculation Results.", "B+G Toolbox", "RFEM") + { + } + + /// + /// Registers all the input parameters for this component. + /// + protected override void RegisterInputParams(GH_Component.GH_InputParamManager pManager) + { + // Use the pManager object to register your input parameters. + // You can often supply default values when creating parameters. + // All parameters must have the correct access type. If you want + // to import lists or trees of values, modify the ParamAccess flag. + pManager.AddParameter(new Param_RFEM(), "Calculation Results", "Results", "Calculation results of a certain load case or load combination.", GH_ParamAccess.list); + } + + /// + /// Registers all the output parameters for this component. + /// + protected override void RegisterOutputParams(GH_Component.GH_OutputParamManager pManager) + { + // Use the pManager object to register your output parameters. + // Output parameters do not have default values, but they too must have the correct access type. + pManager.AddIntegerParameter("Member Number", "No", "Index of the RFEM Member", GH_ParamAccess.tree); + pManager.AddNumberParameter("Location", "Loc", "Location of results along member axis", GH_ParamAccess.tree); + pManager.AddVectorParameter("Forces", "F", "Member Forces [kN]", GH_ParamAccess.tree); + pManager.AddVectorParameter("Moments", "M", "Member Moments [kNm]", GH_ParamAccess.tree); + pManager.AddTextParameter("Results Flag", "Flag", "Results Flag", GH_ParamAccess.tree); + pManager.AddTextParameter("Results Type", "Type", "Results Value Type", GH_ParamAccess.list); + + // Sometimes you want to hide a specific parameter from the Rhino preview. + // You can use the HideParameter() method as a quick way: + //pManager.HideParameter(0); + } + + /// + /// This is the method that actually does the work. + /// + /// The DA object can be used to retrieve data from input parameters and + /// to store data in output parameters. + protected override void SolveInstance(IGH_DataAccess DA) + { + // Output variables + var treeNo = new DataTree(); + var treeLoc = new DataTree(); + var treeF = new DataTree(); + var treeM = new DataTree(); + //var listLoading = new List(); + var treeFlag = new DataTree(); + var treeType = new DataTree(); + + // Input + var inGH = new List(); + var rfResults = new List(); + if (!DA.GetDataList(0, inGH)) + { + return; + } + foreach (var gh in inGH) + { + if (!(gh == null)) + { + rfResults.Add((RFResults)gh.Value); + } + } + var member_forces = new DataTree(); + for (int i = 0; i < rfResults.Count; i++) + { + if (!(rfResults[i].MemberForces == null)) + { + var path = new GH_Path(i); + member_forces.AddRange(rfResults[i].MemberForces, path); + } + } + + // Get output + if (member_forces.DataCount == 0) + { + AddRuntimeMessage(GH_RuntimeMessageLevel.Warning, "No results available"); + return; + } + for (int i = 0; i < member_forces.BranchCount; i++) + { + for (int j = 0; j < member_forces.Branch(i).Count; j++) + { + var path1 = new GH_Path(i,j); + var path2 = new GH_Path(i); + treeNo.Add(member_forces.Branch(i)[j].MemberNo, path2); + treeLoc.AddRange(member_forces.Branch(i)[j].Location, path1); + treeF.AddRange(member_forces.Branch(i)[j].Forces, path1); + treeM.AddRange(member_forces.Branch(i)[j].Moments, path1); + treeType.AddRange(member_forces.Branch(i)[j].Type, path1); + treeFlag.Add(member_forces.Branch(i)[j].Flag.ToString(), path2); + } + } + + // Output + DA.SetDataTree(0, treeNo); + DA.SetDataTree(1, treeLoc); + DA.SetDataTree(2, treeF); + DA.SetDataTree(3, treeM); + DA.SetDataTree(4, treeFlag); + DA.SetDataTree(5, treeType); + } + + /// + /// The Exposure property controls where in the panel a component icon + /// will appear. There are seven possible locations (primary to septenary), + /// each of which can be combined with the GH_Exposure.obscure flag, which + /// ensures the component will only be visible on panel dropdowns. + /// + public override GH_Exposure Exposure + { + get { return GH_Exposure.senary; } + } + + /// + /// Provides an Icon for every component that will be visible in the User Interface. + /// Icons need to be 24x24 pixels. + /// + protected override System.Drawing.Bitmap Icon + { + get + { + // You can add image files to your project resources and access them like this: + return Properties.Resources.Results_MemberForces; + } + } + + /// + /// Each component must have a unique Guid to identify it. + /// It is vital this Guid doesn't change otherwise old ghx files + /// that use the old ID will partially fail during loading. + /// + public override Guid ComponentGuid + { + get { return new Guid("4bd4c1f0-12bb-4d87-a0c2-607b04b77277"); } + } + } +} diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/Component_ResultsMemberForces_GUI.cs b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/Component_ResultsMemberForces_GUI.cs index fe9b20b..559e0bf 100644 --- a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/Component_ResultsMemberForces_GUI.cs +++ b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/Component_ResultsMemberForces_GUI.cs @@ -49,7 +49,6 @@ protected override void RegisterOutputParams(GH_Component.GH_OutputParamManager pManager.AddVectorParameter("Forces", "F", "Member Forces [kN]", GH_ParamAccess.tree); pManager.AddVectorParameter("Moments", "M", "Member Moments [kNm]", GH_ParamAccess.tree); pManager.AddTextParameter("Results Flag", "Flag", "Results Flag", GH_ParamAccess.tree); - pManager.AddTextParameter("Results Type", "Type", "Results Value Type", GH_ParamAccess.list); // Sometimes you want to hide a specific parameter from the Rhino preview. // You can use the HideParameter() method as a quick way: @@ -109,10 +108,16 @@ protected override void SolveInstance(IGH_DataAccess DA) var path1 = new GH_Path(i,j); var path2 = new GH_Path(i); treeNo.Add(member_forces.Branch(i)[j].MemberNo, path2); - treeLoc.AddRange(member_forces.Branch(i)[j].Location, path1); - treeF.AddRange(member_forces.Branch(i)[j].Forces, path1); - treeM.AddRange(member_forces.Branch(i)[j].Moments, path1); - treeType.AddRange(member_forces.Branch(i)[j].Type, path1); + for (int k = 0; k < member_forces.Branch(i)[j].Location.Count; k++) + { + if(member_forces.Branch(i)[j].Type[k] == rfResults[i].ResultType) + { + + } + treeLoc.Add(member_forces.Branch(i)[j].Location[k], path1); + treeF.Add(member_forces.Branch(i)[j].Forces[k], path1); + treeM.Add(member_forces.Branch(i)[j].Moments[k], path1); + } treeFlag.Add(member_forces.Branch(i)[j].Flag.ToString(), path2); } } @@ -123,7 +128,6 @@ protected override void SolveInstance(IGH_DataAccess DA) DA.SetDataTree(2, treeF); DA.SetDataTree(3, treeM); DA.SetDataTree(4, treeFlag); - DA.SetDataTree(5, treeType); } /// diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/Component_ResultsNodeReactions_GUI.cs b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/Component_ResultsNodeReactions_GUI.cs index 658d12a..09673e0 100644 --- a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/Component_ResultsNodeReactions_GUI.cs +++ b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/Component_ResultsNodeReactions_GUI.cs @@ -49,7 +49,6 @@ protected override void RegisterOutputParams(GH_Component.GH_OutputParamManager pManager.AddPointParameter("Location", "Loc", "Support Location", GH_ParamAccess.tree); pManager.AddVectorParameter("Forces", "F", "Member Forces in global CSys [kN]", GH_ParamAccess.tree); pManager.AddVectorParameter("Moments", "M", "Member Moments in global CSys [kNm]", GH_ParamAccess.tree); - pManager.AddTextParameter("Results Type", "Type", "Results Value Type", GH_ParamAccess.tree); // Sometimes you want to hide a specific parameter from the Rhino preview. // You can use the HideParameter() method as a quick way: @@ -68,7 +67,6 @@ protected override void SolveInstance(IGH_DataAccess DA) var treeCoor = new DataTree(); var treeF = new DataTree(); var treeM = new DataTree(); - var treeType = new DataTree(); // Input var inGH = new List(); @@ -105,11 +103,13 @@ protected override void SolveInstance(IGH_DataAccess DA) for (int j = 0; j < reaction_forces.Branch(i).Count; j++) { var path = new GH_Path(i); - treeNo.Add(reaction_forces.Branch(i)[j].NodeNo, path); - treeCoor.Add(reaction_forces.Branch(i)[j].Location, path); - treeF.Add(reaction_forces.Branch(i)[j].Forces, path); - treeM.Add(reaction_forces.Branch(i)[j].Moments, path); - treeType.Add(reaction_forces.Branch(i)[j].Type, path); + if(reaction_forces.Branch(i)[j].Type == rfResults[i].ResultType) + { + treeNo.Add(reaction_forces.Branch(i)[j].NodeNo, path); + treeCoor.Add(reaction_forces.Branch(i)[j].Location, path); + treeF.Add(reaction_forces.Branch(i)[j].Forces, path); + treeM.Add(reaction_forces.Branch(i)[j].Moments, path); + } } } @@ -118,7 +118,6 @@ protected override void SolveInstance(IGH_DataAccess DA) DA.SetDataTree(1, treeCoor); DA.SetDataTree(2, treeF); DA.SetDataTree(3, treeM); - DA.SetDataTree(4, treeType); } /// @@ -152,7 +151,7 @@ protected override System.Drawing.Bitmap Icon /// public override Guid ComponentGuid { - get { return new Guid("1dd90138-c7ef-4811-ac44-ad0e68199921"); } + get { return new Guid("7672c4b1-7421-4639-bf4d-870bcf89a323"); } } } } diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/Component_ResultsSurfaceForces_GUI.cs b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/Component_ResultsSurfaceForces_GUI.cs index 13f3425..78a4ca2 100644 --- a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/Component_ResultsSurfaceForces_GUI.cs +++ b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/Component_ResultsSurfaceForces_GUI.cs @@ -49,8 +49,7 @@ protected override void RegisterOutputParams(GH_Component.GH_OutputParamManager pManager.AddIntegerParameter("Surface Number", "No", "Index of the RFEM Surface", GH_ParamAccess.tree); pManager.AddPointParameter("Coordinates", "Pt", "Coordinates of results", GH_ParamAccess.tree); - pManager.AddIntegerParameter("Location", "Loc", "Location of results", GH_ParamAccess.tree); - pManager.AddTextParameter("Type", "Type", "Results Type", GH_ParamAccess.tree); + pManager.AddIntegerParameter("Location", "Loc", "Location of results", GH_ParamAccess.tree); pManager.AddNumberParameter("AxialForceAlphaM", "αm", "Axial force αm [kN/m]", GH_ParamAccess.tree); pManager.AddNumberParameter("AxialForceN1", "n1", "Axial force n1 [kN/m]", GH_ParamAccess.tree); pManager.AddNumberParameter("AxialForceN2", "n2", "Axial force n2 [kN/m]", GH_ParamAccess.tree); @@ -163,36 +162,42 @@ protected override void SolveInstance(IGH_DataAccess DA) var path = new GH_Path(i, j); var path2 = new GH_Path(i); treeNo.Add(sfc_forces.Branch(i)[j].SurfaceNo, path2); - treeCoor.AddRange(sfc_forces.Branch(i)[j].Location, path); - treeLoc.AddRange(sfc_forces.Branch(i)[j].LocationNo, path); - treeType.AddRange(sfc_forces.Branch(i)[j].Type, path); - axialForceAlphaM.AddRange(sfc_forces.Branch(i)[j].AxialForceAlphaM, path); - axialForceN1.AddRange(sfc_forces.Branch(i)[j].AxialForceN1, path); - axialForceN2.AddRange(sfc_forces.Branch(i)[j].AxialForceN2, path); - axialForceNcD.AddRange(sfc_forces.Branch(i)[j].AxialForceNcD, path); - axialForceNx.AddRange(sfc_forces.Branch(i)[j].AxialForceNx, path); - axialForceNxD.AddRange(sfc_forces.Branch(i)[j].AxialForceNxD, path); - axialForceNxy.AddRange(sfc_forces.Branch(i)[j].AxialForceNxy, path); - axialForceNy.AddRange(sfc_forces.Branch(i)[j].AxialForceNy, path); - axialForceNyD.AddRange(sfc_forces.Branch(i)[j].AxialForceNyD, path); - axialForceVMaxM.AddRange(sfc_forces.Branch(i)[j].AxialForceVMaxM, path); - momentAlphaB.AddRange(sfc_forces.Branch(i)[j].MomentAlphaB, path); - momentM1.AddRange(sfc_forces.Branch(i)[j].MomentM1, path); - momentM2.AddRange(sfc_forces.Branch(i)[j].MomentM2, path); - momentMcDNegative.AddRange(sfc_forces.Branch(i)[j].MomentMcDNegative, path); - momentMcDPositive.AddRange(sfc_forces.Branch(i)[j].MomentMcDPositive, path); - momentMx.AddRange(sfc_forces.Branch(i)[j].MomentMx, path); - momentMxDNegative.AddRange(sfc_forces.Branch(i)[j].MomentMxDNegative, path); - momentMxDPositive.AddRange(sfc_forces.Branch(i)[j].MomentMxDPositive, path); - momentMxy.AddRange(sfc_forces.Branch(i)[j].MomentMxy, path); - momentMy.AddRange(sfc_forces.Branch(i)[j].MomentMy, path); - momentMyDNegative.AddRange(sfc_forces.Branch(i)[j].MomentMyDNegative, path); - momentMyDPositive.AddRange(sfc_forces.Branch(i)[j].MomentMyDPositive, path); - momentTMaxB.AddRange(sfc_forces.Branch(i)[j].MomentTMaxB, path); - shearForceBetaB.AddRange(sfc_forces.Branch(i)[j].ShearForceBetaB, path); - shearForceVMaxB.AddRange(sfc_forces.Branch(i)[j].ShearForceVMaxB, path); - shearForceVx.AddRange(sfc_forces.Branch(i)[j].ShearForceVx, path); - shearForceVy.AddRange(sfc_forces.Branch(i)[j].ShearForceVy, path); + for (int k = 0; k < sfc_forces.Branch(i)[j].Location.Count; k++) + { + if (sfc_forces.Branch(i)[j].Type[k] == rfResults[i].ResultType) + { + treeCoor.Add(sfc_forces.Branch(i)[j].Location[k], path); + treeLoc.Add(sfc_forces.Branch(i)[j].LocationNo[k], path); + treeType.Add(sfc_forces.Branch(i)[j].Type[k], path); + axialForceAlphaM.Add(sfc_forces.Branch(i)[j].AxialForceAlphaM[k], path); + axialForceN1.Add(sfc_forces.Branch(i)[j].AxialForceN1[k], path); + axialForceN2.Add(sfc_forces.Branch(i)[j].AxialForceN2[k], path); + axialForceNcD.Add(sfc_forces.Branch(i)[j].AxialForceNcD[k], path); + axialForceNx.Add(sfc_forces.Branch(i)[j].AxialForceNx[k], path); + axialForceNxD.Add(sfc_forces.Branch(i)[j].AxialForceNxD[k], path); + axialForceNxy.Add(sfc_forces.Branch(i)[j].AxialForceNxy[k], path); + axialForceNy.Add(sfc_forces.Branch(i)[j].AxialForceNy[k], path); + axialForceNyD.Add(sfc_forces.Branch(i)[j].AxialForceNyD[k], path); + axialForceVMaxM.Add(sfc_forces.Branch(i)[j].AxialForceVMaxM[k], path); + momentAlphaB.Add(sfc_forces.Branch(i)[j].MomentAlphaB[k], path); + momentM1.Add(sfc_forces.Branch(i)[j].MomentM1[k], path); + momentM2.Add(sfc_forces.Branch(i)[j].MomentM2[k], path); + momentMcDNegative.Add(sfc_forces.Branch(i)[j].MomentMcDNegative[k], path); + momentMcDPositive.Add(sfc_forces.Branch(i)[j].MomentMcDPositive[k], path); + momentMx.Add(sfc_forces.Branch(i)[j].MomentMx[k], path); + momentMxDNegative.Add(sfc_forces.Branch(i)[j].MomentMxDNegative[k], path); + momentMxDPositive.Add(sfc_forces.Branch(i)[j].MomentMxDPositive[k], path); + momentMxy.Add(sfc_forces.Branch(i)[j].MomentMxy[k], path); + momentMy.Add(sfc_forces.Branch(i)[j].MomentMy[k], path); + momentMyDNegative.Add(sfc_forces.Branch(i)[j].MomentMyDNegative[k], path); + momentMyDPositive.Add(sfc_forces.Branch(i)[j].MomentMyDPositive[k], path); + momentTMaxB.Add(sfc_forces.Branch(i)[j].MomentTMaxB[k], path); + shearForceBetaB.Add(sfc_forces.Branch(i)[j].ShearForceBetaB[k], path); + shearForceVMaxB.Add(sfc_forces.Branch(i)[j].ShearForceVMaxB[k], path); + shearForceVx.Add(sfc_forces.Branch(i)[j].ShearForceVx[k], path); + shearForceVy.Add(sfc_forces.Branch(i)[j].ShearForceVy[k], path); + } + } } } @@ -200,34 +205,33 @@ protected override void SolveInstance(IGH_DataAccess DA) DA.SetDataTree(0, treeNo); DA.SetDataTree(1, treeCoor); DA.SetDataTree(2, treeLoc); - DA.SetDataTree(3, treeType); - DA.SetDataTree(4, axialForceAlphaM); - DA.SetDataTree(5, axialForceN1); - DA.SetDataTree(6, axialForceN2); - DA.SetDataTree(7, axialForceNcD); - DA.SetDataTree(8, axialForceNx); - DA.SetDataTree(9, axialForceNxD); - DA.SetDataTree(10, axialForceNxy); - DA.SetDataTree(11, axialForceNy); - DA.SetDataTree(12, axialForceNyD); - DA.SetDataTree(13, axialForceVMaxM); - DA.SetDataTree(14, momentAlphaB); - DA.SetDataTree(15, momentM1); - DA.SetDataTree(16, momentM2); - DA.SetDataTree(17, momentMcDNegative); - DA.SetDataTree(18, momentMcDPositive); - DA.SetDataTree(19, momentMx); - DA.SetDataTree(20, momentMxDNegative); - DA.SetDataTree(21, momentMxDPositive); - DA.SetDataTree(22, momentMxy); - DA.SetDataTree(23, momentMy); - DA.SetDataTree(24, momentMyDNegative); - DA.SetDataTree(25, momentMyDPositive); - DA.SetDataTree(26, momentTMaxB); - DA.SetDataTree(27, shearForceBetaB); - DA.SetDataTree(28, shearForceVMaxB); - DA.SetDataTree(29, shearForceVx); - DA.SetDataTree(30, shearForceVy); + DA.SetDataTree(3, axialForceAlphaM); + DA.SetDataTree(4, axialForceN1); + DA.SetDataTree(5, axialForceN2); + DA.SetDataTree(6, axialForceNcD); + DA.SetDataTree(7, axialForceNx); + DA.SetDataTree(8, axialForceNxD); + DA.SetDataTree(9, axialForceNxy); + DA.SetDataTree(10, axialForceNy); + DA.SetDataTree(11, axialForceNyD); + DA.SetDataTree(12, axialForceVMaxM); + DA.SetDataTree(13, momentAlphaB); + DA.SetDataTree(14, momentM1); + DA.SetDataTree(15, momentM2); + DA.SetDataTree(16, momentMcDNegative); + DA.SetDataTree(17, momentMcDPositive); + DA.SetDataTree(18, momentMx); + DA.SetDataTree(19, momentMxDNegative); + DA.SetDataTree(20, momentMxDPositive); + DA.SetDataTree(21, momentMxy); + DA.SetDataTree(22, momentMy); + DA.SetDataTree(23, momentMyDNegative); + DA.SetDataTree(24, momentMyDPositive); + DA.SetDataTree(25, momentTMaxB); + DA.SetDataTree(26, shearForceBetaB); + DA.SetDataTree(27, shearForceVMaxB); + DA.SetDataTree(28, shearForceVx); + DA.SetDataTree(29, shearForceVy); } /// @@ -261,7 +265,7 @@ protected override System.Drawing.Bitmap Icon /// public override Guid ComponentGuid { - get { return new Guid("df9e7012-2731-47d4-987c-6e3ae4c6fb52"); } + get { return new Guid("f9304ed3-1dad-4671-a8eb-909a4b586856"); } } } -} +} \ No newline at end of file diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/SubComponent_RFSurface_Assemble_GUI.cs b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/SubComponent_RFSurface_Assemble_GUI.cs index a9969ca..7807e76 100644 --- a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/SubComponent_RFSurface_Assemble_GUI.cs +++ b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/SubComponent_RFSurface_Assemble_GUI.cs @@ -64,39 +64,42 @@ protected void Setup(EvaluationUnit unit) unit.RegisterInputParam(new Param_Integer(), "Stiffness Type", "Stiff", UtilLibrary.DescriptionRFTypes(typeof(SurfaceStiffnessType)), GH_ParamAccess.item); unit.Inputs[8].EnumInput = UtilLibrary.ListRFTypes(typeof(SurfaceStiffnessType)); unit.Inputs[8].Parameter.Optional = true; + unit.RegisterInputParam(new Param_Number(), "Eccentricty [m]", "Ecc", "Surface eccentricity [m]", GH_ParamAccess.item); + unit.Inputs[9].Parameter.Optional = true; gH_ExtendableMenu.RegisterInputPlug(unit.Inputs[5]); gH_ExtendableMenu.RegisterInputPlug(unit.Inputs[6]); gH_ExtendableMenu.RegisterInputPlug(unit.Inputs[7]); gH_ExtendableMenu.RegisterInputPlug(unit.Inputs[8]); + gH_ExtendableMenu.RegisterInputPlug(unit.Inputs[9]); unit.AddMenu(gH_ExtendableMenu); GH_ExtendableMenu gH_ExtendableMenu1 = new GH_ExtendableMenu(1, "surface axes"); gH_ExtendableMenu1.Name = "Surface Axes"; gH_ExtendableMenu1.Collapse(); unit.RegisterInputParam(new Param_Integer(), "Direction", "Dir", UtilLibrary.DescriptionRFTypes(typeof(SurfaceAxesDirection)), GH_ParamAccess.item); - unit.Inputs[9].EnumInput = UtilLibrary.ListRFTypes(typeof(SurfaceAxesDirection)); - unit.Inputs[9].Parameter.Optional = true; - unit.RegisterInputParam(new Param_Integer(), "Line Index", "Line", "Line Index", GH_ParamAccess.item); + unit.Inputs[10].EnumInput = UtilLibrary.ListRFTypes(typeof(SurfaceAxesDirection)); unit.Inputs[10].Parameter.Optional = true; - unit.RegisterInputParam(new Param_Number(), "Rotation [rad]", "Rot", "Angular rotation [rad]", GH_ParamAccess.item); + unit.RegisterInputParam(new Param_Integer(), "Line Index", "Line", "Line Index", GH_ParamAccess.item); unit.Inputs[11].Parameter.Optional = true; - gH_ExtendableMenu1.RegisterInputPlug(unit.Inputs[9]); + unit.RegisterInputParam(new Param_Number(), "Rotation [rad]", "Rot", "Angular rotation [rad]", GH_ParamAccess.item); + unit.Inputs[12].Parameter.Optional = true; gH_ExtendableMenu1.RegisterInputPlug(unit.Inputs[10]); gH_ExtendableMenu1.RegisterInputPlug(unit.Inputs[11]); + gH_ExtendableMenu1.RegisterInputPlug(unit.Inputs[12]); unit.AddMenu(gH_ExtendableMenu1); GH_ExtendableMenu gH_ExtendableMenu2 = new GH_ExtendableMenu(2, "modify"); gH_ExtendableMenu2.Name = "Modify"; gH_ExtendableMenu2.Collapse(); unit.RegisterInputParam(new Param_RFEM(), "RF Surface", "RF Surface", "Surface object from the RFEM model to modify", GH_ParamAccess.item); - unit.Inputs[12].Parameter.Optional = true; - unit.RegisterInputParam(new Param_Boolean(), "Modify", "Modify", "Modify object?", GH_ParamAccess.item); unit.Inputs[13].Parameter.Optional = true; - unit.RegisterInputParam(new Param_Boolean(), "Delete", "Delete", "Delete object?", GH_ParamAccess.item); + unit.RegisterInputParam(new Param_Boolean(), "Modify", "Modify", "Modify object?", GH_ParamAccess.item); unit.Inputs[14].Parameter.Optional = true; - gH_ExtendableMenu2.RegisterInputPlug(unit.Inputs[12]); + unit.RegisterInputParam(new Param_Boolean(), "Delete", "Delete", "Delete object?", GH_ParamAccess.item); + unit.Inputs[15].Parameter.Optional = true; gH_ExtendableMenu2.RegisterInputPlug(unit.Inputs[13]); gH_ExtendableMenu2.RegisterInputPlug(unit.Inputs[14]); + gH_ExtendableMenu2.RegisterInputPlug(unit.Inputs[15]); unit.AddMenu(gH_ExtendableMenu2); unit.RegisterOutputParam(new Param_RFEM(), "RF Surface", "RF Surface", "Output RFSurface."); @@ -121,6 +124,7 @@ public override void SolveInstance(IGH_DataAccess DA, out string msg, out GH_Run var thickType = 0; var thick = 0.0; var mat = 0; + var ecc = 0.0; //int intPoints = 4; //int newNo = 0; RFEM.SurfaceAxes axes = new RFEM.SurfaceAxes(); @@ -131,7 +135,7 @@ public override void SolveInstance(IGH_DataAccess DA, out string msg, out GH_Run int csNo = 0; var rot = 0.0; - if (DA.GetData(12, ref inRFEM)) + if (DA.GetData(13, ref inRFEM)) { rfSrfc = new RFSurface((RFSurface)inRFEM.Value); if (DA.GetData(0, ref inSrfc)) @@ -175,7 +179,6 @@ public override void SolveInstance(IGH_DataAccess DA, out string msg, out GH_Run rfSrfc.MaterialNo = mat; rfSrfc.Thickness = thick; } - //DA.GetData(7, ref intPoints); Component_RFSurface.SetGeometry(inSrfc, ref rfSrfc); if (DA.GetData(6, ref geomType)) { @@ -222,10 +225,6 @@ public override void SolveInstance(IGH_DataAccess DA, out string msg, out GH_Run return; } } - //}else - //{ - // rfSrfc.GeometryType = SurfaceGeometryType.PlaneSurfaceType; - //} } else { @@ -233,11 +232,11 @@ public override void SolveInstance(IGH_DataAccess DA, out string msg, out GH_Run level = GH_RuntimeMessageLevel.Warning; return; } - if (DA.GetData(13, ref mod)) + if (DA.GetData(14, ref mod)) { rfSrfc.ToModify = mod; } - if (DA.GetData(14, ref del)) + if (DA.GetData(15, ref del)) { rfSrfc.ToDelete = del; } @@ -273,7 +272,12 @@ public override void SolveInstance(IGH_DataAccess DA, out string msg, out GH_Run return; } } - if (DA.GetData(9, ref axesDirType)) + if (DA.GetData(9, ref ecc)) + { + rfSrfc.Eccentricity = ecc; + + } + if (DA.GetData(10, ref axesDirType)) { axes.SurfaceAxesDirection = (SurfaceAxesDirection)axesDirType; @@ -298,7 +302,7 @@ public override void SolveInstance(IGH_DataAccess DA, out string msg, out GH_Run level = GH_RuntimeMessageLevel.Warning; return; case SurfaceAxesDirection.SurfaceAngularRotation: - if (!(DA.GetData(11, ref rot))) + if (!(DA.GetData(12, ref rot))) { msg = "Insufficient input parameters. Provide Angular rotation."; level = GH_RuntimeMessageLevel.Warning; @@ -315,7 +319,7 @@ public override void SolveInstance(IGH_DataAccess DA, out string msg, out GH_Run level = GH_RuntimeMessageLevel.Warning; return; case SurfaceAxesDirection.SurfaceAxisXParallelToLine: - if (!DA.GetData(10, ref axesLines)) + if (!DA.GetData(11, ref axesLines)) { msg = "Insufficient input parameters. Provide Line."; level = GH_RuntimeMessageLevel.Warning; @@ -324,7 +328,7 @@ public override void SolveInstance(IGH_DataAccess DA, out string msg, out GH_Run axes.AxesLineList = axesLines.ToString(); break; case SurfaceAxesDirection.SurfaceAxisYParallelToLine: - if (!DA.GetData(10, ref axesLines)) + if (!DA.GetData(11, ref axesLines)) { msg = "Insufficient input parameters. Provide Line."; level = GH_RuntimeMessageLevel.Warning; @@ -334,7 +338,7 @@ public override void SolveInstance(IGH_DataAccess DA, out string msg, out GH_Run break; } rfSrfc.SurfaceAxes = axes; - }else if(DA.GetData(11, ref rot) || DA.GetData(10, ref axesLines)) + }else if(DA.GetData(12, ref rot) || DA.GetData(11, ref axesLines)) { msg = "Insufficient input parameters. Provide Axes Direction."; level = GH_RuntimeMessageLevel.Warning; diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/SubComponent_RFSurface_Disassemble_GUI.cs b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/SubComponent_RFSurface_Disassemble_GUI.cs index d6070b2..31243f8 100644 --- a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/SubComponent_RFSurface_Disassemble_GUI.cs +++ b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/GUI/SubComponent_RFSurface_Disassemble_GUI.cs @@ -49,6 +49,7 @@ protected void Setup(EvaluationUnit unit) unit.RegisterOutputParam(new Param_String(), "Geometry Type", "GType", "Geometry Type"); unit.RegisterOutputParam(new Param_String(), "Thickness Type", "ThType", "Thickness Type"); unit.RegisterOutputParam(new Param_String(), "Stiffness Type", "SType", "Stiffness Type"); + unit.RegisterOutputParam(new Param_Number(), "Eccentricty [m]", "Ecc", "Surface eccentricity [m]"); unit.RegisterOutputParam(new Param_Number(), "Area [m²]", "A", "Surface area"); GH_ExtendableMenu gH_ExtendableMenu = new GH_ExtendableMenu(0, "advanced"); @@ -58,10 +59,10 @@ protected void Setup(EvaluationUnit unit) unit.RegisterOutputParam(new Param_String(), "Direction", "Dir", "Axes Direction"); unit.RegisterOutputParam(new Param_String(), "Line Index", "Line", "Line Index"); unit.RegisterOutputParam(new Param_Number(), "Rotation [rad]", "Rot", "Angular rotation [rad]"); - gH_ExtendableMenu.RegisterOutputPlug(unit.Outputs[10]); gH_ExtendableMenu.RegisterOutputPlug(unit.Outputs[11]); gH_ExtendableMenu.RegisterOutputPlug(unit.Outputs[12]); gH_ExtendableMenu.RegisterOutputPlug(unit.Outputs[13]); + gH_ExtendableMenu.RegisterOutputPlug(unit.Outputs[14]); unit.AddMenu(gH_ExtendableMenu); } @@ -87,13 +88,14 @@ public override void SolveInstance(IGH_DataAccess DA, out string msg, out GH_Run DA.SetData(6, rfSurface.GeometryType); DA.SetData(7, rfSurface.ThicknessType); DA.SetData(8, rfSurface.StiffnessType); - DA.SetData(9, rfSurface.Area); + DA.SetData(9, rfSurface.Eccentricity); + DA.SetData(10, rfSurface.Area); if (rfSurface.SurfaceAxes != null) { - DA.SetData(10, rfSurface.Axes); - DA.SetData(11, rfSurface.SurfaceAxes.SurfaceAxesDirection.ToString()); - DA.SetData(12, rfSurface.SurfaceAxes.AxesLineList); - DA.SetData(13, rfSurface.SurfaceAxes.Rotation); + DA.SetData(11, rfSurface.Axes); + DA.SetData(12, rfSurface.SurfaceAxes.SurfaceAxesDirection.ToString()); + DA.SetData(13, rfSurface.SurfaceAxes.AxesLineList); + DA.SetData(14, rfSurface.SurfaceAxes.Rotation); } } } diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/HelperLibraries/Component_SetData.cs b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/HelperLibraries/Component_SetData.cs index 49a53ad..69e0fd2 100644 --- a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/HelperLibraries/Component_SetData.cs +++ b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/HelperLibraries/Component_SetData.cs @@ -1703,7 +1703,6 @@ public static void SetRFNodalLoads(this IModelData data, ILoads loads, List existingNodes, ref int lastNo, ref int lastNLNo, double tol) diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/HelperLibraries/UtilLibrary.cs b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/HelperLibraries/UtilLibrary.cs index 875ddb5..1d62024 100644 --- a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/HelperLibraries/UtilLibrary.cs +++ b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/HelperLibraries/UtilLibrary.cs @@ -203,7 +203,10 @@ public static bool NullLineExists(IEnumerable alllines, IEnum return false; } - + public static string EmptyIfNull(this string self) + { + return self ?? ""; + } #endregion diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox-RAZER-DAQ.csproj b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox-RAZER-DAQ.csproj new file mode 100644 index 0000000..8efe937 --- /dev/null +++ b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox-RAZER-DAQ.csproj @@ -0,0 +1,640 @@ + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {8973F2E5-5115-4FB4-92D6-4690B62A09E0} + Library + Properties + Parametric_FEM_Toolbox + Parametric_FEM_Toolbox + v4.8 + 512 + false + + + + true + full + false + bin\ + DEBUG;TRACE + prompt + false + + + pdbonly + true + bin\ + TRACE + prompt + 4 + x64 + + + true + bin\x64\Debug\ + DEBUG;TRACE + full + x64 + prompt + MinimumRecommendedRules.ruleset + false + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + prompt + MinimumRecommendedRules.ruleset + + + + False + True + ..\..\..\..\..\..\..\..\Program Files (x86)\Common Files\Dlubal\ImportExport\RX-Common.NET\Dlubal.RFEM3.dll + + + False + True + ..\..\..\..\..\Otros\cominterfaces\SDK\Reference Assemblies\x64\Dlubal.RFEM5.dll + + + False + True + D:\Diego\Documentos\Otros\SDK_en\Reference Assemblies\x86\Dlubal.STEEL_EC3.dll + + + C:\Users\diego\.nuget\packages\eto.forms\2.4.1\lib\netstandard1.0\Eto.dll + + + False + ..\..\..\..\..\..\..\..\Program Files\Rhino 7\Plug-ins\Grasshopper\GH_IO.dll + + + False + ..\..\..\..\..\..\..\..\Program Files\Rhino 7\Plug-ins\Grasshopper\Grasshopper.dll + + + + False + ..\..\..\..\..\..\..\..\Program Files\Rhino 7\System\RhinoCommon.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + True + True + Resources.resx + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Copy "$(TargetPath)" "D:\Diego\AppData\Roaming\Grasshopper\Libraries\$(TargetName).gha" +Copy "$(TargetPath)" "C:\Users\diego\AppData\Roaming\Grasshopper\Libraries\$(TargetName).gha" +Copy "$(TargetPath)" "C:\Users\dapellaniz\AppData\Roaming\Grasshopper\Libraries\$(TargetName).gha" +Copy "$(TargetPath)" "D:\Users\dapellaniz\AppData\Roaming\Grasshopper\Libraries\$(ProjectName).gha" +Copy "$(TargetPath)" "$(TargetDir)$(ProjectName).gha" +Erase "$(TargetPath)" + + + en-US + + + C:\Program Files\Rhino 6\System\Rhino.exe + + + Program + AnyCPU + + \ No newline at end of file diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox.cs b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox.cs index 1035e05..6c0b7ed 100644 --- a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox.cs +++ b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox.cs @@ -59,7 +59,7 @@ public override string AssemblyVersion { get { - return "v1.2"; + return "v1.3"; } } } diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox.csproj b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox.csproj index 74fd848..7a49158 100644 --- a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox.csproj +++ b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox.csproj @@ -113,8 +113,12 @@ + + + + diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/RFEM/RFLineSupportForces-RAZER-DAQ.cs b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/RFEM/RFLineSupportForces-RAZER-DAQ.cs new file mode 100644 index 0000000..f72544d --- /dev/null +++ b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/RFEM/RFLineSupportForces-RAZER-DAQ.cs @@ -0,0 +1,106 @@ +using System; +using Dlubal.RFEM5; +using Grasshopper.Kernel.Types; +using Rhino.Geometry; +using Parametric_FEM_Toolbox.Utilities; +using Parametric_FEM_Toolbox.HelperLibraries; +using System.Collections.Generic; +using System.Linq; + +namespace Parametric_FEM_Toolbox.RFEM +{ + [Serializable] + public class RFLineSupportForces : IGrassRFEM + { + //Standard constructors + public RFLineSupportForces() + { + } + public RFLineSupportForces(LineSupportForces[] support_forces) // rfem object as array because they are related to the same member + { + if (support_forces.Length == 0) + { + return; + } + LineNo = support_forces[0].LineNo; + NodeNo = support_forces[0].NodeNo; + Flag = support_forces[0].Flag; + Forces = new List(); + Moments = new List(); + Location = new List(); + Type = new List(); + for (int i = 0; i < support_forces.Length; i++) + { + Forces.Add(new Vector3d(support_forces[i].Forces.ToPoint3d()/1000)); + Moments.Add(new Vector3d(support_forces[i].Moments.ToPoint3d()/1000)); + Location.Add(support_forces[i].Location); + Type.Add(support_forces[i].Type.ToString()); + } + ToModify = false; + ToDelete = false; + } + + // Properties to Wrap Fields from RFEM Struct + public int LineNo { get; set; } + public int NodeNo { get; set; } + public List Type { get; set; } + //public int CrossSectionNo { get; set; } // makes no sense? + public ResultsFlag Flag { get; set; } + public List Forces { get; set; } + public List Moments { get; set; } + public List Location { get; set; } + + // Additional Properties to the RFEM Struct + public bool ToModify { get; set; } + public bool ToDelete { get; set; } + //public int NewNo { get; set; } + + // Display Info of the RFEM Objects on Panels + // Parameters are separated by ";". The component split text can be used to break the string down into a list. + public override string ToString() + { + return string.Format($"RFEM-LineSupportForces;LineNo:{LineNo};" + + $"Flag:{Flag};Locations:{Location.Count};"); + } + + ////Operator to retrieve a Line from an rfLine. + //public static implicit operator MemberForces(RFMemberForces member_forces) + //{ + // Dlubal.RFEM5.MemberForces myForces = new Dlubal.RFEM5.MemberForces + + + // return myForces; + //} + + // Convert RFEM Object into Rhino Geometry. + // These methods are later implemented by the class GH_RFEM. + public bool ToGH_Integer(ref T target) + { + return false; + } + public bool ToGH_Point(ref T target) + { + return false; + } + public bool ToGH_Line(ref T target) + { + return false; + } + public bool ToGH_Curve(ref T target) + { + return false; + } + public bool ToGH_Surface(ref T target) + { + return false; + } + public bool ToGH_Brep(ref T target) + { + return false; + } + public bool ToGH_Plane(ref T target) + { + return false; + } + } +} diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/RFEM/RFResults.cs b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/RFEM/RFResults.cs index 554863f..0189776 100644 --- a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/RFEM/RFResults.cs +++ b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/RFEM/RFResults.cs @@ -35,24 +35,24 @@ public RFResults(IResults results, IModelData data, string loadcase, bool member ToDelete = false; } - public RFResults(IResults results, IModelData data, string loadcase, bool member_forces, bool surface_forces, bool reaction_forces, bool line_reaction_forces) // rfem object as array because they are related to the same member + public RFResults(IResults results, IModelData data, ref HashSet result_types, string loadcase, bool member_forces, bool surface_forces, bool reaction_forces, bool line_reaction_forces) // rfem object as array because they are related to the same member { LoadCase = loadcase; if (member_forces) { - MemberForces = GetRFMemberForces(results, data); + MemberForces = GetRFMemberForces(results, data, ref result_types); } if (surface_forces) { - SurfaceForces = GetRFSurfaceForces(results, data); + SurfaceForces = GetRFSurfaceForces(results, data, ref result_types); } if (reaction_forces) { - NodalSupportForces = GetRFNodalSupportForces(results, data); + NodalSupportForces = GetRFNodalSupportForces(results, data, ref result_types); } if (line_reaction_forces) { - LineSupportForces = GetRFLineSupportForces(results, data); + LineSupportForces = GetRFLineSupportForces(results, data, ref result_types); } ToModify = false; ToDelete = false; @@ -82,6 +82,25 @@ public List GetRFMemberForces(IResults results, IModelData data) return myForces; } + public List GetRFMemberForces(IResults results, IModelData data, ref HashSet types) + { + var myForces = new List(); + foreach (var member in data.GetMembers()) + { + if (member.Type == MemberType.NullMember) + { + continue; + } + var forces = results.GetMemberInternalForces(member.No, ItemAt.AtNo, true); // get results of the right type + myForces.Add(new RFMemberForces(forces)); + foreach (var type in forces.Select(x => x.Type).Distinct()) + { + types.Add(type); + } + } + return myForces; + } + public List GetRFSurfaceForces(IResults results, IModelData data) { var myForces = new List(); @@ -100,24 +119,25 @@ public List GetRFSurfaceForces(IResults results, IModelData dat return myForces; } - //Test - //public List GetRFSurfaceForces(IResults results, IResults results_raster, IModelData data) - //{ - // var myForces = new List(); - // foreach (var surface in data.GetSurfaces()) - // { - // if (surface.GeometryType == SurfaceGeometryType.UnknownGeometryType) - // { - // continue; - // } - // var forces = results.GetSurfaceInternalForces(surface.No, ItemAt.AtNo); - // var globalDeformations = results_raster.GetSurfaceDeformations(surface.No, ItemAt.AtNo, false); - // var localDeformations = results_raster.GetSurfaceDeformations(surface.No, ItemAt.AtNo, true); - // var local_axis = Component_GetResults.GetSurfaceLocalAxis(globalDeformations, localDeformations); - // myForces.Add(new RFSurfaceForces(forces, local_axis)); - // } - // return myForces; - //} + public List GetRFSurfaceForces(IResults results, IModelData data, ref HashSet types) + { + var myForces = new List(); + foreach (var surface in data.GetSurfaces()) + { + if (surface.GeometryType == SurfaceGeometryType.UnknownGeometryType) + { + continue; + } + var forces = results.GetSurfaceInternalForces(surface.No, ItemAt.AtNo); + myForces.Add(new RFSurfaceForces(forces)); + foreach (var type in forces.Select(x => x.Type).Distinct()) + { + types.Add(type); + } + } + return myForces; + } + public List GetRFNodalSupportForces(IResults results, IModelData data) { @@ -129,6 +149,17 @@ public List GetRFNodalSupportForces(IResults results, IMod return myForces; } + public List GetRFNodalSupportForces(IResults results, IModelData data, ref HashSet types) + { + var myForces = new List(); + foreach (var nodalsupportforce in results.GetAllNodalSupportForces(false)) + { + myForces.Add(new RFNodalSupportForces(nodalsupportforce, data)); + types.Add(nodalsupportforce.Type); + } + return myForces; + } + public List GetRFLineSupportForces(IResults results, IModelData data) { var myForces = new List(); @@ -143,12 +174,31 @@ public List GetRFLineSupportForces(IResults results, IModel return myForces; } + public List GetRFLineSupportForces(IResults results, IModelData data, ref HashSet types) + { + var myForces = new List(); + foreach (var linesupport in data.GetLineSupports()) + { + foreach (var line in linesupport.LineList.ToInt()) + { + var forces = results.GetLineSupportForces(line, ItemAt.AtNo, false); + myForces.Add(new RFLineSupportForces(forces)); + foreach (var type in forces.Select(x => x.Type).Distinct()) + { + types.Add(type); + } + } + } + return myForces; + } + // Properties to Wrap Fields from RFEM Struct public string LoadCase { get; set; } public List MemberForces { get; set; } public List SurfaceForces { get; set; } public List NodalSupportForces { get; set; } public List LineSupportForces { get; set; } + public string ResultType { get; set; } // Additional Properties to the RFEM Struct public bool ToModify { get; set; } @@ -159,7 +209,7 @@ public List GetRFLineSupportForces(IResults results, IModel // Parameters are separated by ";". The component split text can be used to break the string down into a list. public override string ToString() { - var outString = string.Format($"RFEM-Results: {LoadCase}; Available Results:" + + var outString = string.Format($"RFEM-Results: {LoadCase}; ResultType: {ResultType}, Available Results:" + $"{((MemberForces == null) ? "" : " Member Forces,")}" + $"{((SurfaceForces == null) ? "" : " Surface Forces,")}" + $"{((NodalSupportForces == null) ? "" : " Nodal Support Forces,")}" + diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/RFEM/RFSurface.cs b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/RFEM/RFSurface.cs index 1fbaa07..edde9ad 100644 --- a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/RFEM/RFSurface.cs +++ b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/RFEM/RFSurface.cs @@ -115,6 +115,7 @@ public RFSurface(RFSurface other) : this(other, null, null, other.SurfaceAxes) / public string IntegratedNodeList { get; set; } public int MaterialNo { get; set; } public bool SetIntegratedObjects { get; set; } + public SurfaceStiffnessType StiffnessType { get; set; } public SurfaceThicknessType ThicknessType { get; set; } public double Thickness { get; set; } @@ -133,15 +134,15 @@ public RFSurface(RFSurface other) : this(other, null, null, other.SurfaceAxes) / public override string ToString() { return string.Format($"RFEM-Surface;No:{No};Area:{Area}[m2];MaterialNo:{MaterialNo};" + - $"Thickness:{Thickness}[m];Type:{GeometryType};ThicknessType:{ThicknessType};StiffnessType:{StiffnessType};BoundaryLineCount:{BoundaryLineCount};SurfaceAxesDirection:{SurfaceAxes.SurfaceAxesDirection};" + - $"BoundaryLineList:{((BoundaryLineList == "") ? "-" : BoundaryLineList)};Eccentricity:{Eccentricity};" + - $"IntegratedLineCount:{IntegratedLineCount};IntegratedLineList:{((IntegratedLineList == "") ? "-" : IntegratedLineList)};" + - $"IntegratedNodeCount:{IntegratedNodeCount};IntegratedNodeList:{((IntegratedNodeList == "") ? "-" : IntegratedNodeList)};" + - $"SetIntegratedObjects:{SetIntegratedObjects};ControlPoints:{ControlPoints.ToLabelString()};Tag:{((Tag == "") ? "-" : Tag)};" + + $"Thickness:{Thickness}[m];Type:{GeometryType};ThicknessType:{ThicknessType};StiffnessType:{StiffnessType};BoundaryLineCount:{BoundaryLineCount};" + + $"BoundaryLineList:{((String.IsNullOrEmpty(BoundaryLineList)) ? "-" : BoundaryLineList.EmptyIfNull())};Eccentricity:{Eccentricity};" + + $"IntegratedLineCount:{IntegratedLineCount};IntegratedLineList:{((String.IsNullOrEmpty(IntegratedLineList)) ? "-" : IntegratedLineList.EmptyIfNull())};" + + $"IntegratedNodeCount:{IntegratedNodeCount};IntegratedNodeList:{((String.IsNullOrEmpty(IntegratedNodeList)) ? "-" : IntegratedNodeList.EmptyIfNull())};" + + $"SetIntegratedObjects:{SetIntegratedObjects};ControlPoints:{((ControlPoints == null) ? "-" : ControlPoints.ToLabelString())};Tag:{((String.IsNullOrEmpty(Tag)) ? "-" : Tag)};" + //$"Weights:{(Weights.ToString())};KnotsX:{(KnotsX.ToLabelString())};KnotsY:{(KnotsY.ToLabelString())};" + //$"OrderU:{(OrderX.ToString())};OrderV:{(OrderY.ToString())};" + - $"IsValid:{IsValid};IsGenerated:{IsGenerated};ID:{((ID == "") ? "-" : ID)};" + - $"ToModify:{ToModify};ToDelete:{ToDelete};Comment:{((Comment == "") ? "-" : Comment)};"); + $"IsValid:{IsValid};IsGenerated:{IsGenerated};ID:{((String.IsNullOrEmpty(ID)) ? "-" : ID)};" + + $"ToModify:{ToModify};ToDelete:{ToDelete};Comment:{((String.IsNullOrEmpty(Comment)) ? "-" : Comment.EmptyIfNull())};"); } //Operator to retrieve a Line from an rfLine. diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/RFEM/RFSurfaceLoad.cs b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/RFEM/RFSurfaceLoad.cs index b5a031c..587654c 100644 --- a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/RFEM/RFSurfaceLoad.cs +++ b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/RFEM/RFSurfaceLoad.cs @@ -83,7 +83,7 @@ public RFSurfaceLoad(RFSurfaceLoad other) : this(other, other.LoadCase) public override string ToString() { return string.Format($"RFEM-SurfaceLoad;No:{No};LoadCase:{LoadCase};" + - $"F1:{Magnitude1.ToString("0.00")}[kN/m²];F2:{Magnitude2.ToString("0.00")}[kN/m²];F3:{Magnitude3.ToString("0.00")}[kN/m²];" + + $"F1:{Magnitude1.ToString("0.00")}[kN/m²];F2:{Magnitude2.ToString("0.00")}[kN/m²];F3:{Magnitude3.ToString("0.00")}[kN/m²];" + $"T4:{Magnitude4.ToString("0.00")};T5:{Magnitude5.ToString("0.00")};T6:{Magnitude6.ToString("0.00")};" + $"Node1No:{Node1No.ToString()};Node2No:{Node2No.ToString()};Node3No:{Node3No.ToString()};" + $"LoadType:{LoadType.ToString()};LoadDistType:{LoadDistType.ToString()};LoadDirType:{LoadDirType.ToString()};" + diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/bin/x64/Debug/Parametric_FEM_Toolbox-RAZER-DAQ.gha b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/bin/x64/Debug/Parametric_FEM_Toolbox-RAZER-DAQ.gha new file mode 100644 index 0000000..a166b0f Binary files /dev/null and b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/bin/x64/Debug/Parametric_FEM_Toolbox-RAZER-DAQ.gha differ diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/bin/x64/Debug/Parametric_FEM_Toolbox-RAZER-DAQ.pdb b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/bin/x64/Debug/Parametric_FEM_Toolbox-RAZER-DAQ.pdb new file mode 100644 index 0000000..8dd4a85 Binary files /dev/null and b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/bin/x64/Debug/Parametric_FEM_Toolbox-RAZER-DAQ.pdb differ diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/bin/x64/Debug/Parametric_FEM_Toolbox.gha b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/bin/x64/Debug/Parametric_FEM_Toolbox.gha index ecff134..20a3d1d 100644 Binary files a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/bin/x64/Debug/Parametric_FEM_Toolbox.gha and b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/bin/x64/Debug/Parametric_FEM_Toolbox.gha differ diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/bin/x64/Debug/Parametric_FEM_Toolbox.pdb b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/bin/x64/Debug/Parametric_FEM_Toolbox.pdb index 388a08a..023190d 100644 Binary files a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/bin/x64/Debug/Parametric_FEM_Toolbox.pdb and b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/bin/x64/Debug/Parametric_FEM_Toolbox.pdb differ diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/DesignTimeResolveAssemblyReferencesInput-RAZER-DAQ.cache b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/DesignTimeResolveAssemblyReferencesInput-RAZER-DAQ.cache new file mode 100644 index 0000000..f2d3fda Binary files /dev/null and b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/DesignTimeResolveAssemblyReferencesInput-RAZER-DAQ.cache differ diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/DesignTimeResolveAssemblyReferencesInput.cache index 928d4a3..f2d3fda 100644 Binary files a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/DesignTimeResolveAssemblyReferencesInput.cache and b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox-RAZER-DAQ.dll b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox-RAZER-DAQ.dll new file mode 100644 index 0000000..a166b0f Binary files /dev/null and b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox-RAZER-DAQ.dll differ diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox-RAZER-DAQ.pdb b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox-RAZER-DAQ.pdb new file mode 100644 index 0000000..8dd4a85 Binary files /dev/null and b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox-RAZER-DAQ.pdb differ diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.csproj.AssemblyReference.cache b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.csproj.AssemblyReference.cache new file mode 100644 index 0000000..02b7d5b Binary files /dev/null and b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.csproj.AssemblyReference.cache differ diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.csproj.CoreCompileInputs-RAZER-DAQ.cache b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.csproj.CoreCompileInputs-RAZER-DAQ.cache new file mode 100644 index 0000000..93c9054 --- /dev/null +++ b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.csproj.CoreCompileInputs-RAZER-DAQ.cache @@ -0,0 +1 @@ +994a27d10517065fd1f16a3635192c48bece0303 diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.csproj.CoreCompileInputs.cache b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.csproj.CoreCompileInputs.cache index e5ff907..40db58f 100644 --- a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.csproj.CoreCompileInputs.cache +++ b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -9e63bed1e66c5df846e17a3b7770340965cef8bd +07a76a22c099badca4b828d0acdb21874f6df1e4 diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.csproj.FileListAbsolute-RAZER-DAQ.txt b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.csproj.FileListAbsolute-RAZER-DAQ.txt new file mode 100644 index 0000000..2f35e83 --- /dev/null +++ b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.csproj.FileListAbsolute-RAZER-DAQ.txt @@ -0,0 +1,53 @@ +D:\Diego\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\bin\x64\Debug\Parametric_FEM_Toolbox.dll +D:\Diego\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\bin\x64\Debug\Parametric_FEM_Toolbox.pdb +D:\Diego\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\bin\x64\Debug\Eto.dll +D:\Diego\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\bin\x64\Debug\Eto.xml +D:\Diego\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\obj\x64\Debug\Parametric_FEM_Toolbox.csprojAssemblyReference.cache +D:\Diego\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\obj\x64\Debug\Parametric_FEM_Toolbox.Properties.Resources.resources +D:\Diego\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\obj\x64\Debug\Parametric_FEM_Toolbox.csproj.GenerateResource.cache +D:\Diego\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\obj\x64\Debug\Parametric_FEM_Toolbox.csproj.CopyComplete +D:\Diego\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\obj\x64\Debug\Parametric_FEM_Toolbox.dll +D:\Diego\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\obj\x64\Debug\Parametric_FEM_Toolbox.pdb +C:\Users\diego\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\obj\x64\Debug\Parametric_FEM_Toolbox.csprojAssemblyReference.cache +C:\Users\diego\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\obj\x64\Debug\Parametric_FEM_Toolbox.Properties.Resources.resources +C:\Users\diego\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\obj\x64\Debug\Parametric_FEM_Toolbox.csproj.GenerateResource.cache +C:\Users\diego\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\obj\x64\Debug\Parametric_FEM_Toolbox.csproj.CoreCompileInputs.cache +C:\Users\diego\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\obj\x64\Debug\Parametric_FEM_Toolbox.dll +C:\Users\diego\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\obj\x64\Debug\Parametric_FEM_Toolbox.pdb +C:\Users\diego\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\bin\x64\Debug\Parametric_FEM_Toolbox.dll +C:\Users\diego\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\bin\x64\Debug\Parametric_FEM_Toolbox.pdb +C:\Users\diego\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\bin\x64\Debug\Eto.xml +C:\Users\diego\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\obj\x64\Debug\Parametric_FEM_Toolbox.csproj.CopyComplete +C:\Users\dapellaniz\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\bin\x64\Debug\Parametric_FEM_Toolbox.dll +C:\Users\dapellaniz\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\bin\x64\Debug\Parametric_FEM_Toolbox.pdb +C:\Users\dapellaniz\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\bin\x64\Debug\Eto.xml +C:\Users\dapellaniz\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\obj\x64\Debug\Parametric_FEM_Toolbox.csprojAssemblyReference.cache +C:\Users\dapellaniz\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\obj\x64\Debug\Parametric_FEM_Toolbox.Properties.Resources.resources +C:\Users\dapellaniz\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\obj\x64\Debug\Parametric_FEM_Toolbox.csproj.GenerateResource.cache +C:\Users\dapellaniz\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\obj\x64\Debug\Parametric_FEM_Toolbox.csproj.CoreCompileInputs.cache +C:\Users\dapellaniz\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\obj\x64\Debug\Parametric_FEM_Toolbox.csproj.CopyComplete +C:\Users\dapellaniz\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\obj\x64\Debug\Parametric_FEM_Toolbox.dll +C:\Users\dapellaniz\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\obj\x64\Debug\Parametric_FEM_Toolbox.pdb +C:\Users\diego\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\bin\x64\Debug\GH_IO.dll +C:\Users\diego\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\bin\x64\Debug\Grasshopper.dll +C:\Users\diego\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\bin\x64\Debug\RhinoCommon.dll +C:\Users\diego\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\bin\x64\Debug\Mono.Cecil.dll +C:\Users\diego\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\bin\x64\Debug\GH_Util.dll +C:\Users\diego\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\bin\x64\Debug\GH_IO.xml +C:\Users\diego\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\bin\x64\Debug\Grasshopper.xml +C:\Users\diego\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\bin\x64\Debug\RhinoCommon.xml +D:\Users\dapellaniz\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\bin\x64\Debug\Parametric_FEM_Toolbox.dll +D:\Users\dapellaniz\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\bin\x64\Debug\Parametric_FEM_Toolbox.pdb +D:\Users\dapellaniz\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\bin\x64\Debug\Mono.Cecil.dll +D:\Users\dapellaniz\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\bin\x64\Debug\GH_Util.dll +D:\Users\dapellaniz\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\bin\x64\Debug\Eto.xml +D:\Users\dapellaniz\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\bin\x64\Debug\GH_IO.xml +D:\Users\dapellaniz\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\bin\x64\Debug\Grasshopper.xml +D:\Users\dapellaniz\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\bin\x64\Debug\RhinoCommon.xml +D:\Users\dapellaniz\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\obj\x64\Debug\Parametric_FEM_Toolbox.csprojAssemblyReference.cache +D:\Users\dapellaniz\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\obj\x64\Debug\Parametric_FEM_Toolbox.Properties.Resources.resources +D:\Users\dapellaniz\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\obj\x64\Debug\Parametric_FEM_Toolbox.csproj.GenerateResource.cache +D:\Users\dapellaniz\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\obj\x64\Debug\Parametric_FEM_Toolbox.csproj.CoreCompileInputs.cache +D:\Users\dapellaniz\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\obj\x64\Debug\Parametric_FEM_Toolbox.csproj.CopyComplete +D:\Users\dapellaniz\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\obj\x64\Debug\Parametric_FEM_Toolbox.dll +D:\Users\dapellaniz\OneDrive\Projects\Repos\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\Parametric_FEM_Toolbox\obj\x64\Debug\Parametric_FEM_Toolbox.pdb diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.csproj.GenerateResource.cache b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.csproj.GenerateResource.cache index 9439f60..53c3a70 100644 Binary files a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.csproj.GenerateResource.cache and b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.csproj.GenerateResource.cache differ diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.csprojAssemblyReference-RAZER-DAQ.cache b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.csprojAssemblyReference-RAZER-DAQ.cache new file mode 100644 index 0000000..7038046 Binary files /dev/null and b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.csprojAssemblyReference-RAZER-DAQ.cache differ diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.csprojAssemblyReference.cache b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.csprojAssemblyReference.cache index 0d1a48b..e0f85ef 100644 Binary files a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.csprojAssemblyReference.cache and b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.csprojAssemblyReference.cache differ diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.dll b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.dll index ecff134..20a3d1d 100644 Binary files a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.dll and b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.dll differ diff --git a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.pdb b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.pdb index 388a08a..023190d 100644 Binary files a/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.pdb and b/Parametric_FEM_Toolbox/Parametric_FEM_Toolbox/obj/x64/Debug/Parametric_FEM_Toolbox.pdb differ