From 1e964b2582a5d71b6b4c3c58d445a55a51f25738 Mon Sep 17 00:00:00 2001 From: Anthonie Kramer Date: Fri, 3 Nov 2023 15:18:26 -0700 Subject: [PATCH 1/2] create representations for content instances --- .../ClassroomLayout.Dependencies.csproj | 4 +- .../dependencies/ClassroomLayoutInputs.g.cs | 6 +- .../dependencies/ClassroomLayoutOutputs.g.cs | 8 +-- .../ClassroomLayout/src/Function.g.cs | 16 ++--- .../dependencies/CirculationSegment.g.cs | 1 + .../CustomSpaceType.Dependencies.csproj | 6 +- .../dependencies/CustomSpaceTypeInputs.g.cs | 6 +- .../dependencies/CustomSpaceTypeOutputs.g.cs | 3 - .../dependencies/LevelElements.g.cs | 1 + .../dependencies/LevelVolume.g.cs | 8 ++- .../dependencies/SpaceBoundary.g.cs | 14 ++++- .../dependencies/ThickenedPolyline.g.cs | 63 ------------------- .../CustomLayout/src/Function.g.cs | 10 +-- .../dependencies/Doors.Dependencies.csproj | 6 +- .../InteriorPartitions.Dependencies.csproj | 4 +- .../InteriorPartitionsInputs.g.cs | 6 +- .../InteriorPartitionsOutputs.g.cs | 3 - LayoutFunctions/InteriorPartitions/hypar.json | 4 ++ .../server/InteriorPartitions.Server.csproj | 8 +-- .../InteriorPartitions/server/Program.cs | 2 +- .../InteriorPartitions/src/Function.g.cs | 16 ++--- .../LayoutFunctionCommon.csproj | 9 +-- .../LayoutFunctionCommon.sln | 25 ++++++++ .../LayoutFunctionCommon/LayoutStrategies.cs | 18 +++++- .../dependencies/CirculationSegment.g.cs | 12 ++-- .../dependencies/Floor.g.cs | 59 +++++++++++++++++ .../dependencies/LevelElements.g.cs | 1 + .../dependencies/LevelVolume.g.cs | 8 ++- .../dependencies/ServiceCore.g.cs | 1 + .../dependencies/SpaceBoundary.g.cs | 14 ++++- ...ConfigurationFromModel.Dependencies.csproj | 6 +- .../SpaceConfigurationFromModelInputs.g.cs | 6 +- .../SpaceConfigurationFromModelOutputs.g.cs | 3 - .../dependencies/ThickenedPolyline.g.cs | 1 + SpaceConfigurationFromModel/src/Function.g.cs | 17 ++--- ZonePlanningFunctions/Function-SpacePlanning | 2 +- 36 files changed, 207 insertions(+), 170 deletions(-) delete mode 100644 LayoutFunctions/CustomLayout/dependencies/ThickenedPolyline.g.cs create mode 100644 LayoutFunctions/LayoutFunctionCommon/LayoutFunctionCommon.sln create mode 100644 SpaceConfigurationFromModel/dependencies/Floor.g.cs diff --git a/LayoutFunctions/ClassroomLayout/dependencies/ClassroomLayout.Dependencies.csproj b/LayoutFunctions/ClassroomLayout/dependencies/ClassroomLayout.Dependencies.csproj index e832a2d9..7a9eee34 100644 --- a/LayoutFunctions/ClassroomLayout/dependencies/ClassroomLayout.Dependencies.csproj +++ b/LayoutFunctions/ClassroomLayout/dependencies/ClassroomLayout.Dependencies.csproj @@ -4,8 +4,8 @@ net6.0 - - + + diff --git a/LayoutFunctions/ClassroomLayout/dependencies/ClassroomLayoutInputs.g.cs b/LayoutFunctions/ClassroomLayout/dependencies/ClassroomLayoutInputs.g.cs index 2fe90d7e..ce7f6cc7 100644 --- a/LayoutFunctions/ClassroomLayout/dependencies/ClassroomLayoutInputs.g.cs +++ b/LayoutFunctions/ClassroomLayout/dependencies/ClassroomLayoutInputs.g.cs @@ -24,13 +24,13 @@ namespace ClassroomLayout [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.1.21.0 (Newtonsoft.Json v13.0.0.0)")] - public class ClassroomLayoutInputs : S3Args + public class ClassroomLayoutInputs : ArgsBase { [Newtonsoft.Json.JsonConstructor] - public ClassroomLayoutInputs(bool @createWalls, Overrides @overrides, string bucketName, string uploadsBucket, Dictionary modelInputKeys, string gltfKey, string elementsKey, string ifcKey): - base(bucketName, uploadsBucket, modelInputKeys, gltfKey, elementsKey, ifcKey) + public ClassroomLayoutInputs(bool @createWalls, Overrides @overrides, Dictionary modelInputKeys, string gltfKey, string elementsKey, string ifcKey): + base(modelInputKeys, gltfKey, elementsKey, ifcKey) { var validator = Validator.Instance.GetFirstValidatorForType(); if(validator != null) diff --git a/LayoutFunctions/ClassroomLayout/dependencies/ClassroomLayoutOutputs.g.cs b/LayoutFunctions/ClassroomLayout/dependencies/ClassroomLayoutOutputs.g.cs index 769bfc65..e4e80b2a 100644 --- a/LayoutFunctions/ClassroomLayout/dependencies/ClassroomLayoutOutputs.g.cs +++ b/LayoutFunctions/ClassroomLayout/dependencies/ClassroomLayoutOutputs.g.cs @@ -20,9 +20,7 @@ public class ClassroomLayoutOutputs: SystemResults /// Total count of seats /// [JsonProperty("Total count of desk seats")] - public double TotalCountOfDeskSeats {get; set;} - - + public double TotalCountOfDeskSeats { get; set; } /// /// Construct a ClassroomLayoutOutputs with default inputs. @@ -30,16 +28,14 @@ public class ClassroomLayoutOutputs: SystemResults /// public ClassroomLayoutOutputs() : base() { - } - /// /// Construct a ClassroomLayoutOutputs specifying all inputs. /// /// [JsonConstructor] - public ClassroomLayoutOutputs(double totalCountOfDeskSeats): base() + public ClassroomLayoutOutputs(double totalCountOfDeskSeats) : base() { this.TotalCountOfDeskSeats = totalCountOfDeskSeats; diff --git a/LayoutFunctions/ClassroomLayout/src/Function.g.cs b/LayoutFunctions/ClassroomLayout/src/Function.g.cs index bdc2c2cf..4de301e1 100644 --- a/LayoutFunctions/ClassroomLayout/src/Function.g.cs +++ b/LayoutFunctions/ClassroomLayout/src/Function.g.cs @@ -2,7 +2,6 @@ // Edits to this code will be overwritten the next time you run 'hypar init'. // DO NOT EDIT THIS FILE. -using Amazon; using Amazon.Lambda.Core; using Hypar.Functions.Execution; using Hypar.Functions.Execution.AWS; @@ -19,9 +18,9 @@ public class Function { // Cache the model store for use by subsequent // executions of this lambda. - private IModelStore store; + private UrlModelStore store; - public async Task Handler(ClassroomLayoutInputs args, ILambdaContext context) + public async Task Handler(ClassroomLayoutInputs args) { // Preload dependencies (if they exist), // so that they are available during model deserialization. @@ -61,15 +60,8 @@ public async Task Handler(ClassroomLayoutInputs args, IL Console.WriteLine($"Time to load assemblies: {sw.Elapsed.TotalSeconds})"); if(this.store == null) - { - if (args.SignedResourceUrls == null) - { - this.store = new S3ModelStore(RegionEndpoint.GetBySystemName("us-west-1")); - } - else - { - this.store = new UrlModelStore(); - } + { + this.store = new UrlModelStore(); } diff --git a/LayoutFunctions/CustomLayout/dependencies/CirculationSegment.g.cs b/LayoutFunctions/CustomLayout/dependencies/CirculationSegment.g.cs index de3dcd58..8ebae248 100644 --- a/LayoutFunctions/CustomLayout/dependencies/CirculationSegment.g.cs +++ b/LayoutFunctions/CustomLayout/dependencies/CirculationSegment.g.cs @@ -33,6 +33,7 @@ public CirculationSegment(ThickenedPolyline @geometry, Profile @profile, double this.Geometry = @geometry; } + // Empty constructor public CirculationSegment() : base() diff --git a/LayoutFunctions/CustomLayout/dependencies/CustomSpaceType.Dependencies.csproj b/LayoutFunctions/CustomLayout/dependencies/CustomSpaceType.Dependencies.csproj index 3cfbbf73..2efd2423 100644 --- a/LayoutFunctions/CustomLayout/dependencies/CustomSpaceType.Dependencies.csproj +++ b/LayoutFunctions/CustomLayout/dependencies/CustomSpaceType.Dependencies.csproj @@ -9,9 +9,9 @@ - - - + + + \ No newline at end of file diff --git a/LayoutFunctions/CustomLayout/dependencies/CustomSpaceTypeInputs.g.cs b/LayoutFunctions/CustomLayout/dependencies/CustomSpaceTypeInputs.g.cs index 553067b4..8afc4ee2 100644 --- a/LayoutFunctions/CustomLayout/dependencies/CustomSpaceTypeInputs.g.cs +++ b/LayoutFunctions/CustomLayout/dependencies/CustomSpaceTypeInputs.g.cs @@ -24,13 +24,13 @@ namespace CustomSpaceType [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.1.21.0 (Newtonsoft.Json v13.0.0.0)")] - public class CustomSpaceTypeInputs : S3Args + public class CustomSpaceTypeInputs : ArgsBase { [Newtonsoft.Json.JsonConstructor] - public CustomSpaceTypeInputs(IList @layouts, Overrides @overrides, string bucketName, string uploadsBucket, Dictionary modelInputKeys, string gltfKey, string elementsKey, string ifcKey): - base(bucketName, uploadsBucket, modelInputKeys, gltfKey, elementsKey, ifcKey) + public CustomSpaceTypeInputs(IList @layouts, Overrides @overrides, Dictionary modelInputKeys, string gltfKey, string elementsKey, string ifcKey): + base(modelInputKeys, gltfKey, elementsKey, ifcKey) { var validator = Validator.Instance.GetFirstValidatorForType(); if(validator != null) diff --git a/LayoutFunctions/CustomLayout/dependencies/CustomSpaceTypeOutputs.g.cs b/LayoutFunctions/CustomLayout/dependencies/CustomSpaceTypeOutputs.g.cs index fd3d20b3..03da04a4 100644 --- a/LayoutFunctions/CustomLayout/dependencies/CustomSpaceTypeOutputs.g.cs +++ b/LayoutFunctions/CustomLayout/dependencies/CustomSpaceTypeOutputs.g.cs @@ -17,16 +17,13 @@ namespace CustomSpaceType public class CustomSpaceTypeOutputs: SystemResults { - /// /// Construct a CustomSpaceTypeOutputs with default inputs. /// This should be used for testing only. /// public CustomSpaceTypeOutputs() : base() { - } - } } \ No newline at end of file diff --git a/LayoutFunctions/CustomLayout/dependencies/LevelElements.g.cs b/LayoutFunctions/CustomLayout/dependencies/LevelElements.g.cs index dd221b85..3b715315 100644 --- a/LayoutFunctions/CustomLayout/dependencies/LevelElements.g.cs +++ b/LayoutFunctions/CustomLayout/dependencies/LevelElements.g.cs @@ -34,6 +34,7 @@ public LevelElements(IList @elements, System.Guid @level, System.Guid @ this.Level = @level; } + // Empty constructor public LevelElements() : base() diff --git a/LayoutFunctions/CustomLayout/dependencies/LevelVolume.g.cs b/LayoutFunctions/CustomLayout/dependencies/LevelVolume.g.cs index d3164fe8..be2fb359 100644 --- a/LayoutFunctions/CustomLayout/dependencies/LevelVolume.g.cs +++ b/LayoutFunctions/CustomLayout/dependencies/LevelVolume.g.cs @@ -27,7 +27,7 @@ namespace Elements public partial class LevelVolume : GeometricElement { [JsonConstructor] - public LevelVolume(Profile @profile, double @height, double @area, string @buildingName, System.Guid? @level, System.Guid? @mass, System.Guid? @planView, Transform @transform = null, Material @material = null, Representation @representation = null, bool @isElementDefinition = false, System.Guid @id = default, string @name = null) + public LevelVolume(Profile @profile, double @height, double @area, string @buildingName, System.Guid? @level, System.Guid? @mass, System.Guid? @planView, IList @profiles, Transform @transform = null, Material @material = null, Representation @representation = null, bool @isElementDefinition = false, System.Guid @id = default, string @name = null) : base(transform, material, representation, isElementDefinition, id, name) { this.Profile = @profile; @@ -37,8 +37,10 @@ public LevelVolume(Profile @profile, double @height, double @area, string @build this.Level = @level; this.Mass = @mass; this.PlanView = @planView; + this.Profiles = @profiles; } + // Empty constructor public LevelVolume() : base() @@ -73,6 +75,10 @@ public LevelVolume() [JsonProperty("Plan View", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] public System.Guid? PlanView { get; set; } + /// Multiple profiles used for a collection of volumes + [JsonProperty("Profiles", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public IList Profiles { get; set; } + } } \ No newline at end of file diff --git a/LayoutFunctions/CustomLayout/dependencies/SpaceBoundary.g.cs b/LayoutFunctions/CustomLayout/dependencies/SpaceBoundary.g.cs index 38a59481..8ce5974d 100644 --- a/LayoutFunctions/CustomLayout/dependencies/SpaceBoundary.g.cs +++ b/LayoutFunctions/CustomLayout/dependencies/SpaceBoundary.g.cs @@ -27,7 +27,7 @@ namespace Elements public partial class SpaceBoundary : GeometricElement { [JsonConstructor] - public SpaceBoundary(Profile @boundary, IList @cells, double @area, double? @length, double? @depth, double @height, string @programGroup, string @programType, System.Guid? @level, System.Guid? @levelLayout, string @hyparSpaceType, Transform @transform = null, Material @material = null, Representation @representation = null, bool @isElementDefinition = false, System.Guid @id = default, string @name = null) + public SpaceBoundary(Profile @boundary, IList @cells, double @area, double? @length, double? @depth, double @height, string @programGroup, string @programType, System.Guid? @programRequirement, System.Guid? @level, System.Guid? @levelLayout, string @hyparSpaceType, string @defaultWallType, Transform @transform = null, Material @material = null, Representation @representation = null, bool @isElementDefinition = false, System.Guid @id = default, string @name = null) : base(transform, material, representation, isElementDefinition, id, name) { this.Boundary = @boundary; @@ -38,11 +38,14 @@ public SpaceBoundary(Profile @boundary, IList @cells, double @area, dou this.Height = @height; this.ProgramGroup = @programGroup; this.ProgramType = @programType; + this.ProgramRequirement = @programRequirement; this.Level = @level; this.LevelLayout = @levelLayout; this.HyparSpaceType = @hyparSpaceType; + this.DefaultWallType = @defaultWallType; } + // Empty constructor public SpaceBoundary() : base() @@ -78,9 +81,12 @@ public SpaceBoundary() public string ProgramGroup { get; set; } /// The name of the program type assigned to this space (like "Open Office" or "Meeting Room") - [JsonProperty("Program Type", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [JsonProperty("Program Type", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] public string ProgramType { get; set; } + [JsonProperty("Program Requirement", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Guid? ProgramRequirement { get; set; } + [JsonProperty("Level", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] public System.Guid? Level { get; set; } @@ -92,6 +98,10 @@ public SpaceBoundary() [JsonProperty("Hypar Space Type", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] public string HyparSpaceType { get; set; } + /// What wall type should generally be created for this space type? This may get overridden later on for a specific wall. + [JsonProperty("Default Wall Type", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string DefaultWallType { get; set; } + } } \ No newline at end of file diff --git a/LayoutFunctions/CustomLayout/dependencies/ThickenedPolyline.g.cs b/LayoutFunctions/CustomLayout/dependencies/ThickenedPolyline.g.cs deleted file mode 100644 index 01d3fec4..00000000 --- a/LayoutFunctions/CustomLayout/dependencies/ThickenedPolyline.g.cs +++ /dev/null @@ -1,63 +0,0 @@ -//---------------------- -// -// Generated using the NJsonSchema v10.1.21.0 (Newtonsoft.Json v13.0.0.0) (http://NJsonSchema.org) -// -//---------------------- -using Elements; -using Elements.GeoJSON; -using Elements.Geometry; -using Elements.Geometry.Solids; -using Elements.Spatial; -using Elements.Validators; -using Elements.Serialization.JSON; -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Linq; -using Line = Elements.Geometry.Line; -using Polygon = Elements.Geometry.Polygon; - -namespace Elements -{ - #pragma warning disable // Disable all warnings - - /// A polyline that has been thickened into a polygon. - [JsonConverter(typeof(Elements.Serialization.JSON.JsonInheritanceConverter), "discriminator")] - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.1.21.0 (Newtonsoft.Json v13.0.0.0)")] - public partial class ThickenedPolyline - { - [JsonConstructor] - public ThickenedPolyline(Polyline @polyline, double? @width, bool? @flip, double @leftWidth, double @rightWidth) - { - this.Polyline = @polyline; - this.Width = @width; - this.Flip = @flip; - this.LeftWidth = @leftWidth; - this.RightWidth = @rightWidth; - } - - // Empty constructor - public ThickenedPolyline() - { - } - - [JsonProperty("polyline", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - public Polyline Polyline { get; set; } - - [JsonProperty("width", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - public double? Width { get; set; } - - [JsonProperty("flip", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - public bool? Flip { get; set; } - - /// The amount to thicken the polyline on its "left" side, imagining that the polyline is extending away from you. That is, if the polyline starts at (0,0,0) and follows the +Z axis, the left side extends into the -X quadrant. - [JsonProperty("leftWidth", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - public double LeftWidth { get; set; } - - /// The amount to thicken the polyline on its "right" side, imagining that the polyline is extending away from you. That is, if the polyline starts at (0,0,0) and follows the +Z axis, the right side extends into the +X quadrant. - [JsonProperty("rightWidth", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] - public double RightWidth { get; set; } - - - } -} \ No newline at end of file diff --git a/LayoutFunctions/CustomLayout/src/Function.g.cs b/LayoutFunctions/CustomLayout/src/Function.g.cs index 2f3b19cc..39f67cb3 100644 --- a/LayoutFunctions/CustomLayout/src/Function.g.cs +++ b/LayoutFunctions/CustomLayout/src/Function.g.cs @@ -2,7 +2,6 @@ // Edits to this code will be overwritten the next time you run 'hypar init'. // DO NOT EDIT THIS FILE. -using Amazon; using Amazon.Lambda.Core; using Hypar.Functions.Execution; using Hypar.Functions.Execution.AWS; @@ -19,9 +18,9 @@ public class Function { // Cache the model store for use by subsequent // executions of this lambda. - private IModelStore store; + private UrlModelStore store; - public async Task Handler(CustomSpaceTypeInputs args, ILambdaContext context) + public async Task Handler(CustomSpaceTypeInputs args) { // Preload dependencies (if they exist), // so that they are available during model deserialization. @@ -61,9 +60,10 @@ public async Task Handler(CustomSpaceTypeInputs args, IL Console.WriteLine($"Time to load assemblies: {sw.Elapsed.TotalSeconds})"); if(this.store == null) - { - this.store = new S3ModelStore(RegionEndpoint.GetBySystemName("us-west-1")); + { + this.store = new UrlModelStore(); } + var l = new InvocationWrapper (store, CustomSpaceType.Execute); var output = await l.InvokeAsync(args); diff --git a/LayoutFunctions/Doors/dependencies/Doors.Dependencies.csproj b/LayoutFunctions/Doors/dependencies/Doors.Dependencies.csproj index 7921c7cf..2278995c 100644 --- a/LayoutFunctions/Doors/dependencies/Doors.Dependencies.csproj +++ b/LayoutFunctions/Doors/dependencies/Doors.Dependencies.csproj @@ -6,10 +6,10 @@ enable false - + - - + + diff --git a/LayoutFunctions/InteriorPartitions/dependencies/InteriorPartitions.Dependencies.csproj b/LayoutFunctions/InteriorPartitions/dependencies/InteriorPartitions.Dependencies.csproj index 46ab0539..be59e5d1 100644 --- a/LayoutFunctions/InteriorPartitions/dependencies/InteriorPartitions.Dependencies.csproj +++ b/LayoutFunctions/InteriorPartitions/dependencies/InteriorPartitions.Dependencies.csproj @@ -7,7 +7,7 @@ - - + + \ No newline at end of file diff --git a/LayoutFunctions/InteriorPartitions/dependencies/InteriorPartitionsInputs.g.cs b/LayoutFunctions/InteriorPartitions/dependencies/InteriorPartitionsInputs.g.cs index b0054114..e7e23821 100644 --- a/LayoutFunctions/InteriorPartitions/dependencies/InteriorPartitionsInputs.g.cs +++ b/LayoutFunctions/InteriorPartitions/dependencies/InteriorPartitionsInputs.g.cs @@ -24,13 +24,13 @@ namespace InteriorPartitions [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.1.21.0 (Newtonsoft.Json v13.0.0.0)")] - public class InteriorPartitionsInputs : S3Args + public class InteriorPartitionsInputs : ArgsBase { [Newtonsoft.Json.JsonConstructor] - public InteriorPartitionsInputs(string bucketName, string uploadsBucket, Dictionary modelInputKeys, string gltfKey, string elementsKey, string ifcKey): - base(bucketName, uploadsBucket, modelInputKeys, gltfKey, elementsKey, ifcKey) + public InteriorPartitionsInputs(Dictionary modelInputKeys, string gltfKey, string elementsKey, string ifcKey): + base(modelInputKeys, gltfKey, elementsKey, ifcKey) { var validator = Validator.Instance.GetFirstValidatorForType(); if(validator != null) diff --git a/LayoutFunctions/InteriorPartitions/dependencies/InteriorPartitionsOutputs.g.cs b/LayoutFunctions/InteriorPartitions/dependencies/InteriorPartitionsOutputs.g.cs index d161b0d8..4a1dad08 100644 --- a/LayoutFunctions/InteriorPartitions/dependencies/InteriorPartitionsOutputs.g.cs +++ b/LayoutFunctions/InteriorPartitions/dependencies/InteriorPartitionsOutputs.g.cs @@ -17,16 +17,13 @@ namespace InteriorPartitions public class InteriorPartitionsOutputs: SystemResults { - /// /// Construct a InteriorPartitionsOutputs with default inputs. /// This should be used for testing only. /// public InteriorPartitionsOutputs() : base() { - } - } } \ No newline at end of file diff --git a/LayoutFunctions/InteriorPartitions/hypar.json b/LayoutFunctions/InteriorPartitions/hypar.json index 712bf92f..ade06792 100644 --- a/LayoutFunctions/InteriorPartitions/hypar.json +++ b/LayoutFunctions/InteriorPartitions/hypar.json @@ -5,6 +5,10 @@ "description": "Produce all interior partition elements.", "language": "C#", "model_output": "Interior Partitions", + "input_schema": { + "type": "object", + "properties": {} + }, "model_dependencies": [ { "autohide": false, diff --git a/LayoutFunctions/InteriorPartitions/server/InteriorPartitions.Server.csproj b/LayoutFunctions/InteriorPartitions/server/InteriorPartitions.Server.csproj index 2ad25bcc..bc5b5bf0 100644 --- a/LayoutFunctions/InteriorPartitions/server/InteriorPartitions.Server.csproj +++ b/LayoutFunctions/InteriorPartitions/server/InteriorPartitions.Server.csproj @@ -1,11 +1,11 @@ - - + + - - + + diff --git a/LayoutFunctions/InteriorPartitions/server/Program.cs b/LayoutFunctions/InteriorPartitions/server/Program.cs index 77107695..a52c2af2 100644 --- a/LayoutFunctions/InteriorPartitions/server/Program.cs +++ b/LayoutFunctions/InteriorPartitions/server/Program.cs @@ -19,7 +19,7 @@ await HyparServer.StartAsync( var input = executionRequest.Args.ToObject(); var function = new InteriorPartitions.Function(); Directory.SetCurrentDirectory(Path.GetDirectoryName(typeof(InteriorPartitions.Function).Assembly.Location)!); - return await function.Handler(input, null); + return await function.Handler(input); }); } } diff --git a/LayoutFunctions/InteriorPartitions/src/Function.g.cs b/LayoutFunctions/InteriorPartitions/src/Function.g.cs index 8e5ed46d..dcf09b0a 100644 --- a/LayoutFunctions/InteriorPartitions/src/Function.g.cs +++ b/LayoutFunctions/InteriorPartitions/src/Function.g.cs @@ -2,7 +2,6 @@ // Edits to this code will be overwritten the next time you run 'hypar init'. // DO NOT EDIT THIS FILE. -using Amazon; using Amazon.Lambda.Core; using Hypar.Functions.Execution; using Hypar.Functions.Execution.AWS; @@ -19,9 +18,9 @@ public class Function { // Cache the model store for use by subsequent // executions of this lambda. - private IModelStore store; + private UrlModelStore store; - public async Task Handler(InteriorPartitionsInputs args, ILambdaContext context) + public async Task Handler(InteriorPartitionsInputs args) { // Preload dependencies (if they exist), // so that they are available during model deserialization. @@ -61,15 +60,8 @@ public async Task Handler(InteriorPartitionsInputs ar Console.WriteLine($"Time to load assemblies: {sw.Elapsed.TotalSeconds})"); if(this.store == null) - { - if (args.SignedResourceUrls == null) - { - this.store = new S3ModelStore(RegionEndpoint.GetBySystemName("us-west-1")); - } - else - { - this.store = new UrlModelStore(); - } + { + this.store = new UrlModelStore(); } diff --git a/LayoutFunctions/LayoutFunctionCommon/LayoutFunctionCommon.csproj b/LayoutFunctions/LayoutFunctionCommon/LayoutFunctionCommon.csproj index dc3f4255..78140072 100644 --- a/LayoutFunctions/LayoutFunctionCommon/LayoutFunctionCommon.csproj +++ b/LayoutFunctions/LayoutFunctionCommon/LayoutFunctionCommon.csproj @@ -17,12 +17,9 @@ - - - - + + + - \ No newline at end of file diff --git a/LayoutFunctions/LayoutFunctionCommon/LayoutFunctionCommon.sln b/LayoutFunctions/LayoutFunctionCommon/LayoutFunctionCommon.sln new file mode 100644 index 00000000..b3f5e36d --- /dev/null +++ b/LayoutFunctions/LayoutFunctionCommon/LayoutFunctionCommon.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.002.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LayoutFunctionCommon", "LayoutFunctionCommon.csproj", "{A1BEC0CD-5616-4449-8FC1-34970FE25530}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A1BEC0CD-5616-4449-8FC1-34970FE25530}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A1BEC0CD-5616-4449-8FC1-34970FE25530}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A1BEC0CD-5616-4449-8FC1-34970FE25530}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A1BEC0CD-5616-4449-8FC1-34970FE25530}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {549068C4-D22F-4B76-98AD-D28A5717D303} + EndGlobalSection +EndGlobal diff --git a/LayoutFunctions/LayoutFunctionCommon/LayoutStrategies.cs b/LayoutFunctions/LayoutFunctionCommon/LayoutStrategies.cs index d365052e..78f696fc 100644 --- a/LayoutFunctions/LayoutFunctionCommon/LayoutStrategies.cs +++ b/LayoutFunctions/LayoutFunctionCommon/LayoutStrategies.cs @@ -40,7 +40,7 @@ public static LayoutInstantiated InstantiateLayoutByFit(SpaceConfiguration confi } var baseRectangle = Polygon.Rectangle(layoutInstantiated.Config.CellBoundary.Min, layoutInstantiated.Config.CellBoundary.Max); - // This null url check is needed because a few configs got generated with instances that weren't contentelements. + // This null url check is needed because a few configs got generated with instances that weren't contentelements. // We've fixed this API-side, but there might be a few configs circa 2023-09 that need this. foreach (var contentItem in layoutInstantiated.Config.ContentItems.ToArray()) { @@ -54,6 +54,19 @@ public static LayoutInstantiated InstantiateLayoutByFit(SpaceConfiguration confi var componentDefinition = new ComponentDefinition(rules, layoutInstantiated.Config.Anchors()); layoutInstantiated.Instance = componentDefinition.Instantiate(ContentConfiguration.AnchorsFromRect(rectangle.TransformedPolygon(xform))); + + // Ensure that all content items have representations + foreach (var instance in layoutInstantiated.Instance.Instances) + { + if (instance is ElementInstance elemInstance) + { + if (elemInstance.BaseDefinition is GeometricElement geo) + { + geo.UpdateRepresentations(); + } + } + } + return layoutInstantiated; } @@ -238,7 +251,7 @@ public static HashSet StandardLayoutOnAllLevels /// Basically the same as StandardLayoutOnAllLevels, but without the actual furniture layout part — just the wall creation. - /// + /// public static void GenerateWallsForAllSpaces( IEnumerable spaceBoundaries, Dictionary inputModels, @@ -353,6 +366,7 @@ private static bool ProcessRoom( SetLevelVolume(layout.Instance, levelVolume?.Id); wallCandidateLines.AddRange(WallCandidates); + outputModel.AddElement(layout.Instance); if (countSeats != null) diff --git a/SpaceConfigurationFromModel/dependencies/CirculationSegment.g.cs b/SpaceConfigurationFromModel/dependencies/CirculationSegment.g.cs index de3dcd58..11c6596f 100644 --- a/SpaceConfigurationFromModel/dependencies/CirculationSegment.g.cs +++ b/SpaceConfigurationFromModel/dependencies/CirculationSegment.g.cs @@ -19,7 +19,7 @@ namespace Elements { - #pragma warning disable // Disable all warnings +#pragma warning disable // Disable all warnings /// Represents a section of a circulation network, such as a corridor. [JsonConverter(typeof(Elements.Serialization.JSON.JsonInheritanceConverter), "discriminator")] @@ -31,18 +31,18 @@ public CirculationSegment(ThickenedPolyline @geometry, Profile @profile, double : base(profile, thickness, level, transform, material, representation, isElementDefinition, id, name) { this.Geometry = @geometry; - } - + } + // Empty constructor public CirculationSegment() : base() { } - + /// The geometry of this circulation segment [JsonProperty("Geometry", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] public ThickenedPolyline Geometry { get; set; } - - + + } } \ No newline at end of file diff --git a/SpaceConfigurationFromModel/dependencies/Floor.g.cs b/SpaceConfigurationFromModel/dependencies/Floor.g.cs new file mode 100644 index 00000000..a35b1974 --- /dev/null +++ b/SpaceConfigurationFromModel/dependencies/Floor.g.cs @@ -0,0 +1,59 @@ +//---------------------- +// +// Generated using the NJsonSchema v10.1.21.0 (Newtonsoft.Json v13.0.0.0) (http://NJsonSchema.org) +// +//---------------------- +using Elements; +using Elements.GeoJSON; +using Elements.Geometry; +using Elements.Geometry.Solids; +using Elements.Spatial; +using Elements.Validators; +using Elements.Serialization.JSON; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using Line = Elements.Geometry.Line; +using Polygon = Elements.Geometry.Polygon; + +namespace Elements +{ + #pragma warning disable // Disable all warnings + + /// Represents an abstract building floor + [JsonConverter(typeof(Elements.Serialization.JSON.JsonInheritanceConverter), "discriminator")] + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.1.21.0 (Newtonsoft.Json v13.0.0.0)")] + public partial class Floor : GeometricElement + { + [JsonConstructor] + public Floor(Profile @profile, double @thickness, System.Guid? @level, Transform @transform = null, Material @material = null, Representation @representation = null, bool @isElementDefinition = false, System.Guid @id = default, string @name = null) + : base(transform, material, representation, isElementDefinition, id, name) + { + this.Profile = @profile; + this.Thickness = @thickness; + this.Level = @level; + } + + + // Empty constructor + public Floor() + : base() + { + } + + /// The untransformed profile of the floor. + [JsonProperty("Profile", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public Profile Profile { get; set; } + + /// The thickness of the floor. + [JsonProperty("Thickness", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public double Thickness { get; set; } + + /// The level this floor belongs to + [JsonProperty("Level", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Guid? Level { get; set; } + + + } +} \ No newline at end of file diff --git a/SpaceConfigurationFromModel/dependencies/LevelElements.g.cs b/SpaceConfigurationFromModel/dependencies/LevelElements.g.cs index dd221b85..3b715315 100644 --- a/SpaceConfigurationFromModel/dependencies/LevelElements.g.cs +++ b/SpaceConfigurationFromModel/dependencies/LevelElements.g.cs @@ -34,6 +34,7 @@ public LevelElements(IList @elements, System.Guid @level, System.Guid @ this.Level = @level; } + // Empty constructor public LevelElements() : base() diff --git a/SpaceConfigurationFromModel/dependencies/LevelVolume.g.cs b/SpaceConfigurationFromModel/dependencies/LevelVolume.g.cs index d3164fe8..be2fb359 100644 --- a/SpaceConfigurationFromModel/dependencies/LevelVolume.g.cs +++ b/SpaceConfigurationFromModel/dependencies/LevelVolume.g.cs @@ -27,7 +27,7 @@ namespace Elements public partial class LevelVolume : GeometricElement { [JsonConstructor] - public LevelVolume(Profile @profile, double @height, double @area, string @buildingName, System.Guid? @level, System.Guid? @mass, System.Guid? @planView, Transform @transform = null, Material @material = null, Representation @representation = null, bool @isElementDefinition = false, System.Guid @id = default, string @name = null) + public LevelVolume(Profile @profile, double @height, double @area, string @buildingName, System.Guid? @level, System.Guid? @mass, System.Guid? @planView, IList @profiles, Transform @transform = null, Material @material = null, Representation @representation = null, bool @isElementDefinition = false, System.Guid @id = default, string @name = null) : base(transform, material, representation, isElementDefinition, id, name) { this.Profile = @profile; @@ -37,8 +37,10 @@ public LevelVolume(Profile @profile, double @height, double @area, string @build this.Level = @level; this.Mass = @mass; this.PlanView = @planView; + this.Profiles = @profiles; } + // Empty constructor public LevelVolume() : base() @@ -73,6 +75,10 @@ public LevelVolume() [JsonProperty("Plan View", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] public System.Guid? PlanView { get; set; } + /// Multiple profiles used for a collection of volumes + [JsonProperty("Profiles", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public IList Profiles { get; set; } + } } \ No newline at end of file diff --git a/SpaceConfigurationFromModel/dependencies/ServiceCore.g.cs b/SpaceConfigurationFromModel/dependencies/ServiceCore.g.cs index 4e67c4b2..4f25de8f 100644 --- a/SpaceConfigurationFromModel/dependencies/ServiceCore.g.cs +++ b/SpaceConfigurationFromModel/dependencies/ServiceCore.g.cs @@ -36,6 +36,7 @@ public ServiceCore(Profile @profile, double @elevation, double @height, Vector3 this.Centroid = @centroid; } + // Empty constructor public ServiceCore() : base() diff --git a/SpaceConfigurationFromModel/dependencies/SpaceBoundary.g.cs b/SpaceConfigurationFromModel/dependencies/SpaceBoundary.g.cs index 38a59481..8ce5974d 100644 --- a/SpaceConfigurationFromModel/dependencies/SpaceBoundary.g.cs +++ b/SpaceConfigurationFromModel/dependencies/SpaceBoundary.g.cs @@ -27,7 +27,7 @@ namespace Elements public partial class SpaceBoundary : GeometricElement { [JsonConstructor] - public SpaceBoundary(Profile @boundary, IList @cells, double @area, double? @length, double? @depth, double @height, string @programGroup, string @programType, System.Guid? @level, System.Guid? @levelLayout, string @hyparSpaceType, Transform @transform = null, Material @material = null, Representation @representation = null, bool @isElementDefinition = false, System.Guid @id = default, string @name = null) + public SpaceBoundary(Profile @boundary, IList @cells, double @area, double? @length, double? @depth, double @height, string @programGroup, string @programType, System.Guid? @programRequirement, System.Guid? @level, System.Guid? @levelLayout, string @hyparSpaceType, string @defaultWallType, Transform @transform = null, Material @material = null, Representation @representation = null, bool @isElementDefinition = false, System.Guid @id = default, string @name = null) : base(transform, material, representation, isElementDefinition, id, name) { this.Boundary = @boundary; @@ -38,11 +38,14 @@ public SpaceBoundary(Profile @boundary, IList @cells, double @area, dou this.Height = @height; this.ProgramGroup = @programGroup; this.ProgramType = @programType; + this.ProgramRequirement = @programRequirement; this.Level = @level; this.LevelLayout = @levelLayout; this.HyparSpaceType = @hyparSpaceType; + this.DefaultWallType = @defaultWallType; } + // Empty constructor public SpaceBoundary() : base() @@ -78,9 +81,12 @@ public SpaceBoundary() public string ProgramGroup { get; set; } /// The name of the program type assigned to this space (like "Open Office" or "Meeting Room") - [JsonProperty("Program Type", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [JsonProperty("Program Type", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] public string ProgramType { get; set; } + [JsonProperty("Program Requirement", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Guid? ProgramRequirement { get; set; } + [JsonProperty("Level", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] public System.Guid? Level { get; set; } @@ -92,6 +98,10 @@ public SpaceBoundary() [JsonProperty("Hypar Space Type", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] public string HyparSpaceType { get; set; } + /// What wall type should generally be created for this space type? This may get overridden later on for a specific wall. + [JsonProperty("Default Wall Type", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string DefaultWallType { get; set; } + } } \ No newline at end of file diff --git a/SpaceConfigurationFromModel/dependencies/SpaceConfigurationFromModel.Dependencies.csproj b/SpaceConfigurationFromModel/dependencies/SpaceConfigurationFromModel.Dependencies.csproj index 3d763458..eae284d8 100644 --- a/SpaceConfigurationFromModel/dependencies/SpaceConfigurationFromModel.Dependencies.csproj +++ b/SpaceConfigurationFromModel/dependencies/SpaceConfigurationFromModel.Dependencies.csproj @@ -7,9 +7,9 @@ - - - + + + diff --git a/SpaceConfigurationFromModel/dependencies/SpaceConfigurationFromModelInputs.g.cs b/SpaceConfigurationFromModel/dependencies/SpaceConfigurationFromModelInputs.g.cs index d9d98faa..f4fc7b73 100644 --- a/SpaceConfigurationFromModel/dependencies/SpaceConfigurationFromModelInputs.g.cs +++ b/SpaceConfigurationFromModel/dependencies/SpaceConfigurationFromModelInputs.g.cs @@ -24,13 +24,13 @@ namespace SpaceConfigurationFromModel [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "10.1.21.0 (Newtonsoft.Json v13.0.0.0)")] - public class SpaceConfigurationFromModelInputs : S3Args + public class SpaceConfigurationFromModelInputs : ArgsBase { [Newtonsoft.Json.JsonConstructor] - public SpaceConfigurationFromModelInputs(string @program, InputData @modelFile, string bucketName, string uploadsBucket, Dictionary modelInputKeys, string gltfKey, string elementsKey, string ifcKey): - base(bucketName, uploadsBucket, modelInputKeys, gltfKey, elementsKey, ifcKey) + public SpaceConfigurationFromModelInputs(string @program, InputData @modelFile, Dictionary modelInputKeys, string gltfKey, string elementsKey, string ifcKey): + base(modelInputKeys, gltfKey, elementsKey, ifcKey) { var validator = Validator.Instance.GetFirstValidatorForType(); if(validator != null) diff --git a/SpaceConfigurationFromModel/dependencies/SpaceConfigurationFromModelOutputs.g.cs b/SpaceConfigurationFromModel/dependencies/SpaceConfigurationFromModelOutputs.g.cs index adc9e1ee..a3c61655 100644 --- a/SpaceConfigurationFromModel/dependencies/SpaceConfigurationFromModelOutputs.g.cs +++ b/SpaceConfigurationFromModel/dependencies/SpaceConfigurationFromModelOutputs.g.cs @@ -17,16 +17,13 @@ namespace SpaceConfigurationFromModel public class SpaceConfigurationFromModelOutputs: SystemResults { - /// /// Construct a SpaceConfigurationFromModelOutputs with default inputs. /// This should be used for testing only. /// public SpaceConfigurationFromModelOutputs() : base() { - } - } } \ No newline at end of file diff --git a/SpaceConfigurationFromModel/dependencies/ThickenedPolyline.g.cs b/SpaceConfigurationFromModel/dependencies/ThickenedPolyline.g.cs index 01d3fec4..cc1ed83c 100644 --- a/SpaceConfigurationFromModel/dependencies/ThickenedPolyline.g.cs +++ b/SpaceConfigurationFromModel/dependencies/ThickenedPolyline.g.cs @@ -36,6 +36,7 @@ public ThickenedPolyline(Polyline @polyline, double? @width, bool? @flip, double this.RightWidth = @rightWidth; } + // Empty constructor public ThickenedPolyline() { diff --git a/SpaceConfigurationFromModel/src/Function.g.cs b/SpaceConfigurationFromModel/src/Function.g.cs index 1ecde948..08e03fee 100644 --- a/SpaceConfigurationFromModel/src/Function.g.cs +++ b/SpaceConfigurationFromModel/src/Function.g.cs @@ -2,7 +2,6 @@ // Edits to this code will be overwritten the next time you run 'hypar init'. // DO NOT EDIT THIS FILE. -using Amazon; using Amazon.Lambda.Core; using Hypar.Functions.Execution; using Hypar.Functions.Execution.AWS; @@ -19,9 +18,9 @@ public class Function { // Cache the model store for use by subsequent // executions of this lambda. - private IModelStore store; + private UrlModelStore store; - public async Task Handler(SpaceConfigurationFromModelInputs args, ILambdaContext context) + public async Task Handler(SpaceConfigurationFromModelInputs args) { // Preload dependencies (if they exist), // so that they are available during model deserialization. @@ -61,16 +60,10 @@ public async Task Handler(SpaceConfiguration Console.WriteLine($"Time to load assemblies: {sw.Elapsed.TotalSeconds})"); if(this.store == null) - { - if (args.SignedResourceUrls == null) - { - this.store = new S3ModelStore(RegionEndpoint.GetBySystemName("us-west-1")); - } - else - { - this.store = new UrlModelStore(); - } + { + this.store = new UrlModelStore(); } + var l = new InvocationWrapper (store, SpaceConfigurationFromModel.Execute); var output = await l.InvokeAsync(args); diff --git a/ZonePlanningFunctions/Function-SpacePlanning b/ZonePlanningFunctions/Function-SpacePlanning index 7944cb12..22954d4c 160000 --- a/ZonePlanningFunctions/Function-SpacePlanning +++ b/ZonePlanningFunctions/Function-SpacePlanning @@ -1 +1 @@ -Subproject commit 7944cb1285c3052a82f3b81975bd5fc9a0a828ed +Subproject commit 22954d4c4a355149e1aefe25ea9ea2a9b9193aec From d5dfeed2f4034bdedff06a0b5a589325b700edcb Mon Sep 17 00:00:00 2001 From: Anthonie Kramer Date: Tue, 7 Nov 2023 09:18:51 -0800 Subject: [PATCH 2/2] update elements for content representations --- .../LayoutFunctionCommon/LayoutFunctionCommon.csproj | 4 ++-- .../LayoutFunctionCommon/LayoutStrategies.cs | 12 ------------ ZonePlanningFunctions/Function-SpacePlanning | 2 +- 3 files changed, 3 insertions(+), 15 deletions(-) diff --git a/LayoutFunctions/LayoutFunctionCommon/LayoutFunctionCommon.csproj b/LayoutFunctions/LayoutFunctionCommon/LayoutFunctionCommon.csproj index 78140072..b3d15506 100644 --- a/LayoutFunctions/LayoutFunctionCommon/LayoutFunctionCommon.csproj +++ b/LayoutFunctions/LayoutFunctionCommon/LayoutFunctionCommon.csproj @@ -17,9 +17,9 @@ - + - + \ No newline at end of file diff --git a/LayoutFunctions/LayoutFunctionCommon/LayoutStrategies.cs b/LayoutFunctions/LayoutFunctionCommon/LayoutStrategies.cs index 78f696fc..1883daa3 100644 --- a/LayoutFunctions/LayoutFunctionCommon/LayoutStrategies.cs +++ b/LayoutFunctions/LayoutFunctionCommon/LayoutStrategies.cs @@ -55,18 +55,6 @@ public static LayoutInstantiated InstantiateLayoutByFit(SpaceConfiguration confi var componentDefinition = new ComponentDefinition(rules, layoutInstantiated.Config.Anchors()); layoutInstantiated.Instance = componentDefinition.Instantiate(ContentConfiguration.AnchorsFromRect(rectangle.TransformedPolygon(xform))); - // Ensure that all content items have representations - foreach (var instance in layoutInstantiated.Instance.Instances) - { - if (instance is ElementInstance elemInstance) - { - if (elemInstance.BaseDefinition is GeometricElement geo) - { - geo.UpdateRepresentations(); - } - } - } - return layoutInstantiated; } diff --git a/ZonePlanningFunctions/Function-SpacePlanning b/ZonePlanningFunctions/Function-SpacePlanning index 22954d4c..df6f481e 160000 --- a/ZonePlanningFunctions/Function-SpacePlanning +++ b/ZonePlanningFunctions/Function-SpacePlanning @@ -1 +1 @@ -Subproject commit 22954d4c4a355149e1aefe25ea9ea2a9b9193aec +Subproject commit df6f481e169e3a52f728ad458516594177f4a2ff