From d6103b5ce9313c4a987de981567be16994becd3e Mon Sep 17 00:00:00 2001 From: visose Date: Sat, 4 Jan 2025 17:59:01 +0000 Subject: [PATCH] Update rhino 8 --- Directory.Build.props | 3 +- RELEASE | 5 +++ .../Extensions.Build/Extensions.Build.csproj | 4 +- build/Extensions.Build/Program.cs | 18 ++++----- .../Extensions.Grasshopper.csproj | 6 +-- src/Extensions.Grasshopper/ExtensionsInfo.cs | 8 ++-- .../Geometry/DifferentialGrowth.cs | 4 +- src/Extensions.Grasshopper/Goo.cs | 6 +-- .../Rendering/MeshTextureCoords.cs | 2 +- src/Extensions/Discrete/Assembly.cs | 22 +++-------- src/Extensions/Discrete/VoxelTiles.cs | 4 +- src/Extensions/Document/DisplayGeometry.cs | 15 ++------ src/Extensions/Extensions.csproj | 4 +- src/Extensions/Geometry/BallPivot.cs | 12 +++--- src/Extensions/Geometry/MeshPipe.cs | 10 ++--- src/Extensions/Geometry/PolygonFill.cs | 4 +- src/Extensions/Regions/Region.cs | 6 +-- src/Extensions/Regions/StraightSkeleton.cs | 6 +-- src/Extensions/Rendering/RenderExtensions.cs | 4 +- src/Extensions/SimplexNoise.cs | 10 ++--- .../DifferentialGrowth/DifferentialGrowth.cs | 20 +++++----- .../Simulations/DifferentialGrowth/Force.cs | 17 +++------ .../DifferentialGrowth/Particle.cs | 2 +- src/Extensions/Spatial/BucketSearch.cs | 38 ++++++------------- src/Extensions/Spatial/Octree.cs | 18 +++------ src/Extensions/Toolpaths/CSVConverter.cs | 8 ++-- src/Extensions/Toolpaths/Column.cs | 4 +- .../Toolpaths/Extrusion/ExternalExtrusion.cs | 8 ++-- .../Toolpaths/Extrusion/ExtrusionToolpath.cs | 16 ++++---- .../Extrusion/ExtrusionVisualizer.cs | 4 +- .../Toolpaths/Milling/GCodeToolpath.cs | 8 ++-- .../Toolpaths/Milling/MillingToolpath.cs | 4 +- .../SpatialExtrusion/SpatialExtrusion.cs | 4 +- 33 files changed, 132 insertions(+), 172 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 40b8bdf..5ffc8c4 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -2,7 +2,7 @@ Extensions - 1.0.4 + 1.0.5 Extensions Authors Assorted components for Grasshopper. Grasshopper;Extensions;Robots @@ -19,6 +19,7 @@ latest disable enable + portable $(MSBuildThisFileDirectory) $(RootDir)artifacts\ $(ArtifactsDir)bin\$(MSBuildProjectName) diff --git a/RELEASE b/RELEASE index 7dbc723..398dcf7 100644 --- a/RELEASE +++ b/RELEASE @@ -1,3 +1,8 @@ +- version: 1.0.5 + changes: + - Fixed issue with CoreCLR. + - Fixed not specifying manufacturer for custom commands. + - version: 1.0.4 changes: - Fixed compatibility with latest Robots version. diff --git a/build/Extensions.Build/Extensions.Build.csproj b/build/Extensions.Build/Extensions.Build.csproj index f3e173f..bb92894 100644 --- a/build/Extensions.Build/Extensions.Build.csproj +++ b/build/Extensions.Build/Extensions.Build.csproj @@ -2,7 +2,7 @@ Exe - net7.0 + net8.0 $(RootDir) @@ -10,7 +10,7 @@ - + \ No newline at end of file diff --git a/build/Extensions.Build/Program.cs b/build/Extensions.Build/Program.cs index faf0f8e..3c47ac5 100644 --- a/build/Extensions.Build/Program.cs +++ b/build/Extensions.Build/Program.cs @@ -5,8 +5,8 @@ Props props = new("Directory.Build.props"); Github github = new("visose", "Extensions"); -app.Add(new ICommand[] - { +app.Add( + [ new CheckVersion ( props: props, @@ -20,8 +20,8 @@ ( props: props, sourceFolder: "artifacts/bin/Extensions.Grasshopper/net48", - files: new [] - { + files: + [ "Extensions.gha", "Extensions.dll", "clipper_library.dll", @@ -30,12 +30,12 @@ "MoreLinq.dll", "SkeletonNet.dll", "icon.png" - }, - tags: new [] - { + ], + tags: + [ "rh7_0-any", "rh8_0-any" - } + ] ), new Release ( @@ -44,6 +44,6 @@ notesFile: "RELEASE", message: "> This **release** can only be installed through the package manager in **Rhino 7** using the `_PackageManager` command.\n> Check the [readme](../../blob/master/.github/README.md) for more details." ) - }); + ]); await app.RunAsync(); diff --git a/src/Extensions.Grasshopper/Extensions.Grasshopper.csproj b/src/Extensions.Grasshopper/Extensions.Grasshopper.csproj index 5061f69..b9fe251 100644 --- a/src/Extensions.Grasshopper/Extensions.Grasshopper.csproj +++ b/src/Extensions.Grasshopper/Extensions.Grasshopper.csproj @@ -19,16 +19,16 @@ - C:\Program Files\Rhino 7\System\Rhino.exe + C:\Program Files\Rhino 8\System\Rhino.exe /nosplash /runscript="-grasshopper window show _enter" Program false - $(AppData)\McNeel\Rhinoceros\packages\7.0\$(Product) + $(AppData)\McNeel\Rhinoceros\packages\8.0\$(Product) $(PackageDir)\$(Version) - \ No newline at end of file + diff --git a/src/Extensions.Grasshopper/ExtensionsInfo.cs b/src/Extensions.Grasshopper/ExtensionsInfo.cs index e9eee67..4dba6e4 100644 --- a/src/Extensions.Grasshopper/ExtensionsInfo.cs +++ b/src/Extensions.Grasshopper/ExtensionsInfo.cs @@ -1,4 +1,4 @@ -using System.Reflection; +using System.Reflection; using System.Drawing; using Grasshopper.Kernel; using Grasshopper; @@ -17,7 +17,7 @@ public ExtensionsInfo() if (files.Any()) { - Assembly.LoadFile(files.First()); + Assembly.LoadFrom(files.First()); IsRobotsInstalled = true; break; } @@ -42,6 +42,6 @@ T GetInfo() where T : Attribute string[] GetCompany() { var company = GetInfo().Company; - return company.Split(new[] { " - " }, StringSplitOptions.None); + return company.Split([" - "], StringSplitOptions.None); } -} \ No newline at end of file +} diff --git a/src/Extensions.Grasshopper/Geometry/DifferentialGrowth.cs b/src/Extensions.Grasshopper/Geometry/DifferentialGrowth.cs index 22d770e..0a551ee 100644 --- a/src/Extensions.Grasshopper/Geometry/DifferentialGrowth.cs +++ b/src/Extensions.Grasshopper/Geometry/DifferentialGrowth.cs @@ -47,8 +47,8 @@ protected override void SolveInstance(IGH_DataAccess DA) } else { - mesh = region is Mesh - ? region as Mesh + mesh = region is Mesh + ? region as Mesh : throw new Exception(" Region should be polyline or mesh."); } diff --git a/src/Extensions.Grasshopper/Goo.cs b/src/Extensions.Grasshopper/Goo.cs index 70503be..03df06a 100644 --- a/src/Extensions.Grasshopper/Goo.cs +++ b/src/Extensions.Grasshopper/Goo.cs @@ -164,7 +164,7 @@ protected override GH_GetterResult Prompt_Singular(ref GH_DisplayGeometry value) protected override GH_GetterResult Prompt_Plural(ref List values) { - values = new List(); + values = []; return GH_GetterResult.success; } @@ -207,7 +207,7 @@ protected override GH_GetterResult Prompt_Singular(ref GH_ExtrusionAttributes va protected override GH_GetterResult Prompt_Plural(ref List values) { - values = new List(); + values = []; return GH_GetterResult.success; } } @@ -226,7 +226,7 @@ protected override GH_GetterResult Prompt_Singular(ref GH_MillingAttributes valu protected override GH_GetterResult Prompt_Plural(ref List values) { - values = new List(); + values = []; return GH_GetterResult.success; } } diff --git a/src/Extensions.Grasshopper/Rendering/MeshTextureCoords.cs b/src/Extensions.Grasshopper/Rendering/MeshTextureCoords.cs index 5f9bc57..bc4256c 100644 --- a/src/Extensions.Grasshopper/Rendering/MeshTextureCoords.cs +++ b/src/Extensions.Grasshopper/Rendering/MeshTextureCoords.cs @@ -23,7 +23,7 @@ protected override void RegisterOutputParams(GH_OutputParamManager pManager) protected override void SolveInstance(IGH_DataAccess DA) { Mesh mesh = new(); - List coords = new(); + List coords = []; DA.GetData(0, ref mesh); DA.GetDataList(1, coords); diff --git a/src/Extensions/Discrete/Assembly.cs b/src/Extensions/Discrete/Assembly.cs index f428a1e..2541b5e 100644 --- a/src/Extensions/Discrete/Assembly.cs +++ b/src/Extensions/Discrete/Assembly.cs @@ -169,27 +169,15 @@ public Vector3Export(Point3f point) } [XmlType(TypeName = "Vector2")] -public struct Vector2Export +public struct Vector2Export(Point2f point) { - public float x, y; - - public Vector2Export(Point2f point) - { - x = point.X; - y = point.Y; - } + public float x = point.X, y = point.Y; } -public struct Pose +public struct Pose(Plane plane) { - public Vector3Export position; - public QuaternionExport rotation; - - public Pose(Plane plane) - { - position = new Vector3Export(plane.Origin); - rotation = new QuaternionExport(plane); - } + public Vector3Export position = new Vector3Export(plane.Origin); + public QuaternionExport rotation = new QuaternionExport(plane); } [XmlType(TypeName = "Quaternion")] diff --git a/src/Extensions/Discrete/VoxelTiles.cs b/src/Extensions/Discrete/VoxelTiles.cs index 5ce3bc1..9a339a4 100644 --- a/src/Extensions/Discrete/VoxelTiles.cs +++ b/src/Extensions/Discrete/VoxelTiles.cs @@ -1,4 +1,4 @@ -using Extensions.Spatial; +using Extensions.Spatial; using MoreLinq; using Rhino.Geometry; using Rhino.Geometry.Intersect; @@ -234,7 +234,7 @@ void SetAlignmentsFalloff(IList curves, double maxDistance) } } - var xSnap = snaps.MinBy(s => s.distance).First(); + var xSnap = snaps.Minima(s => s.distance).First(); var subVectors = snapVectors[xSnap.snapType] .Where(v => Abs(Vector3d.VectorAngle(xSnap.vector, v) - HalfPI) < HalfPI * 0.25); diff --git a/src/Extensions/Document/DisplayGeometry.cs b/src/Extensions/Document/DisplayGeometry.cs index b1966eb..9887c41 100644 --- a/src/Extensions/Document/DisplayGeometry.cs +++ b/src/Extensions/Document/DisplayGeometry.cs @@ -5,18 +5,11 @@ namespace Extensions.Document; -public class DisplayGeometry +public class DisplayGeometry(GeometryBase geometry, DisplayMaterial material, string layer = "") { - public GeometryBase Geometry { get; set; } - public DisplayMaterial Material { get; set; } - public string Layer { get; set; } - - public DisplayGeometry(GeometryBase geometry, DisplayMaterial material, string layer = "") - { - Geometry = geometry; - Material = material; - Layer = layer; - } + public GeometryBase Geometry { get; set; } = geometry; + public DisplayMaterial Material { get; set; } = material; + public string Layer { get; set; } = layer; public Guid Bake(RhinoDoc doc, ObjectAttributes att = null, bool flipYZ = false) { diff --git a/src/Extensions/Extensions.csproj b/src/Extensions/Extensions.csproj index fc74f72..2a4d6c0 100644 --- a/src/Extensions/Extensions.csproj +++ b/src/Extensions/Extensions.csproj @@ -6,8 +6,8 @@ - - + + diff --git a/src/Extensions/Geometry/BallPivot.cs b/src/Extensions/Geometry/BallPivot.cs index c375912..e600a7b 100644 --- a/src/Extensions/Geometry/BallPivot.cs +++ b/src/Extensions/Geometry/BallPivot.cs @@ -1,4 +1,4 @@ -using Rhino.Geometry; +using Rhino.Geometry; using Extensions.Spatial; using MoreLinq; @@ -25,7 +25,7 @@ public static Polyline Create(Polyline contour, double radius) BallPivot(IEnumerable contour, double radius) { contour = contour - .MaxBy(p => p.Length) + .Maxima(p => p.Length) .Select(FixDirection); var polylines = DivideCurves(contour, radius).ToArray(); @@ -33,7 +33,7 @@ public static Polyline Create(Polyline contour, double radius) if (!points.Any()) { - Polyline = new Polyline(); + Polyline = []; return; } @@ -83,10 +83,10 @@ IEnumerable DivideCurves(IEnumerable contour, double radius) Polyline Pivot() { Point first = null; - Point second = _points.MinBy(p => p.Position.DistanceToSquared(_box.Max)).First(); + Point second = _points.Minima(p => p.Position.DistanceToSquared(_box.Max)).First(); _start = second.Index; - Polyline pl = new() { second.Position }; + Polyline pl = [second.Position]; while (true) { @@ -118,7 +118,7 @@ Point FindNext(Point a, Point b) Vector3d vector = a == null ? b.Normal : a.Position - b.Position; var next = closests - .MinBy(p => Vector3d.VectorAngle(vector, p.Position - b.Position, -Vector3d.ZAxis)) + .Minima(p => Vector3d.VectorAngle(vector, p.Position - b.Position, -Vector3d.ZAxis)) .First(); return next; diff --git a/src/Extensions/Geometry/MeshPipe.cs b/src/Extensions/Geometry/MeshPipe.cs index e9f4b9c..39a457f 100644 --- a/src/Extensions/Geometry/MeshPipe.cs +++ b/src/Extensions/Geometry/MeshPipe.cs @@ -21,7 +21,7 @@ public static Mesh MeshFlatPolyline(Polyline polyline, double width, double heig public static Mesh MeshPlanes(List inPlanes, double width, double height, int segments = 24) { - inPlanes = inPlanes.ToList(); + inPlanes = [.. inPlanes]; if (inPlanes.Count < 2) return new Mesh(); bool isClosed = inPlanes[0].Origin.DistanceToSquared(inPlanes[inPlanes.Count - 1].Origin) < UnitTol * UnitTol; @@ -158,7 +158,7 @@ public static Mesh MeshPlanes(List inPlanes, double width, double height, var vertex = points[i]; mesh.Vertices.SetVertex(i, vertex); } - mesh.Normals.AddRange(normals.ToArray()); + mesh.Normals.AddRange([.. normals]); mesh.RebuildNormals(); mesh.Compact(); @@ -277,7 +277,7 @@ public static Mesh MeshExtrusion(Polyline polyline, double width, double height, var mesh = new Mesh(); mesh.Vertices.AddVertices(points); - mesh.Normals.AddRange(normals.ToArray()); + mesh.Normals.AddRange([.. normals]); mesh.Faces.AddFaces(faces); return mesh; @@ -286,7 +286,7 @@ public static Mesh MeshExtrusion3d(List inPlanes, double width, double he { //if (width < height) throw new ArgumentException(" Width must be larger or equal to height."); if (inPlanes.Count < 2) return new Mesh(); - inPlanes = inPlanes.ToList(); + inPlanes = [.. inPlanes]; bool isClosed = inPlanes[0].Origin.DistanceToSquared(inPlanes[inPlanes.Count - 1].Origin) < UnitTol * UnitTol; if (isClosed && inPlanes.Count == 2) return new Mesh(); @@ -391,7 +391,7 @@ public static Mesh MeshExtrusion3d(List inPlanes, double width, double he var mesh = new Mesh(); mesh.Vertices.AddVertices(points); - mesh.Normals.AddRange(normals.ToArray()); + mesh.Normals.AddRange([.. normals]); mesh.Faces.AddFaces(faces); return mesh; diff --git a/src/Extensions/Geometry/PolygonFill.cs b/src/Extensions/Geometry/PolygonFill.cs index 73ee6b4..8ba30af 100644 --- a/src/Extensions/Geometry/PolygonFill.cs +++ b/src/Extensions/Geometry/PolygonFill.cs @@ -9,7 +9,7 @@ static class PolygonFill public static Polyline[][] Square(Polyline[] contours, double size, double offset) { if (contours.Length == 0) - return new Polyline[0][]; + return []; var box = new BoundingBox(contours.SelectMany(p => p)); box.Inflate(offset); @@ -42,7 +42,7 @@ public static Polyline[][] Square(Polyline[] contours, double size, double offse var skinOffset = contours[i]; if (!skinOffset.IsValid) { - layers[i] = new Polyline[0]; + layers[i] = []; continue; } diff --git a/src/Extensions/Regions/Region.cs b/src/Extensions/Regions/Region.cs index c2e706d..11d8617 100644 --- a/src/Extensions/Regions/Region.cs +++ b/src/Extensions/Regions/Region.cs @@ -1,4 +1,4 @@ -using Rhino.Geometry; +using Rhino.Geometry; using MoreLinq; using static Extensions.Util; using ClipperLib; @@ -9,7 +9,7 @@ static class Region { public static Polyline Offset(Polyline polyline, double distance) { - if (polyline.Count < 2) return new Polyline(); + if (polyline.Count < 2) return []; var region = polyline.ToRegion(); var offset = new ClipperOffset(); @@ -19,7 +19,7 @@ public static Polyline Offset(Polyline polyline, double distance) offset.Execute(ref tree, distance / Tol); var height = polyline[0].Z; - var first = tree.ToPolylines(height).MaxBy(p => p.Length).FirstOrDefault(); + var first = tree.ToPolylines(height).Maxima(p => p.Length).FirstOrDefault(); return first ?? new Polyline(0); } diff --git a/src/Extensions/Regions/StraightSkeleton.cs b/src/Extensions/Regions/StraightSkeleton.cs index be53ea3..f3f2865 100644 --- a/src/Extensions/Regions/StraightSkeleton.cs +++ b/src/Extensions/Regions/StraightSkeleton.cs @@ -1,4 +1,4 @@ -using SkeletonNet; +using SkeletonNet; using Rhino.Geometry; namespace Extensions.StraightSkeleton; @@ -104,7 +104,7 @@ public static Polyline GetAxis(IEnumerable lines) .Select(e => e.Line.ToNurbsCurve()); var curve = Curve.JoinCurves(axes); - Polyline pl = new(); + Polyline pl = []; if (curve.Length > 0) { @@ -125,7 +125,7 @@ public static Polyline GetAxis(IEnumerable lines) } } - pl = new Polyline(new Point3d[] { maxLine.From, maxLine.To }); + pl = new Polyline([maxLine.From, maxLine.To]); } return pl; diff --git a/src/Extensions/Rendering/RenderExtensions.cs b/src/Extensions/Rendering/RenderExtensions.cs index 8d03155..7ccb7ab 100644 --- a/src/Extensions/Rendering/RenderExtensions.cs +++ b/src/Extensions/Rendering/RenderExtensions.cs @@ -1,4 +1,4 @@ -using System.Drawing; +using System.Drawing; using Rhino.Geometry; namespace Extensions; @@ -112,7 +112,7 @@ public static Mesh SetTextureCoords(Mesh mesh, IEnumerable coords) } mesh.ClearTextureData(); - mesh.TextureCoordinates.AddRange(coords2f.ToArray()); + mesh.TextureCoordinates.AddRange([.. coords2f]); return mesh; } diff --git a/src/Extensions/SimplexNoise.cs b/src/Extensions/SimplexNoise.cs index b9c9507..e9d7467 100644 --- a/src/Extensions/SimplexNoise.cs +++ b/src/Extensions/SimplexNoise.cs @@ -4,11 +4,11 @@ namespace Extensions; public static class SimplexNoise { - static readonly int[][] _grad3 = new int[][]{new int[]{1,1,0},new int[]{-1,1,0},new int[]{1,-1,0},new int[]{-1,-1,0}, - new int[]{1,0,1},new int[]{-1,0,1},new int[]{1,0,-1},new int[]{-1,0,-1}, - new int[]{0,1,1},new int[]{0,-1,1},new int[]{0,1,-1},new int[]{0,-1,-1}}; + static readonly int[][] _grad3 = [[1,1,0],[-1,1,0],[1,-1,0],[-1,-1,0], + [1,0,1],[-1,0,1],[1,0,-1],[-1,0,-1], + [0,1,1],[0,-1,1],[0,1,-1],[0,-1,-1]]; - static readonly int[] _p = new int[]{151,160,137,91,90,15, + static readonly int[] _p = [151,160,137,91,90,15, 131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23, 190, 6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33, 88,237,149,56,87,174,20,125,136,171,168, 68,175,74,165,71,134,139,48,27,166, @@ -20,7 +20,7 @@ public static class SimplexNoise 129,22,39,253, 19,98,108,110,79,113,224,232,178,185, 112,104,218,246,97,228, 251,34,242,193,238,210,144,12,191,179,162,241, 81,51,145,235,249,14,239,107, 49,192,214, 31,181,199,106,157,184, 84,204,176,115,121,50,45,127, 4,150,254, - 138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180}; + 138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180]; // To remove the need for index wrapping, double the permutation table length static readonly int[] _perm = Perm(); diff --git a/src/Extensions/Simulations/DifferentialGrowth/DifferentialGrowth.cs b/src/Extensions/Simulations/DifferentialGrowth/DifferentialGrowth.cs index 61f8bad..445ede0 100644 --- a/src/Extensions/Simulations/DifferentialGrowth/DifferentialGrowth.cs +++ b/src/Extensions/Simulations/DifferentialGrowth/DifferentialGrowth.cs @@ -1,4 +1,4 @@ -using Rhino.Geometry; +using Rhino.Geometry; using Extensions.Spatial; using ClipperLib; using static Extensions.Util; @@ -8,8 +8,8 @@ namespace Extensions.Simulations.DifferentialGrowth; public class DifferentialGrowth { - internal List Particles = new(); - internal List Springs = new(); + internal List Particles = []; + internal List Springs = []; internal BucketSearchDense3d Search; internal double Radius; @@ -17,7 +17,7 @@ public class DifferentialGrowth public List Region; public Mesh Mesh; public Polyline Polyline; - public List> AllPolylines = new(); + public List> AllPolylines = []; public Polyline Boundary; readonly int _convergence; @@ -166,22 +166,22 @@ void Update() public List GetPolylines() { var polylines = new List(); - Polyline pl = new() - { + Polyline pl = + [ Springs[0].Start.Position, Springs[0].End.Position - }; + ]; for (int i = 1; i < Springs.Count; i++) { if (Springs[i - 1].End != Springs[i].Start) { polylines.Add(pl); - pl = new Polyline - { + pl = + [ Springs[i].Start.Position, Springs[i].End.Position - }; + ]; } else { diff --git a/src/Extensions/Simulations/DifferentialGrowth/Force.cs b/src/Extensions/Simulations/DifferentialGrowth/Force.cs index 7a49f89..c162eb6 100644 --- a/src/Extensions/Simulations/DifferentialGrowth/Force.cs +++ b/src/Extensions/Simulations/DifferentialGrowth/Force.cs @@ -1,19 +1,12 @@ -using Rhino.Geometry; +using Rhino.Geometry; namespace Extensions.Simulations.DifferentialGrowth; -public struct Force +public struct Force(Vector3d vector, double weight) { - public Vector3d Vector; - public double Weight; - private readonly object _thisLock; - - public Force(Vector3d vector, double weight) - { - _thisLock = new(); - Vector = vector; - Weight = weight; - } + public Vector3d Vector = vector; + public double Weight = weight; + private readonly object _thisLock = new(); public void Add(Vector3d vector, double weight) { diff --git a/src/Extensions/Simulations/DifferentialGrowth/Particle.cs b/src/Extensions/Simulations/DifferentialGrowth/Particle.cs index 1e94b82..54a21a9 100644 --- a/src/Extensions/Simulations/DifferentialGrowth/Particle.cs +++ b/src/Extensions/Simulations/DifferentialGrowth/Particle.cs @@ -11,7 +11,7 @@ public class Particle : IPositionable, IEquatable Point3d _p; Vector3d _v; public Force Delta = new(Vector3d.Zero, 0); - public List deltas = new(); + public List deltas = []; public Particle[] Neighbours = new Particle[2]; readonly DifferentialGrowth _simulation; diff --git a/src/Extensions/Spatial/BucketSearch.cs b/src/Extensions/Spatial/BucketSearch.cs index 10ffa2a..603f827 100644 --- a/src/Extensions/Spatial/BucketSearch.cs +++ b/src/Extensions/Spatial/BucketSearch.cs @@ -2,18 +2,11 @@ namespace Extensions.Spatial; -public class BucketSearchSparse2d where T : IPositionable +public class BucketSearchSparse2d(double distance) where T : IPositionable { - readonly Dictionary> _table; - readonly double _distanceSquared; - readonly double _factor; - - public BucketSearchSparse2d(double distance) - { - _table = new Dictionary>(); - _distanceSquared = distance * distance; - _factor = 1.0 / distance; - } + readonly Dictionary> _table = []; + readonly double _distanceSquared = distance * distance; + readonly double _factor = 1.0 / distance; public void Populate(IEnumerable elements) { @@ -25,7 +18,7 @@ public void Populate(IEnumerable elements) if (!_table.TryGetValue(key, out List bucket)) { - bucket = new List(); + bucket = []; _table.Add(key, bucket); } @@ -65,18 +58,11 @@ public IEnumerable GetClosests(T element) } } -public class BucketSearchSparse3d where T : IPositionable +public class BucketSearchSparse3d(double distance) where T : IPositionable { - readonly Dictionary> _table; - readonly double _distanceSquared; - readonly double _factor; - - public BucketSearchSparse3d(double distance) - { - _table = new Dictionary>(); - _distanceSquared = distance * distance; - _factor = 1.0 / distance; - } + readonly Dictionary> _table = []; + readonly double _distanceSquared = distance * distance; + readonly double _factor = 1.0 / distance; public void Populate(IEnumerable elements) { @@ -88,7 +74,7 @@ public void Populate(IEnumerable elements) if (!_table.TryGetValue(key, out List bucket)) { - bucket = new List(); + bucket = []; _table.Add(key, bucket); } @@ -180,7 +166,7 @@ public void Populate(IEnumerable elements) if (bucket == null) { - bucket = new List(); + bucket = []; _table[key.X][key.Y] = bucket; } @@ -282,7 +268,7 @@ public void Populate(IList elements) if (bucket == null) { - bucket = new List(); + bucket = []; _table[key.X, key.Y, key.Z] = bucket; } diff --git a/src/Extensions/Spatial/Octree.cs b/src/Extensions/Spatial/Octree.cs index 690f503..cb71cc5 100644 --- a/src/Extensions/Spatial/Octree.cs +++ b/src/Extensions/Spatial/Octree.cs @@ -2,23 +2,17 @@ namespace Extensions.Spatial; -public class Octree where T : IPositionable +public class Octree(Box box) where T : IPositionable { static readonly int _capacity = 4; - Box _box; - readonly List _elements; + Box _box = box; + readonly List _elements = []; List> _children; - public Octree(Box box) - { - _elements = new List(); - _box = box; - } - void Subdivide() { - _children = new List>(8) - { + _children = + [ new Octree(new Box(_box.Plane, new Interval(_box.X.T0, (_box.X.T0 + _box.X.T1) / 2), new Interval(_box.Y.T0, (_box.Y.T0 + _box.Y.T1) / 2), new Interval(_box.Z.T0, (_box.Z.T0 + _box.Z.T1) / 2))), new Octree(new Box(_box.Plane, new Interval(_box.X.T0, (_box.X.T0 + _box.X.T1) / 2), new Interval(_box.Y.T0, (_box.Y.T0 + _box.Y.T1) / 2), new Interval((_box.Z.T0 + _box.Z.T1) / 2, _box.Z.T1))), new Octree(new Box(_box.Plane, new Interval((_box.X.T0 + _box.X.T1) / 2, _box.X.T1), new Interval(_box.Y.T0, (_box.Y.T0 + _box.Y.T1) / 2), new Interval((_box.Z.T0 + _box.Z.T1) / 2, _box.Z.T1))), @@ -27,7 +21,7 @@ void Subdivide() new Octree(new Box(_box.Plane, new Interval(_box.X.T0, (_box.X.T0 + _box.X.T1) / 2), new Interval((_box.Y.T0 + _box.Y.T1) / 2, _box.Y.T1), new Interval((_box.Z.T0 + _box.Z.T1) / 2, _box.Z.T1))), new Octree(new Box(_box.Plane, new Interval((_box.X.T0 + _box.X.T1) / 2, _box.X.T1), new Interval((_box.Y.T0 + _box.Y.T1) / 2, _box.Y.T1), new Interval((_box.Z.T0 + _box.Z.T1) / 2, _box.Z.T1))), new Octree(new Box(_box.Plane, new Interval((_box.X.T0 + _box.X.T1) / 2, _box.X.T1), new Interval((_box.Y.T0 + _box.Y.T1) / 2, _box.Y.T1), new Interval(_box.Z.T0, (_box.Z.T0 + _box.Z.T1) / 2))) - }; + ]; } public bool Insert(T element) diff --git a/src/Extensions/Toolpaths/CSVConverter.cs b/src/Extensions/Toolpaths/CSVConverter.cs index ca7e05a..73e4026 100644 --- a/src/Extensions/Toolpaths/CSVConverter.cs +++ b/src/Extensions/Toolpaths/CSVConverter.cs @@ -7,10 +7,10 @@ namespace Extensions.Toolpaths; public class CSVConverter { - public List Targets { get; } = new List(); - public List ToolPath { get; } = new List(); + public List Targets { get; } = []; + public List ToolPath { get; } = []; - readonly string[] _validParameters = { "type", "position", "normal", "xaxis", "speed", "zone" }; + readonly string[] _validParameters = ["type", "position", "normal", "xaxis", "speed", "zone"]; public CSVConverter(string file, CartesianTarget referenceTarget, string mask, bool reverse, double cutSpeed = 0, Point3d? point = null) { @@ -110,7 +110,7 @@ public CSVConverter(string file, CartesianTarget referenceTarget, string mask, b { if (polyline == null) { - polyline = new Polyline(); + polyline = []; ToolPath.Add(polyline); } diff --git a/src/Extensions/Toolpaths/Column.cs b/src/Extensions/Toolpaths/Column.cs index b5ccbf4..18af38f 100644 --- a/src/Extensions/Toolpaths/Column.cs +++ b/src/Extensions/Toolpaths/Column.cs @@ -1,4 +1,4 @@ -using System.Collections.Concurrent; +using System.Collections.Concurrent; using Rhino.Geometry; using Rhino.UI; using Extensions.Geometry; @@ -62,7 +62,7 @@ Polyline[] Contouring(Mesh m) if (contour is null) { outPolylines = Slicer.Create(m, height, region) - .Select(c => c.MaxBy(p => p.Length).First()) + .Select(c => c.Maxima(p => p.Length).First()) .ToArray(); Cache.Write("contours", new PolylineCurve(outPolylines[0])); diff --git a/src/Extensions/Toolpaths/Extrusion/ExternalExtrusion.cs b/src/Extensions/Toolpaths/Extrusion/ExternalExtrusion.cs index c405ba7..541d4f6 100644 --- a/src/Extensions/Toolpaths/Extrusion/ExternalExtrusion.cs +++ b/src/Extensions/Toolpaths/Extrusion/ExternalExtrusion.cs @@ -63,7 +63,7 @@ Command ResetCommand(Target refTarget) initCode = resetCode; } - var command = new Robots.Commands.Custom("ResetExtruder", declaration: declaration, command: initCode) + var command = new Robots.Commands.Custom("ResetExtruder", Manufacturers.ABB, initCode, declaration) { RunBefore = true }; @@ -89,8 +89,8 @@ List SetExternalWithVariable(IEnumerable inTargets) externalDistance = target.External[0]; totalDistance += externalDistance; - current.External = new[] { totalDistance }; - current.ExternalCustom = new[] { "motorValue" }; + current.External = [totalDistance]; + current.ExternalCustom = ["motorValue"]; if (i == 0) current.AppendCommand(resetCommand); @@ -100,7 +100,7 @@ List SetExternalWithVariable(IEnumerable inTargets) //if (!IsExtrusion(prev)) string sign = externalDistance < 0 ? "+" : "-"; string code = $"motorValue:=motorValue{sign}{Abs(externalDistance):0.000}*extrusionFactor;"; - var externalCommand = new Robots.Commands.Custom($"SetExternal{count++}", command: code) + var externalCommand = new Robots.Commands.Custom($"SetExternal{count++}", Manufacturers.ABB, code) { RunBefore = true }; diff --git a/src/Extensions/Toolpaths/Extrusion/ExtrusionToolpath.cs b/src/Extensions/Toolpaths/Extrusion/ExtrusionToolpath.cs index 07e1b64..1e6e726 100644 --- a/src/Extensions/Toolpaths/Extrusion/ExtrusionToolpath.cs +++ b/src/Extensions/Toolpaths/Extrusion/ExtrusionToolpath.cs @@ -13,7 +13,7 @@ struct SimpleTarget public class ExternalExtrusionToolpath : SimpleToolpath { - public List SubPrograms { get; set; } = new List(); + public List SubPrograms { get; set; } = []; readonly ExtrusionAttributes _att; readonly double _extrusionFactor; @@ -156,14 +156,14 @@ Target CreateTarget(Plane location, Speed speed, Zone zone, double externalDista { string sign = externalDistance < 0 ? "+" : "-"; string code = $"motorValue:=motorValue{sign}{Abs(externalDistance):0.000}*extrusionFactor;"; - var externalCommand = new Robots.Commands.Custom($"SetExternal{_targets.Count}", command: code) + var externalCommand = new Robots.Commands.Custom($"SetExternal{_targets.Count}", Manufacturers.ABB, code) { RunBefore = true }; command = externalCommand; } - var target = new CartesianTarget(location, null, Motions.Linear, tool, speed, zone, command, frame, new[] { totalDistance }) + var target = new CartesianTarget(location, null, Motions.Linear, tool, speed, zone, command, frame, [totalDistance]) { ExternalCustom = externalCustom }; @@ -193,14 +193,14 @@ Target HomeStart() MoveL Offs(current,0,0,0),{_att.ExtrusionSpeed.Name},{_att.ExtrusionZone.Name},{_att.Tool.Name} \WObj:= {_att.Frame.Name}; ENDWHILE"; - var initCommand = new Robots.Commands.Custom("Init", declaration: declaration, command: initCode) + var initCommand = new Robots.Commands.Custom("Init", Manufacturers.ABB, initCode, declaration) { RunBefore = true }; - var testCommand = new Robots.Commands.Custom("Test", command: testCode); + var testCommand = new Robots.Commands.Custom("Test", Manufacturers.ABB, testCode); - var command = new Group(new[] { initCommand, testCommand }); - var home = new JointTarget(_att.Home, _att.Tool, _att.SafeSpeed, _att.SafeZone, command, _att.Frame, new[] { totalDistance }) + var command = new Group([initCommand, testCommand]); + var home = new JointTarget(_att.Home, _att.Tool, _att.SafeSpeed, _att.SafeZone, command, _att.Frame, [totalDistance]) { ExternalCustom = externalCustom }; @@ -214,7 +214,7 @@ Target HomeEnd() new Message("Se acabó."), new Stop() }; - var home = new JointTarget(_att.Home, _att.Tool, _att.SafeSpeed, _att.SafeZone, command, _att.Frame, new[] { totalDistance }) + var home = new JointTarget(_att.Home, _att.Tool, _att.SafeSpeed, _att.SafeZone, command, _att.Frame, [totalDistance]) { ExternalCustom = externalCustom }; diff --git a/src/Extensions/Toolpaths/Extrusion/ExtrusionVisualizer.cs b/src/Extensions/Toolpaths/Extrusion/ExtrusionVisualizer.cs index dea6785..f3b64dd 100644 --- a/src/Extensions/Toolpaths/Extrusion/ExtrusionVisualizer.cs +++ b/src/Extensions/Toolpaths/Extrusion/ExtrusionVisualizer.cs @@ -86,7 +86,7 @@ Mesh CreateContourMesh(List planes) void CreateContours(int ex, bool reverse) { - _contours = new List(); + _contours = []; Contour contour = null; for (int i = 0; i < Program.Targets.Count; i++) @@ -153,7 +153,7 @@ void CreateContours(int ex, bool reverse) class Contour { public Interval Time; - public List Planes { get; set; } = new List(); + public List Planes { get; set; } = []; public Mesh Mesh { get; set; } } } diff --git a/src/Extensions/Toolpaths/Milling/GCodeToolpath.cs b/src/Extensions/Toolpaths/Milling/GCodeToolpath.cs index 1cd77db..e9bbfdb 100644 --- a/src/Extensions/Toolpaths/Milling/GCodeToolpath.cs +++ b/src/Extensions/Toolpaths/Milling/GCodeToolpath.cs @@ -23,14 +23,14 @@ public GCodeToolpath(string file, CartesianTarget referenceTarget, Vector3d alig public class FiveAxisToRobots { - public List Targets { get; set; } = new List(); + public List Targets { get; set; } = []; - readonly List _ignored = new(); - readonly List _rapidStarts = new() { 0 }; + readonly List _ignored = []; + readonly List _rapidStarts = [0]; Tool _tool; readonly Frame _mcs; readonly Dictionary<(GCodeLine.LType letter, int number), Action> _gCodeMap; - readonly Dictionary _speeds = new(); + readonly Dictionary _speeds = []; readonly CartesianTarget _refTarget; Vector3d _alignment; int _lastRapid = 0; diff --git a/src/Extensions/Toolpaths/Milling/MillingToolpath.cs b/src/Extensions/Toolpaths/Milling/MillingToolpath.cs index cf402e5..99099a8 100644 --- a/src/Extensions/Toolpaths/Milling/MillingToolpath.cs +++ b/src/Extensions/Toolpaths/Milling/MillingToolpath.cs @@ -1,4 +1,4 @@ -using Rhino.Geometry; +using Rhino.Geometry; using Robots; using Robots.Commands; @@ -6,7 +6,7 @@ namespace Extensions.Toolpaths.Milling; public class MillingToolpath : SimpleToolpath { - public List SubPrograms { get; set; } = new List(); + public List SubPrograms { get; set; } = []; readonly MillingAttributes _att; readonly Tool _tool; diff --git a/src/Extensions/Toolpaths/SpatialExtrusion/SpatialExtrusion.cs b/src/Extensions/Toolpaths/SpatialExtrusion/SpatialExtrusion.cs index ade8a90..c1abf06 100644 --- a/src/Extensions/Toolpaths/SpatialExtrusion/SpatialExtrusion.cs +++ b/src/Extensions/Toolpaths/SpatialExtrusion/SpatialExtrusion.cs @@ -5,8 +5,8 @@ namespace Extensions.Toolpaths.SpatialExtrusion; public class SpatialExtrusion { - public List Targets { get; } = new List(); - public List<(Line segment, int type)> Display { get; } = new List<(Line segment, int type)>(); + public List Targets { get; } = []; + public List<(Line segment, int type)> Display { get; } = []; public SpatialExtrusion(IEnumerable polylines, SpatialAttributes attributes) {