From b41fd05c33791aa8b9564dba979f5fba2e7d7885 Mon Sep 17 00:00:00 2001 From: Mishael Nuh Date: Wed, 29 Jan 2020 14:58:45 -0500 Subject: [PATCH 1/3] Fix bug for duplicate and short lines for graph generation --- RodSteward/Lines2Graph.cs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/RodSteward/Lines2Graph.cs b/RodSteward/Lines2Graph.cs index 5d11337..c586474 100644 --- a/RodSteward/Lines2Graph.cs +++ b/RodSteward/Lines2Graph.cs @@ -47,6 +47,9 @@ protected override void SolveInstance(IGH_DataAccess DA) var p1 = l.PointAt(0); var p2 = l.PointAt(1); + if (p1.DistanceTo(p2) < tolerance) + continue; + int match1 = vertices.FindIndex(p => p.DistanceTo(p1) < tolerance); int match2 = vertices.FindIndex(p => p.DistanceTo(p2) < tolerance); @@ -61,7 +64,13 @@ protected override void SolveInstance(IGH_DataAccess DA) match2 = vertices.Count() - 1; } - edges.Add(Tuple.Create(match1, match2)); + if (match1 != match2) + { + var t1 = Tuple.Create(match1, match2); + var t2 = Tuple.Create(match2, match1); + if (!edges.Contains(t1) && !edges.Contains(t2)) + edges.Add(t1); + } } // Prune From 9d44edaebb09406812fe30708cf884b8c60661ad Mon Sep 17 00:00:00 2001 From: Mishael Nuh Date: Mon, 3 Feb 2020 19:01:12 -0500 Subject: [PATCH 2/3] Change defaults to meters instead of mm --- RodSteward/Generator.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/RodSteward/Generator.cs b/RodSteward/Generator.cs index 4abfe06..f137880 100644 --- a/RodSteward/Generator.cs +++ b/RodSteward/Generator.cs @@ -46,10 +46,10 @@ protected override void RegisterInputParams(GH_InputParamManager pManager) pManager.AddNumberParameter("Tolerance", "e", "Tolerance", GH_ParamAccess.item); ((Param_Number)pManager[2]).PersistentData.Append(new GH_Number(50)); - ((Param_Number)pManager[3]).PersistentData.Append(new GH_Number(6.35)); - ((Param_Number)pManager[4]).PersistentData.Append(new GH_Number(3)); - ((Param_Number)pManager[5]).PersistentData.Append(new GH_Number(38)); - ((Param_Number)pManager[6]).PersistentData.Append(new GH_Number(0.1)); + ((Param_Number)pManager[3]).PersistentData.Append(new GH_Number(0.00635)); + ((Param_Number)pManager[4]).PersistentData.Append(new GH_Number(0.003)); + ((Param_Number)pManager[5]).PersistentData.Append(new GH_Number(0.038)); + ((Param_Number)pManager[6]).PersistentData.Append(new GH_Number(0.0001)); } protected override void RegisterOutputParams(GH_OutputParamManager pManager) From 25f1c6faa86e130fc5520de4d3317eac76e019f9 Mon Sep 17 00:00:00 2001 From: Mishael Nuh Date: Mon, 3 Feb 2020 19:03:13 -0500 Subject: [PATCH 3/3] Clear graphical artifacts when component goes into error --- RodSteward/Generator.cs | 16 ++++++++++++++-- RodSteward/Model.cs | 7 +++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/RodSteward/Generator.cs b/RodSteward/Generator.cs index f137880..502ef2c 100644 --- a/RodSteward/Generator.cs +++ b/RodSteward/Generator.cs @@ -172,7 +172,11 @@ protected override void SolveInstance(IGH_DataAccess DA) if (!DA.GetData(5, ref jointLength)) { return; } if (!DA.GetData(6, ref tolerance)) { return; } - if (edges == null || vertices == null) { return; } + if (edges == null || vertices == null) + { + model.ClearModelGeometries(); + return; + } if (radius <= 0 || sides <= 2 || jointThickness < 0 || jointLength < 0 || tolerance < 0) { throw new Exception("Invalid input."); } if (ForceRecalc || !(model.Edges.SequenceEqual(edges) && @@ -193,7 +197,15 @@ protected override void SolveInstance(IGH_DataAccess DA) model.JointLength = jointLength; model.Tolerance = tolerance; - model.Generate(PrintLabel); + try + { + model.Generate(PrintLabel); + } + catch (Exception ex) + { + model.ClearModelGeometries(); + throw ex; + } } if (Collision) diff --git a/RodSteward/Model.cs b/RodSteward/Model.cs index 825d4c1..bf5a255 100644 --- a/RodSteward/Model.cs +++ b/RodSteward/Model.cs @@ -69,6 +69,13 @@ public void Generate(bool label = true) GenerateJointMeshes(label); } + public void ClearModelGeometries() + { + RodMeshes.Clear(); + RodCentrelines.Clear(); + JointMeshes.Clear(); + } + public Dictionary, double> CalculateRodOffsets() { Offsets.Clear();