From a71a9ef32cc0e93f732efe503e57f999099a6055 Mon Sep 17 00:00:00 2001 From: KatKatKateryna <89912278+KatKatKateryna@users.noreply.github.com> Date: Wed, 21 May 2025 16:18:28 +0100 Subject: [PATCH 1/8] Kateryna/cnx 1570 gh send text (#841) * add text converter to GH * Get the first matching Property named Value * adjust parameter description (debatable) * add text converter to GH * Get the first matching Property named Value * adjust parameter description (debatable) * add text converter to GH * Get the first matching Property named Value * adjust parameter description (debatable) * fake commit * Revert "fake commit" This reverts commit 702fbce8d5693fe8fcbc3f1e7152c01b47c29436. * adjusts comments and factors in text scale in rhino --------- Co-authored-by: Claire Kuang --- .../Components/Objects/CreateSpeckleObject.cs | 16 +++++++++++++--- .../HostApp/Helpers.cs | 3 ++- .../Grasshopper/GeometryBaseConverter.cs | 4 ++++ .../Raw/TextEntityToSpeckleConverter.cs | 4 ++-- 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Components/Objects/CreateSpeckleObject.cs b/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Components/Objects/CreateSpeckleObject.cs index 24175e95d..51a11d358 100644 --- a/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Components/Objects/CreateSpeckleObject.cs +++ b/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Components/Objects/CreateSpeckleObject.cs @@ -28,12 +28,17 @@ public class CreateSpeckleObject : GH_Component pManager.AddGenericParameter( "Object", "O", - "Input Object. Speckle objects, Model Objects, and geometry are accepted.", + "Input Object. Speckle Objects, Model Objects, and geometry are accepted.", GH_ParamAccess.item ); Params.Input[0].Optional = true; - pManager.AddGenericParameter("Geometry", "G", "The geometry of the Speckle Object", GH_ParamAccess.item); + pManager.AddGenericParameter( + "Geometry", + "G", + "Geometry of the Speckle Object. GeometryBase in Grasshopper includes text entities.", + GH_ParamAccess.item + ); Params.Input[1].Optional = true; pManager.AddTextParameter("Name", "N", "Name of the Speckle Object", GH_ParamAccess.item); @@ -73,7 +78,12 @@ public class CreateSpeckleObject : GH_Component { pManager.AddParameter(new SpeckleObjectParam(), "Object", "O", "Speckle Object", GH_ParamAccess.item); - pManager.AddGenericParameter("Geometry", "G", "The geometry of the Speckle Object", GH_ParamAccess.item); + pManager.AddGenericParameter( + "Geometry", + "G", + "Geometry of the Speckle Object. GeometryBase in Grasshopper includes text entities.", + GH_ParamAccess.item + ); pManager.AddTextParameter("Name", "N", "Name of the Speckle Object", GH_ParamAccess.item); diff --git a/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/HostApp/Helpers.cs b/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/HostApp/Helpers.cs index 0346f6f0f..361811474 100644 --- a/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/HostApp/Helpers.cs +++ b/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/HostApp/Helpers.cs @@ -104,7 +104,8 @@ public static class GrasshopperHelpers /// If it fails to cast public static GeometryBase GeometricGooToGeometryBase(this IGH_GeometricGoo geoGeo) { - var value = geoGeo.GetType().GetProperty("Value")?.GetValue(geoGeo); + // note: some objects (like text entities) can have multiple properties of name "Value" + var value = geoGeo.GetType().GetProperties().FirstOrDefault(x => x.Name == "Value")?.GetValue(geoGeo); switch (value) { case GeometryBase gb: diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Grasshopper/GeometryBaseConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Grasshopper/GeometryBaseConverter.cs index f57343938..51af6b408 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Grasshopper/GeometryBaseConverter.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Grasshopper/GeometryBaseConverter.cs @@ -16,6 +16,7 @@ public class GeometryBaseConverter : IToSpeckleTopLevelConverter private readonly ITypedConverter _pointcloudConverter; private readonly ITypedConverter _polycurveConverter; private readonly ITypedConverter _polylineConverter; + private readonly ITypedConverter _textConverter; private readonly ITypedConverter _meshConverter; private readonly ITypedConverter _extrusionConverter; private readonly ITypedConverter _subdConverter; @@ -30,6 +31,7 @@ public class GeometryBaseConverter : IToSpeckleTopLevelConverter ITypedConverter pointcloudConverter, ITypedConverter polycurveConverter, ITypedConverter polylineConverter, + ITypedConverter textConverter, ITypedConverter meshConverter, ITypedConverter brepConverter, ITypedConverter extrusionConverter, @@ -44,6 +46,7 @@ public class GeometryBaseConverter : IToSpeckleTopLevelConverter _pointcloudConverter = pointcloudConverter; _polycurveConverter = polycurveConverter; _polylineConverter = polylineConverter; + _textConverter = textConverter; _meshConverter = meshConverter; _brepConverter = brepConverter; _extrusionConverter = extrusionConverter; @@ -63,6 +66,7 @@ public class GeometryBaseConverter : IToSpeckleTopLevelConverter RG.PolyCurve polyCurve => _polycurveConverter.Convert(polyCurve), RG.Polyline polyline => _polylineConverter.Convert(polyline), RG.PolylineCurve polylineCurve => _polylineConverter.Convert(polylineCurve.ToPolyline()), + RG.TextEntity text => _textConverter.Convert(text), RG.Mesh mesh => _meshConverter.Convert(mesh), RG.Brep brep => _brepConverter.Convert(brep), RG.Extrusion ext => _extrusionConverter.Convert(ext), diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/TextEntityToSpeckleConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/TextEntityToSpeckleConverter.cs index 84197873e..7e10da8fa 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/TextEntityToSpeckleConverter.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/TextEntityToSpeckleConverter.cs @@ -1,4 +1,4 @@ -using Rhino.DocObjects; +using Rhino.DocObjects; using Speckle.Converters.Common; using Speckle.Converters.Common.Objects; @@ -30,7 +30,7 @@ public class TextEntityToSpeckleConverter : ITypedConverter Date: Thu, 22 May 2025 09:18:46 +0200 Subject: [PATCH 2/8] fix: sketchup to revit colors (#857) --- .../Receive/RevitHostObjectBuilder.cs | 92 +++++++++++++------ 1 file changed, 62 insertions(+), 30 deletions(-) diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs index f7782a4cd..b2238c1cf 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs @@ -101,7 +101,68 @@ public sealed class RevitHostObjectBuilder( unpackedRoot.ObjectsToConvert.ToList() ); - // 2 - Bake materials + // NOTE: below is 💩... https://github.com/specklesystems/speckle-sharp-connectors/pull/813 broke sketchup to revit workflow + // ids were modified to fix receiving instances [CNX-1707](https://linear.app/speckle/issue/CNX-1707/revit-curves-and-meshes-in-blocks-come-as-duplicated) + // but we then broke sketchup to revit because applicationIds in proxies didn't match modified application ids which cam from #813 hack + // given urgency to get sketchup to revit workflow back up and running, temp fix involves setting modified ids before material baking, mapping original app ids to modified ids and using those + // this way, CNX-1707 fix stays in tact and we fix sketchup to revit + // TODO: TransformTo and material baking needs to be fixed in Revit!! + + // create a mapping from original to modified IDs <- so that we can actually map ids in the proxies to the objects + Dictionary originalToModifiedIds = new(); + + // modify application IDs BEFORE material baking + foreach (LocalToGlobalMap localToGlobalMap in localToGlobalMaps) + { + if ( + localToGlobalMap.AtomicObject is ITransformable transformable + && localToGlobalMap.Matrix.Count > 0 + && localToGlobalMap.AtomicObject["units"] is string units + ) + { + var id = localToGlobalMap.AtomicObject.id; + var originalAppId = localToGlobalMap.AtomicObject.applicationId ?? id; + + // Apply transformations... + ITransformable? newTransformable = null; + foreach (var mat in localToGlobalMap.Matrix) + { + transformable.TransformTo(new Transform() { matrix = mat, units = units }, out newTransformable); + transformable = newTransformable; + } + + localToGlobalMap.AtomicObject = (newTransformable as Base)!; + localToGlobalMap.AtomicObject.id = id; + + // create modified ID and store mapping <- fixes CNX-1707 but causes us material mapping headache!!! + string modifiedAppId = $"{originalAppId}_{Guid.NewGuid().ToString("N")[..8]}"; + if (originalAppId != null) + { + originalToModifiedIds[originalAppId] = modifiedAppId; + } + + localToGlobalMap.AtomicObject.applicationId = modifiedAppId; + localToGlobalMap.Matrix = new HashSet(); + } + } + + // Update the RenderMaterialProxies with the "new" (aka hacked) application IDs + if (unpackedRoot.RenderMaterialProxies != null) + { + foreach (var proxy in unpackedRoot.RenderMaterialProxies) + { + var updatedObjects = new List(); + foreach (var objectId in proxy.objects) + { + // Use the modified ID if it exists, otherwise keep the original <- this SUCKS and we need to change + string idToUse = originalToModifiedIds.TryGetValue(objectId, out var modifiedId) ? modifiedId : objectId; + updatedObjects.Add(idToUse); + } + proxy.objects = updatedObjects; + } + } + + // 2 - Bake materials (now with the updated IDs) if (unpackedRoot.RenderMaterialProxies != null) { transactionManager.StartTransaction(true, "Baking materials"); @@ -178,35 +239,6 @@ public sealed class RevitHostObjectBuilder( { using var activity = activityFactory.Start("BakeObject"); - // POC hack of the ages: try to pre transform curves, points and meshes before baking - // we need to bypass the local to global converter as there we don't have access to what we want. that service will/should stop existing. - if ( - localToGlobalMap.AtomicObject is ITransformable transformable // and ICurve - && localToGlobalMap.Matrix.Count > 0 - && localToGlobalMap.AtomicObject["units"] is string units - ) - { - //TODO TransformTo will be deprecated as it's dangerous and requires ID transposing which is wrong! - //ID needs to be copied to the new instance - var id = localToGlobalMap.AtomicObject.id; - var originalAppId = localToGlobalMap.AtomicObject.applicationId; - - ITransformable? newTransformable = null; - foreach (var mat in localToGlobalMap.Matrix) - { - transformable.TransformTo(new Transform() { matrix = mat, units = units }, out newTransformable); - transformable = newTransformable; - } - - localToGlobalMap.AtomicObject = (newTransformable as Base)!; - localToGlobalMap.AtomicObject.id = id; - - // Make applicationId unique by appending a short GUID - // This prevents DirectShapeLibrary from using the same definition for multiple instances - localToGlobalMap.AtomicObject.applicationId = $"{originalAppId ?? id}_{Guid.NewGuid().ToString("N")[..8]}"; // hack of all of the ages. related to CNX-1707 - localToGlobalMap.Matrix = new HashSet(); // flush out the list, as we've applied the transforms already - } - // actual conversion happens here! var result = converter.Convert(localToGlobalMap.AtomicObject); onOperationProgressed.Report(new("Converting", (double)++count / localToGlobalMaps.Count)); From ea2cb90b2eb23a0794b4145e81a519381490298c Mon Sep 17 00:00:00 2001 From: Claire Kuang Date: Thu, 22 May 2025 10:30:21 +0100 Subject: [PATCH 3/8] feat(grasshopper): deconstruct and create empty props (#853) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * adds ability to deconstruct speckle props, and also to create empty props * by default add an input parameter --------- Co-authored-by: Björn Steinhagen --- .../Components/Dev/DeconstructSpeckleParam.cs | 10 +++- .../Objects/CreateSpeckleProperties.cs | 47 +++++++++++++++++-- 2 files changed, 53 insertions(+), 4 deletions(-) diff --git a/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Components/Dev/DeconstructSpeckleParam.cs b/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Components/Dev/DeconstructSpeckleParam.cs index 1296256e7..21fc6dfcf 100644 --- a/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Components/Dev/DeconstructSpeckleParam.cs +++ b/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Components/Dev/DeconstructSpeckleParam.cs @@ -31,7 +31,7 @@ public class DeconstructSpeckleParam : GH_Component, IGH_VariableParameterCompon pManager.AddGenericParameter( "Speckle Param", "SP", - "Speckle param to deconstruct. Expects Collections, Objects, or Materials", + "Speckle param to deconstruct. Expects Collections, Objects, Materials, or Properties", GH_ParamAccess.item ); } @@ -61,6 +61,14 @@ public class DeconstructSpeckleParam : GH_Component, IGH_VariableParameterCompon Name = string.IsNullOrEmpty(matGoo.Value.Name) ? matGoo.Value.Material.speckle_type : matGoo.Value.Name; outputParams = CreateOutputParamsFromBase(matGoo.Value.Base); break; + case SpecklePropertyGroupGoo propGoo: + Name = $"properties ({propGoo.Value.Count})"; + outputParams = new(); + foreach (var key in propGoo.Value.Keys) + { + outputParams.Add(CreateOutputParamByKeyValue(key, propGoo.Value[key].Value, GH_ParamAccess.item)); + } + break; default: return; } diff --git a/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Components/Objects/CreateSpeckleProperties.cs b/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Components/Objects/CreateSpeckleProperties.cs index 16310a0c2..a51f8a5ba 100644 --- a/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Components/Objects/CreateSpeckleProperties.cs +++ b/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Components/Objects/CreateSpeckleProperties.cs @@ -23,6 +23,8 @@ public class CreateSpeckleProperties : GH_Component, IGH_VariableParameterCompon protected override Bitmap Icon => Resources.speckle_properties_create; + public bool CreateEmptyProperties { get; set; } + private readonly DebounceDispatcher _debounceDispatcher = new(); protected override void RegisterInputParams(GH_InputParamManager pManager) @@ -39,7 +41,6 @@ public class CreateSpeckleProperties : GH_Component, IGH_VariableParameterCompon protected override void SolveInstance(IGH_DataAccess da) { // Create a data tree to store output - Dictionary properties = new(); // Check for structure of all inputs to see matching branches @@ -60,8 +61,18 @@ public class CreateSpeckleProperties : GH_Component, IGH_VariableParameterCompon { object? value = null; var success = da.GetData(i, ref value); + if (!success) + { + AddRuntimeMessage( + GH_RuntimeMessageLevel.Warning, + $"Parameter {Params.Input[i].NickName} does not have any values." + ); + + return; + } + var actualValue = value?.GetType().GetProperty("Value").GetValue(value); // note: unsure if reflection here hurts our performance - if (!success || value == null || actualValue == null) + if (value == null || actualValue == null) { AddRuntimeMessage( GH_RuntimeMessageLevel.Warning, @@ -80,7 +91,7 @@ public class CreateSpeckleProperties : GH_Component, IGH_VariableParameterCompon public bool CanInsertParameter(GH_ParameterSide side, int index) { - return side == GH_ParameterSide.Input; + return side == GH_ParameterSide.Input && !CreateEmptyProperties; } public bool CanRemoveParameter(GH_ParameterSide side, int index) @@ -137,4 +148,34 @@ public class CreateSpeckleProperties : GH_Component, IGH_VariableParameterCompon } }; } + + public override void AppendAdditionalMenuItems(ToolStripDropDown menu) + { + base.AppendAdditionalMenuItems(menu); + + Menu_AppendSeparator(menu); + ToolStripMenuItem emptyPropsMenuItem = Menu_AppendItem( + menu, + "Create empty Properties", + (s, e) => + { + CreateEmptyProperties = !CreateEmptyProperties; + if (CreateEmptyProperties) + { + Params.Input.Clear(); + ClearData(); + } + else if (Params.Input.Count == 0) + { + var p = CreateParameter(GH_ParameterSide.Input, 0); + Params.RegisterInputParam(p); + } + ExpireSolution(true); + }, + true, + CreateEmptyProperties + ); + emptyPropsMenuItem.ToolTipText = + "Toggle creating empty Properties. If set, the output Properties will be empty. Use for removing properties from objects."; + } } From 871359738c5b044c8de596f1ea691be210664a7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Steinhagen?= Date: Thu, 22 May 2025 11:47:56 +0200 Subject: [PATCH 4/8] feat: use render appearance (#827) Co-authored-by: Claire Kuang --- .../HostApp/RevitMaterialBaker.cs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitMaterialBaker.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitMaterialBaker.cs index e09e106c1..1cb32c6dc 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitMaterialBaker.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitMaterialBaker.cs @@ -126,10 +126,13 @@ public class RevitMaterialBaker string materialId = speckleRenderMaterial.applicationId ?? speckleRenderMaterial.id.NotNull(); string matName = _revitUtils.RemoveInvalidChars($"{speckleRenderMaterial.name}-({materialId})-{baseLayerName}"); - var newMaterialId = Autodesk.Revit.DB.Material.Create(_converterSettings.Current.Document, matName); - var revitMaterial = (Autodesk.Revit.DB.Material)_converterSettings.Current.Document.GetElement(newMaterialId); + var newMaterialId = Material.Create(_converterSettings.Current.Document, matName); + var revitMaterial = (Material)_converterSettings.Current.Document.GetElement(newMaterialId); revitMaterial.Color = new Color(diffuse.R, diffuse.G, diffuse.B); + // NOTE: UseRenderAppearanceForShading path of least resistance [CNX-1062](https://linear.app/speckle/issue/CNX-1062/set-material-appearance-in-addition-to-shading) + // appearance is based on assets and tricky + revitMaterial.UseRenderAppearanceForShading = true; revitMaterial.Transparency = (int)(transparency * 100); revitMaterial.Shininess = (int)(speckleRenderMaterial.metalness * 128); revitMaterial.Smoothness = (int)(smoothness * 128); @@ -156,7 +159,7 @@ public class RevitMaterialBaker using (var collector = new FilteredElementCollector(document)) { var materialIds = collector - .OfClass(typeof(Autodesk.Revit.DB.Material)) + .OfClass(typeof(Material)) .Where(m => m.Name.Contains(validBaseGroupName)) .Select(m => m.Id) .ToList(); From 2232227a8b5fe270c953f3cc6afb81da073f743f Mon Sep 17 00:00:00 2001 From: Claire Kuang Date: Thu, 22 May 2025 12:27:32 +0100 Subject: [PATCH 5/8] updates sample files to rhino 7 only components (#842) --- .../Speckle Grasshopper - Documentation.gh | Bin 27385 -> 24542 bytes .../Speckle Grasshopper - Sample Scripts.gh | Bin 49434 -> 49849 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Connectors/Rhino/Sample Files/Speckle Grasshopper - Documentation.gh b/Connectors/Rhino/Sample Files/Speckle Grasshopper - Documentation.gh index 371421cff547ec956712d0c6b18a4b12a93d13cc..c8e514c8627e479e1aa42e214db32c36c010d7b9 100644 GIT binary patch literal 24542 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

8QR#%#CSQ5h_=D}|zcEp1PA6?mGo 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 literal 27385 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 diff --git a/Connectors/Rhino/Sample Files/Speckle Grasshopper - Sample Scripts.gh b/Connectors/Rhino/Sample Files/Speckle Grasshopper - Sample Scripts.gh index 238f10c577cfa1eb20f1b9e506b27520857bbc29..dca4f4c019221a838cd7ef13a809b001d918c42d 100644 GIT binary patch literal 49849 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 literal 49434 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

5Xj>tkLQ-ECNl&7Tg=OwzMr1 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 Date: Thu, 22 May 2025 14:03:21 +0100 Subject: [PATCH 6/8] Kateryna/cnx 1615 hatch loop conversion failed (#824) * handle hatch segments that are not a Polyline * send elliptical curves * support line segments * support sending nurb curves * send approximated Hatch with nurb2d segment * send nurb loops for hatches * optimize * comment * comments * cut down Nurbs converter * simplify hatch conversion * fix nurb3d * optimize * rearrange * fix ellipse bug on send * fix rhino curves on receive * fix single>multi conversion issue on receive * shorten nurbs converter on send * shorten statement * explain 'count' var * return multiple line segments without constructing a polyline * comment * refactor(autocad): refactors hatch and region conversion and fixes some bugs (#856) * refactors hatch to speckle converter, and also fixes elevation bug * refactors region converter * removes excessive nurb converter * Update Speckle.Converters.AutocadShared.projitems --------- Co-authored-by: Claire Kuang --- ...Speckle.Converters.AutocadShared.projitems | 2 +- .../ToHost/Raw/CurveToHostRawConverter.cs | 10 +- .../Raw/RegionHatchToHostRawConverter.cs | 3 +- .../ToHost/Raw/RegionToHostRawConverter.cs | 20 +-- .../Geometry/HatchToSpeckleConverter.cs | 139 +++++++++++++----- .../Geometry/RegionToSpeckleConverter.cs | 130 ++++++++-------- .../Raw/CircularArc2dToSpeckleRawConverter.cs | 4 +- .../Raw/CircularArc3dToSpeckleRawConverter.cs | 4 +- 8 files changed, 198 insertions(+), 114 deletions(-) diff --git a/Converters/Autocad/Speckle.Converters.AutocadShared/Speckle.Converters.AutocadShared.projitems b/Converters/Autocad/Speckle.Converters.AutocadShared/Speckle.Converters.AutocadShared.projitems index d7066c483..c2061b957 100644 --- a/Converters/Autocad/Speckle.Converters.AutocadShared/Speckle.Converters.AutocadShared.projitems +++ b/Converters/Autocad/Speckle.Converters.AutocadShared/Speckle.Converters.AutocadShared.projitems @@ -86,4 +86,4 @@ - + \ No newline at end of file diff --git a/Converters/Autocad/Speckle.Converters.AutocadShared/ToHost/Raw/CurveToHostRawConverter.cs b/Converters/Autocad/Speckle.Converters.AutocadShared/ToHost/Raw/CurveToHostRawConverter.cs index 5e3e6cc80..fbefa8563 100644 --- a/Converters/Autocad/Speckle.Converters.AutocadShared/ToHost/Raw/CurveToHostRawConverter.cs +++ b/Converters/Autocad/Speckle.Converters.AutocadShared/ToHost/Raw/CurveToHostRawConverter.cs @@ -62,9 +62,15 @@ public class CurveToHostRawConverter : ITypedConverter 0.001) { - curve.MakeClosed(); + // method curve.MakeClosed() is unreliable: after TopLevelConverter uses ADB.Curve.CreateFromGeCurve to convert it to Spline, sometimes the spline.Closed=false + pointCollection.Add(pointCollection[0]); + if (weights.Count > 0) + { + weights.Add(weights[0]); + } + curve = new(target.degree, knots, pointCollection, weights, target.periodic); } curve.SetInterval(_intervalConverter.Convert(target.domain)); diff --git a/Converters/Autocad/Speckle.Converters.AutocadShared/ToHost/Raw/RegionHatchToHostRawConverter.cs b/Converters/Autocad/Speckle.Converters.AutocadShared/ToHost/Raw/RegionHatchToHostRawConverter.cs index eb1afbae6..54d2e817c 100644 --- a/Converters/Autocad/Speckle.Converters.AutocadShared/ToHost/Raw/RegionHatchToHostRawConverter.cs +++ b/Converters/Autocad/Speckle.Converters.AutocadShared/ToHost/Raw/RegionHatchToHostRawConverter.cs @@ -63,7 +63,8 @@ public class RegionHatchToHostRawConverter : ITypedConverter // Converted boundary List<(ADB.Entity, Base)> convertedBoundary = _curveConverter.Convert(target.boundary); - ADB.Curve nativeBoundary = ValidateCurve(convertedBoundary); + List nativeBoundary = convertedBoundary.Select(x => x.Item1).ToList(); // Converted loops - var nativeLoops = new List(); + List> nativeLoops = new(); foreach (var loop in target.innerLoops) { List<(ADB.Entity, Base)> convertedLoop = _curveConverter.Convert(loop); - nativeLoops.Add(ValidateCurve(convertedLoop)); + nativeLoops.Add(convertedLoop.Select(x => x.Item1).ToList()); } // Add boundary to the ADB.DBObjectCollection // Calculate the outer region, method should return an array with 1 region // https://help.autodesk.com/view/OARX/2025/ENU/?guid=GUID-684E602E-3555-4370-BCDC-1CE594676C43 ADB.DBObjectCollection boundaryDBObjColl = new(); - boundaryDBObjColl.Add(nativeBoundary); + nativeBoundary.ForEach(x => boundaryDBObjColl.Add(x)); using (ADB.DBObjectCollection outerRegionColl = ADB.Region.CreateFromCurves(boundaryDBObjColl)) { if (outerRegionColl.Count != 1) @@ -52,7 +52,7 @@ public class RegionToHostRawConverter : ITypedConverter // Same as above: Add loop segments to the ADB.DBObjectCollection // Calculate the inner region, method should return an array with 1 region ADB.DBObjectCollection loopDBObjColl = new(); - loopDBObjColl.Add(nativeLoop); + nativeLoop.ForEach(x => loopDBObjColl.Add(x)); using (ADB.DBObjectCollection innerRegionColl = ADB.Region.CreateFromCurves(loopDBObjColl)) { if (innerRegionColl.Count != 1) @@ -76,14 +76,4 @@ public class RegionToHostRawConverter : ITypedConverter throw new ConversionException($"Region conversion failed: {target}"); } - - private ADB.Curve ValidateCurve(List<(ADB.Entity, Base)> convertedResult) - { - if (convertedResult.Count != 1) - { - // this will only be the case if it was a non-planar Polycurve: throw error - throw new ConversionException($"Non-planar Polycurve cannot be used as a Region loop: {convertedResult}"); - } - return (ADB.Curve)convertedResult[0].Item1; - } } diff --git a/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/HatchToSpeckleConverter.cs b/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/HatchToSpeckleConverter.cs index 3d724b445..bda511200 100644 --- a/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/HatchToSpeckleConverter.cs +++ b/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/HatchToSpeckleConverter.cs @@ -17,19 +17,25 @@ public class HatchToSpeckleConverter : IToSpeckleTopLevelConverter, ITypedConver public Base Convert(object target) => Convert((ADB.Hatch)target); + ///

+ /// Converting AutoCAD Hatch to Speckle Region. + /// This method first converts Hatch to AutoCAD Region, and then uses RegionToSpeckle converter. + /// AutoCAD Region is a much simpler class than Hatch, and converting to region allows us to handle a bunch of unsupported conditions in Hatches. + /// + /// AutoCAD Hatch object + /// Speckle Region with property 'hasHatchPattern' as 'true' public SOG.Region Convert(ADB.Hatch target) { ADB.Region? regionToConvert = null; - for (int i = 0; i < target.NumberOfLoops; i++) { - // Create 3d polyline from the HatchLoop + // Convert HatchLoop into DBObjectCollection for the subsequent construction of the Region (.CreateFromCurves()) ADB.HatchLoop loop = target.GetLoopAt(i); - ADB.Curve polyline = PolylineFromLoop(loop); + List polyline = ConvertHatchLoopToCurveEntityList(loop); ADB.DBObjectCollection objCollection = new(); - objCollection.Add(polyline); + polyline.ForEach(x => objCollection.Add(x)); - // Convert polyline into an individual Region + // Convert a loop (represented by DBObjectCollection) into an individual Region using (ADB.DBObjectCollection regionCollection = ADB.Region.CreateFromCurves(objCollection)) { if (regionCollection.Count != 1) @@ -38,6 +44,7 @@ public class HatchToSpeckleConverter : IToSpeckleTopLevelConverter, ITypedConver $"Hatch conversion failed {target}: unexpected number of regions generated from 1 hatch loop" ); } + ADB.Region loopRegion = (ADB.Region)regionCollection[0]; // Assign first loop as the main Region, other Regions will be subtracted from it @@ -51,6 +58,7 @@ public class HatchToSpeckleConverter : IToSpeckleTopLevelConverter, ITypedConver { throw new ConversionException($"Hatch conversion failed: {target}"); } + // subtract region from Boundary region double areaBefore = regionToConvert.Area; regionToConvert.BooleanOperation(ADB.BooleanOperationType.BoolSubtract, loopRegion); @@ -69,6 +77,10 @@ public class HatchToSpeckleConverter : IToSpeckleTopLevelConverter, ITypedConver throw new ConversionException($"Hatch conversion failed: {target}"); } + // move this region to the target elevation + // POC: I've tried passing this elevation to ConvertHatchLoopToCurveEntityList() for direct assignment when converting 2d to 3d points, but this results in non-planarity in splines for some reason. + regionToConvert.TransformBy(AG.Matrix3d.Displacement(new AG.Vector3d(0, 0, target.Elevation))); + // convert and store Regions SOG.Region convertedRegion = _regionConverter.Convert(regionToConvert); convertedRegion.hasHatchPattern = true; @@ -76,44 +88,105 @@ public class HatchToSpeckleConverter : IToSpeckleTopLevelConverter, ITypedConver return convertedRegion; } - private ADB.Curve PolylineFromLoop(ADB.HatchLoop loop) + /// + /// Converts Hatchloops to database-resident curve entities. + /// Curve entities are required by the Region create method. + /// + private List ConvertHatchLoopToCurveEntityList(ADB.HatchLoop loop) { + List curveList = new(); + + // 1 - handle the case of a polyline first if (loop.IsPolyline) { - // disposable object, wrapping into "using" - using (AG.Point3dCollection vertices = new()) + // create a polyline from the loop.Polyline BulgeVertexCollection + ADB.Polyline polyline = new() { Closed = true }; + + for (int i = 0; i < loop.Polyline.Count; i++) { - // collect vertices and construct a polyline simultaneously, it will be clear what to use after iterating - ADB.Polyline polyline = new() { Closed = true }; + var vertex = loop.Polyline[i]; - int count = 0; - foreach (ADB.BulgeVertex bVertex in loop.Polyline) + // check if this is the last point, the closed property is already set and duplicated endpoints will result in an invalid polyline + if (i == loop.Polyline.Count - 1 && vertex.Vertex.GetDistanceTo(loop.Polyline[0].Vertex) < 0.001) { - // don't add the end point that's the same as the start point - AG.Point3d newPt = new(bVertex.Vertex.X, bVertex.Vertex.Y, 0); - if (count == 0 || vertices[0].DistanceTo(newPt) > 0.00001) - { - vertices.Add(newPt); - polyline.AddVertexAt(count, bVertex.Vertex, bVertex.Bulge, 0, 0); - count++; - } + continue; } - // if only 2 points, that's a circle - if (vertices.Count == 2) - { - AG.Point3d centerPt = - new( - vertices[0].X + (vertices[1].X - vertices[0].X) / 2, - vertices[0].Y + (vertices[1].Y - vertices[0].Y) / 2, - 0 - ); - return new ADB.Circle(centerPt, AG.Vector3d.ZAxis, vertices[0].DistanceTo(vertices[1]) / 2); - } - return polyline; + polyline.AddVertexAt(i, vertex.Vertex, vertex.Bulge, 0, 0); } + + curveList.Add(polyline); + return curveList; } - throw new ConversionException("Hatch loop conversion failed."); + // 2 - if the loop is not a polyline, handle the loop curves + // Notes: empirically, it seems that whenever the curve count is 1, it is a closed curve type like circle, ellipse, etc + // and when the curve count is > 1, they are line segments that will comprise of a closed area + // We'll process curves accordingly + if (loop.Curves.Count == 0) + { + throw new ConversionException($"Hatch loop doesn't contain any segments."); + } + + foreach (AG.Curve2d curve in loop.Curves) + { + ADB.Curve? curveEntity = null; + switch (curve) + { + case AG.LineSegment2d l: + curveEntity = new ADB.Line( + new AG.Point3d(l.StartPoint.X, l.StartPoint.Y, 0), + new AG.Point3d(l.EndPoint.X, l.EndPoint.Y, 0) + ); + break; + + case AG.CircularArc2d c: + AG.Point3d cCenter = new(c.Center.X, c.Center.Y, 0); + curveEntity = + c.EndPoint == c.StartPoint + ? new ADB.Circle(cCenter, AG.Vector3d.ZAxis, c.Radius) + : new ADB.Arc(cCenter, c.Radius, c.StartAngle, c.EndAngle); + break; + + case AG.EllipticalArc2d e: + curveEntity = new ADB.Ellipse( + new AG.Point3d(e.Center.X, e.Center.Y, 0), + AG.Vector3d.ZAxis, + new AG.Vector3d(e.MajorAxis.X, e.MajorAxis.Y, 0), + e.MinorRadius / e.MajorRadius, + e.StartAngle, + e.EndAngle + ); + break; + + case AG.NurbCurve2d n: // need to convert to spline, ew + AG.Point3dCollection controlPoints = new(); + AG.DoubleCollection knots = new(); + n.Knots.Cast().ToList().ForEach(x => knots.Add(x)); + n.DefinitionData.ControlPoints.Cast() + .ToList() + .ForEach(x => controlPoints.Add(new AG.Point3d(x.X, x.Y, 0))); + + curveEntity = new ADB.Spline( + n.Degree, + n.IsRational, + n.IsClosed(), + n.IsPeriodic(out _), + controlPoints, + knots, + n.DefinitionData.Weights, + 0, + 0 + ); + break; + + default: + throw new ConversionException($"Segments of type {curve.GetType()} are not supported"); + } + + curveList.Add(curveEntity); + } + + return curveList; } } diff --git a/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/RegionToSpeckleConverter.cs b/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/RegionToSpeckleConverter.cs index f18eee5c8..096b8af73 100644 --- a/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/RegionToSpeckleConverter.cs +++ b/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/RegionToSpeckleConverter.cs @@ -12,21 +12,27 @@ public class RegionToSpeckleConverter : IToSpeckleTopLevelConverter, ITypedConve private readonly ITypedConverter _brepConverter; private readonly ITypedConverter _lineConverter; private readonly ITypedConverter _arcConverter; + private readonly ITypedConverter _nurbConverter; private readonly ITypedConverter _circleConverter; + private readonly ITypedConverter _ellipseConverter; private readonly IConverterSettingsStore _settingsStore; public RegionToSpeckleConverter( ITypedConverter brepConverter, ITypedConverter lineConverter, ITypedConverter arcConverter, + ITypedConverter nurbConverter, ITypedConverter circleConverter, + ITypedConverter ellipseConverter, IConverterSettingsStore settingsStore ) { _brepConverter = brepConverter; _lineConverter = lineConverter; _arcConverter = arcConverter; + _nurbConverter = nurbConverter; _circleConverter = circleConverter; + _ellipseConverter = ellipseConverter; _settingsStore = settingsStore; } @@ -51,12 +57,15 @@ public class RegionToSpeckleConverter : IToSpeckleTopLevelConverter, ITypedConve .SelectMany(face => face.Loops); // Get and convert boundary and inner loops - var boundary = GetConvertedLoops(brepLoops, true)[0]; - var innerLoops = GetConvertedLoops(brepLoops, false); + List innerLoops = ParseAndConvertBrepLoops(brepLoops, out ICurve? outerLoop); + if (outerLoop is null) + { + throw new ConversionException("Could not convert outer region loop from brep."); + } return new SOG.Region() { - boundary = boundary, + boundary = outerLoop, innerLoops = innerLoops, hasHatchPattern = false, displayValue = [mesh], @@ -64,82 +73,87 @@ public class RegionToSpeckleConverter : IToSpeckleTopLevelConverter, ITypedConve }; } - private List GetConvertedLoops(IEnumerable brepLoops, bool getOuterLoop) + // Iterates through a list of brep boundary loops, converting them to Speckle and parsing between inner and outer loops + private List ParseAndConvertBrepLoops(IEnumerable brepLoops, out ICurve? outerLoop) { - var loops = new List(); + List innerLoops = new(); + outerLoop = null; foreach (var loop in brepLoops) { - bool outer = loop.LoopType == ABR.LoopType.LoopExterior; - - // continue only if the loop type is as requester (outer or inner) - if ((outer && getOuterLoop) || (!outer && !getOuterLoop)) + List segments = new(); + foreach (ABR.Edge edge in loop.Edges) { - // create segment collection for the current loop - var segments = new List(); - foreach (var edge in loop.Edges) + if (edge.Curve is AG.ExternalCurve3d xCurve && xCurve.IsNativeCurve) { - var curve = edge.Curve; - if (curve is AG.ExternalCurve3d xCurve && xCurve.IsNativeCurve) - { - segments.Add(xCurve.NativeCurve); - } - else - { - throw new ConversionException("Unsupported curve type for Region conversion"); - } + segments.Add(xCurve.NativeCurve); } - // reverse segment collection with arcs in case end-start points of subsequent segments don't match - if (segments.Count > 1 && Math.Abs(segments[0].EndPoint.DistanceTo(segments[1].StartPoint)) > 0.00001) + else { - segments.Reverse(); + throw new ConversionException("Unsupported curve type for Region conversion"); } + } - // convert segments to Speckle Polycurve or Circle - var convertedLoop = ConvertSegmentsToICurve(segments); - loops.Add(convertedLoop); + ICurve convertedLoop = + segments.Count == 1 ? ConvertSegmentToICurve(segments.First()) : ConvertSegmentsToICurve(segments); + + // sort inner or outer loop + if (loop.LoopType == ABR.LoopType.LoopExterior) + { + outerLoop = convertedLoop; + } + else + { + innerLoops.Add(convertedLoop); } } - return loops; + return innerLoops; + } + + private ICurve ConvertSegmentToICurve(AG.Curve3d segment) + { + switch (segment) + { + case AG.CircularArc3d arc: // expected to be closed + return arc.StartPoint == arc.EndPoint + ? _circleConverter.Convert(new ADB.Circle(arc.Center, arc.Normal, arc.Radius)) + : _arcConverter.Convert(arc); + case AG.EllipticalArc3d ellipse: + return _ellipseConverter.Convert( + new ADB.Ellipse( + ellipse.Center, + ellipse.Normal, + ellipse.MajorRadius * ellipse.MajorAxis, + ellipse.MinorRadius / ellipse.MajorRadius, + ellipse.StartAngle, + ellipse.EndAngle + ) + ); + case AG.NurbCurve3d nurbs: + return _nurbConverter.Convert(ADB.Curve.CreateFromGeCurve(nurbs)); + default: + throw new ConversionException($"Unsupported curve type for Region conversion: {segment}"); + } } private ICurve ConvertSegmentsToICurve(List segments) { - ICurve convertedLoop; - - // Handle edge case: if the segment is a closed Arc, then use Circle conversion to create a valid shape. - // Also, closed arcs cause errors when receiving in other host apps, like Rhino. - if (segments.Count == 1 && segments[0] is AG.CircularArc3d arc && arc.StartAngle + arc.EndAngle == 0) + return new SOG.Polycurve() { - convertedLoop = _circleConverter.Convert( - new ADB.Circle(arc.GetPlane().PointOnPlane, arc.GetPlane().Normal, arc.Radius) - ); - } - // otherwise, just construct a Polycurve from subsequent segments - else - { - // Maybe we need to convert to AutoCAD Polycurve - convertedLoop = new SOG.Polycurve() - { - segments = segments.Select(x => ConvertSegment(x)).ToList(), - closed = true, - units = _settingsStore.Current.SpeckleUnits - }; - } - - return convertedLoop; + segments = segments.Select(x => ConvertSegment(x)).ToList(), + closed = true, + units = _settingsStore.Current.SpeckleUnits + }; } private ICurve ConvertSegment(AG.Curve3d curve) { - switch (curve) + return curve switch { - case AG.LineSegment3d line: - return _lineConverter.Convert(line); - case AG.CircularArc3d arc: - return _arcConverter.Convert(arc); - } - - throw new ConversionException($"Unsupported curve type for Region conversion: {curve}"); + AG.LineSegment3d line => _lineConverter.Convert(line), + AG.CircularArc3d arc => _arcConverter.Convert(arc), + AG.NurbCurve3d nurb => _nurbConverter.Convert(ADB.Curve.CreateFromGeCurve(nurb)), + _ => throw new ConversionException($"Unsupported curve type for Region conversion: {curve}") + }; } } diff --git a/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/CircularArc2dToSpeckleRawConverter.cs b/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/CircularArc2dToSpeckleRawConverter.cs index 40a8feab6..5b16e80f6 100644 --- a/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/CircularArc2dToSpeckleRawConverter.cs +++ b/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/CircularArc2dToSpeckleRawConverter.cs @@ -3,12 +3,12 @@ using Speckle.Converters.Common.Objects; namespace Speckle.Converters.Autocad.ToSpeckle.Raw; -public class CircularArc2dToSpeckleConverter : ITypedConverter +public class CircularArc2dToSpeckleRawConverter : ITypedConverter { private readonly ITypedConverter _planeConverter; private readonly IConverterSettingsStore _settingsStore; - public CircularArc2dToSpeckleConverter( + public CircularArc2dToSpeckleRawConverter( ITypedConverter planeConverter, IConverterSettingsStore settingsStore ) diff --git a/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/CircularArc3dToSpeckleRawConverter.cs b/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/CircularArc3dToSpeckleRawConverter.cs index 1ca841b1e..27bc6cc59 100644 --- a/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/CircularArc3dToSpeckleRawConverter.cs +++ b/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/CircularArc3dToSpeckleRawConverter.cs @@ -3,13 +3,13 @@ using Speckle.Converters.Common.Objects; namespace Speckle.Converters.Autocad.ToSpeckle.Raw; -public class CircularArc3dToSpeckleConverter : ITypedConverter +public class CircularArc3dToSpeckleRawConverter : ITypedConverter { private readonly ITypedConverter _pointConverter; private readonly ITypedConverter _planeConverter; private readonly IConverterSettingsStore _settingsStore; - public CircularArc3dToSpeckleConverter( + public CircularArc3dToSpeckleRawConverter( ITypedConverter pointConverter, ITypedConverter planeConverter, IConverterSettingsStore settingsStore From c8ceeab2d96480d032962e02df8b8f82d6fdbf3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Steinhagen?= Date: Thu, 22 May 2025 15:16:11 +0200 Subject: [PATCH 7/8] fix: reverting setting render material appearance (#859) --- .../HostApp/RevitMaterialBaker.cs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitMaterialBaker.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitMaterialBaker.cs index 1cb32c6dc..82f513358 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitMaterialBaker.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitMaterialBaker.cs @@ -129,10 +129,6 @@ public class RevitMaterialBaker var newMaterialId = Material.Create(_converterSettings.Current.Document, matName); var revitMaterial = (Material)_converterSettings.Current.Document.GetElement(newMaterialId); revitMaterial.Color = new Color(diffuse.R, diffuse.G, diffuse.B); - - // NOTE: UseRenderAppearanceForShading path of least resistance [CNX-1062](https://linear.app/speckle/issue/CNX-1062/set-material-appearance-in-addition-to-shading) - // appearance is based on assets and tricky - revitMaterial.UseRenderAppearanceForShading = true; revitMaterial.Transparency = (int)(transparency * 100); revitMaterial.Shininess = (int)(speckleRenderMaterial.metalness * 128); revitMaterial.Smoothness = (int)(smoothness * 128); From bdd1e61b6dfc4ee7f9d9b515a12cc8761497a05e Mon Sep 17 00:00:00 2001 From: Claire Kuang Date: Thu, 22 May 2025 14:28:39 +0100 Subject: [PATCH 8/8] adds logo to gh converter (#858) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Björn Steinhagen --- .../Properties/Resources.Designer.cs | 12 +++++++++++- .../Properties/Resources.resx | 3 +++ .../Registration/PriorityLoader.cs | 6 ++++++ .../Resources/logo.png | Bin 0 -> 682 bytes ...Speckle.Connectors.GrasshopperShared.projitems | 3 +++ 5 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Resources/logo.png diff --git a/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Properties/Resources.Designer.cs b/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Properties/Resources.Designer.cs index 2c5dfc5a7..8a73e98fa 100644 --- a/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Properties/Resources.Designer.cs +++ b/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Properties/Resources.Designer.cs @@ -1,4 +1,4 @@ -//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ // // This code was generated by a tool. // Runtime Version:4.0.30319.42000 @@ -59,6 +59,16 @@ namespace Speckle.Connectors.GrasshopperShared.Properties { resourceCulture = value; } } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap speckle_logo { + get { + object obj = ResourceManager.GetObject("logo", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } /// /// Looks up a localized resource of type System.Drawing.Bitmap. diff --git a/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Properties/Resources.resx b/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Properties/Resources.resx index 263940d81..40407b26b 100644 --- a/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Properties/Resources.resx +++ b/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Properties/Resources.resx @@ -118,6 +118,9 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ..\Resources\logo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\speckle_collections_create.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a diff --git a/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Registration/PriorityLoader.cs b/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Registration/PriorityLoader.cs index 0ff23d8ba..403d42408 100644 --- a/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Registration/PriorityLoader.cs +++ b/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Registration/PriorityLoader.cs @@ -1,3 +1,4 @@ +using Grasshopper; using Grasshopper.Kernel; using Microsoft.Extensions.DependencyInjection; using Speckle.Connectors.Common; @@ -6,9 +7,11 @@ using Speckle.Connectors.Common.Builders; using Speckle.Connectors.Common.Operations; using Speckle.Connectors.Common.Operations.Receive; using Speckle.Connectors.Common.Threading; +using Speckle.Connectors.GrasshopperShared.Components; using Speckle.Connectors.GrasshopperShared.Operations.Receive; using Speckle.Connectors.GrasshopperShared.Operations.Send; using Speckle.Connectors.GrasshopperShared.Parameters; +using Speckle.Connectors.GrasshopperShared.Properties; using Speckle.Converters.Rhino; using Speckle.Sdk; using Speckle.Sdk.Credentials; @@ -23,6 +26,9 @@ public class PriorityLoader : GH_AssemblyPriority public override GH_LoadingInstruction PriorityLoad() { + Instances.ComponentServer.AddCategoryIcon(ComponentCategories.PRIMARY_RIBBON, Resources.speckle_logo); + Instances.ComponentServer.AddCategorySymbolName(ComponentCategories.PRIMARY_RIBBON, 'S'); + try { var services = new ServiceCollection(); diff --git a/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Resources/logo.png b/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Resources/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..0e4ecd87b6f6d0612c6c807c944fc5e4246d1d12 GIT binary patch literal 682 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM3?#3wJbMaAF%}28J2BoosZ$T+a29w(7Bet# z3xhBt!>l<#<%}5tJ|V6^$%KXf5|;i>Sn@Mr>92%kU=qkcMoWIFmAwg>^BqNY391@o z_1M@9VNZn8UIxzm4mElCZ-(%v;#sfUCw_@v@+)@nujqxpA{YD)pZ_~-?(g6^zk_D~ z4w(7dZ^mz*X}>+E{BfE1$E@v-QpG=@F5$G7wq4&`C;oBj`(xMh$Ex$MdHY}EmcROq ze|75qY1I5vt^B7@_D{CtpH$(0vAqAnIUppI{hu-78F%s*hR`QKLl`0+14*C=L(~(9 zI7As?G8<~3a5l(Hpn8_*m%ORppc;{6fg(actF!+LWd6Syt+WCd))gf|e!&dPoP46v z3hFvW7M48Bl18@fp$R#atrO?0+T)O7USn+DK9?s8t8^_PZ!6K ziaE(C4UBFoA6QR3O+CW)&d@-MS(B~gz=?|Hz?r-npSe#YI$vILMy(}L;D*zJ7LLdA zKAYWCGqeOx{1DpB;%uP&IDd^0Ph!MmW(~zB3We5*RSdUT<*b(3_&fz#!QkoY=d#Wz Gp$Pz|*iB{t literal 0 HcmV?d00001 diff --git a/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Speckle.Connectors.GrasshopperShared.projitems b/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Speckle.Connectors.GrasshopperShared.projitems index 63a04c6c1..f9278a7fe 100644 --- a/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Speckle.Connectors.GrasshopperShared.projitems +++ b/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Speckle.Connectors.GrasshopperShared.projitems @@ -91,4 +91,7 @@ + + + \ No newline at end of file