diff --git a/LayoutFunctions/ClassroomLayout/src/ClassroomLayout.cs b/LayoutFunctions/ClassroomLayout/src/ClassroomLayout.cs index 041d737a..335350d1 100644 --- a/LayoutFunctions/ClassroomLayout/src/ClassroomLayout.cs +++ b/LayoutFunctions/ClassroomLayout/src/ClassroomLayout.cs @@ -92,6 +92,7 @@ public static ClassroomLayoutOutputs Execute(Dictionary inputMode { var componentInstance = InstantiateLayout(configs, width, depth, rect, room.Transform); LayoutStrategies.SetLevelVolume(componentInstance, levelVolume?.Id); + LayoutStrategies.SetParentSpace(componentInstance, room.Id); output.Model.AddElement(componentInstance); } else if (trimmedGeo.Count() > 0) @@ -102,6 +103,7 @@ public static ClassroomLayoutOutputs Execute(Dictionary inputMode var componentInstance = InstantiateLayout(configs, width, depth, cinchedPoly, room.Transform); LayoutStrategies.SetLevelVolume(componentInstance, levelVolume?.Id); + LayoutStrategies.SetParentSpace(componentInstance, room.Id); output.Model.AddElement(componentInstance); } try @@ -135,6 +137,7 @@ public static ClassroomLayoutOutputs Execute(Dictionary inputMode "Desk"); LayoutStrategies.SetLevelVolume(instance, levelVolume?.Id); + LayoutStrategies.SetParentSpace(instance, room.Id); output.Model.AddElement(instance); } } diff --git a/LayoutFunctions/DataHall/src/DataHallLayout.cs b/LayoutFunctions/DataHall/src/DataHallLayout.cs index 83de6269..73b9bf1d 100644 --- a/LayoutFunctions/DataHall/src/DataHallLayout.cs +++ b/LayoutFunctions/DataHall/src/DataHallLayout.cs @@ -99,7 +99,7 @@ public static DataHallLayoutOutputs Execute(Dictionary inputModel var floorGrid = new Grid2d(profile.Perimeter, alignment); floorGrid.U.DivideByFixedLength(0.6096); floorGrid.V.DivideByFixedLength(0.6096); - model.AddElement(ToModelLines(floorGrid, room.Transform)); + model.AddElement(ToModelLines(floorGrid, room.Transform, room.Id)); double rackAngle = 0; if (input.SwapColdHotPattern) rackAngle = 180; @@ -115,22 +115,28 @@ public static DataHallLayoutOutputs Execute(Dictionary inputModel } if (cell.Type == "Hot Aisle") { - model.AddElement(new Panel(cellRect, BuiltInMaterials.XAxis, room.Transform)); + var panel = new Panel(cellRect, BuiltInMaterials.XAxis, room.Transform); + panel.AdditionalProperties["Space"] = room.Id; + model.AddElement(panel); } else if (cell.Type == "Cold Aisle") { - model.AddElement(new Panel(cellRect, BuiltInMaterials.ZAxis, room.Transform)); + var panel = new Panel(cellRect, BuiltInMaterials.ZAxis, room.Transform); + panel.AdditionalProperties["Space"] = room.Id; + model.AddElement(panel); } else if (cell.Type == "Forward Rack" && cellRect.Area().ApproximatelyEquals(width * depth, 0.01) && !intersectsColumn) { var centroid = cellRect.Centroid(); var rackInstance = dataRack.CreateInstance(alignment.Concatenated(new Transform(new Vector3(), rackAngle - 180)).Concatenated(new Transform(centroid)).Concatenated(room.Transform), "Rack"); + rackInstance.AdditionalProperties["Space"] = room.Id; model.AddElement(rackInstance); } else if (cell.Type == "Backward Rack" && cellRect.Area().ApproximatelyEquals(width * depth, 0.01) && !intersectsColumn) { var centroid = cellRect.Centroid(); var rackInstance = dataRack.CreateInstance(alignment.Concatenated(new Transform(new Vector3(), rackAngle)).Concatenated(new Transform(centroid)).Concatenated(room.Transform), "Rack"); + rackInstance.AdditionalProperties["Space"] = room.Id; model.AddElement(rackInstance); } } @@ -170,14 +176,14 @@ private static bool CheckIntersectsWithColumns(Polygon? cellRect, List c return columns.Any(column => cellRect.Intersects(column.Profile.Perimeter.TransformedPolygon(new Transform(column.Location)))); } - private static ModelLines ToModelLines(Grid2d grid, Transform transform) + private static ModelLines ToModelLines(Grid2d grid, Transform transform, System.Guid id) { var boundary = grid.GetTrimmedCellGeometry(); var uLines = grid.GetCellSeparators(GridDirection.U, true); var vLines = grid.GetCellSeparators(GridDirection.V, true); var curves = boundary.Concat(uLines).Concat(vLines).OfType(); - ModelLines ml = new ModelLines(transform: transform); + var ml = new ModelLines(transform: transform); foreach (var b in boundary.Concat(curves)) { var parameters = b.GetSubdivisionParameters(); @@ -188,6 +194,7 @@ private static ModelLines ToModelLines(Grid2d grid, Transform transform) } } ml.SetSelectable(false); + ml.AdditionalProperties["Space"] = id; return ml; } } diff --git a/LayoutFunctions/LayoutFunctionCommon/LayoutFunctionCommon.csproj b/LayoutFunctions/LayoutFunctionCommon/LayoutFunctionCommon.csproj index 03445fa3..bd632e45 100644 --- a/LayoutFunctions/LayoutFunctionCommon/LayoutFunctionCommon.csproj +++ b/LayoutFunctions/LayoutFunctionCommon/LayoutFunctionCommon.csproj @@ -17,13 +17,11 @@ - - + - + \ No newline at end of file diff --git a/LayoutFunctions/LayoutFunctionCommon/LayoutStrategies.cs b/LayoutFunctions/LayoutFunctionCommon/LayoutStrategies.cs index e7caeb46..bbd9f3f9 100644 --- a/LayoutFunctions/LayoutFunctionCommon/LayoutStrategies.cs +++ b/LayoutFunctions/LayoutFunctionCommon/LayoutStrategies.cs @@ -865,5 +865,13 @@ public static void SetParentSpace(ComponentInstance componentInstance, Guid? par } } } + + public static void SetParentSpace(ElementInstance elementInstance, Guid parentSpaceId) + { + if (elementInstance != null) + { + elementInstance.AdditionalProperties["Space"] = parentSpaceId; + } + } } } \ No newline at end of file diff --git a/LayoutFunctions/OpenOfficeLayout/Model.dib b/LayoutFunctions/OpenOfficeLayout/Model.dib new file mode 100644 index 00000000..0478129d --- /dev/null +++ b/LayoutFunctions/OpenOfficeLayout/Model.dib @@ -0,0 +1,12 @@ +#!meta + +{"kernelInfo":{"defaultKernelName":"csharp","items":[{"aliases":[],"name":"csharp"}]}} + +#!csharp + +#r "nuget: Hypar.Elements, *-*" + +#!csharp + +var modelPath = "/Users/andrewheumann/Downloads/model 45.json"; +Model.FromJson(File) diff --git a/LayoutFunctions/OpenOfficeLayout/src/OpenOfficeLayout.cs b/LayoutFunctions/OpenOfficeLayout/src/OpenOfficeLayout.cs index 548c3aed..654b57a1 100644 --- a/LayoutFunctions/OpenOfficeLayout/src/OpenOfficeLayout.cs +++ b/LayoutFunctions/OpenOfficeLayout/src/OpenOfficeLayout.cs @@ -182,6 +182,7 @@ public static OpenOfficeLayoutOutputs Execute(Dictionary inputMod foreach (var desk in desks) { LayoutStrategies.SetLevelVolume(desk as ElementInstance, levelVolume?.Id); + LayoutStrategies.SetParentSpace(desk as ElementInstance, ob.Id); } output.Model.AddElements(desks); diff --git a/LayoutFunctions/OpenOfficeLayout/test/Generated/OpenOfficeLayoutTest/model_dependencies/Space Planning Zones/json/63c2e0df-0d5a-4fd5-a18e-cd7aec794356_998eb115-7d70-49df-9fbe-fbc96a91ae3d_elements.zip b/LayoutFunctions/OpenOfficeLayout/test/Generated/OpenOfficeLayoutTest/model_dependencies/Space Planning Zones/json/63c2e0df-0d5a-4fd5-a18e-cd7aec794356_998eb115-7d70-49df-9fbe-fbc96a91ae3d_elements.zip new file mode 100644 index 00000000..4da01807 --- /dev/null +++ b/LayoutFunctions/OpenOfficeLayout/test/Generated/OpenOfficeLayoutTest/model_dependencies/Space Planning Zones/json/63c2e0df-0d5a-4fd5-a18e-cd7aec794356_998eb115-7d70-49df-9fbe-fbc96a91ae3d_elements.zip @@ -0,0 +1,2 @@ + +AccessDeniedAccess DeniedEKN5BGA37XK4SY88QVRfH3TrGZQKXsMveW3bcXf2M6ghPoasNYLw2g7c0lGb3OSFD7Lf4OOK6sPbkgZLd10nxN6Fjhc= \ No newline at end of file diff --git a/LayoutFunctions/OpenOfficeLayout/test/Generated/OpenOfficeLayoutTest/model_dependencies/Space Planning Zones/json/ddbadd4c-8ebc-4911-af73-5f52ba7a5382_998eb115-7d70-49df-9fbe-fbc96a91ae3d_elements.zip b/LayoutFunctions/OpenOfficeLayout/test/Generated/OpenOfficeLayoutTest/model_dependencies/Space Planning Zones/json/ddbadd4c-8ebc-4911-af73-5f52ba7a5382_998eb115-7d70-49df-9fbe-fbc96a91ae3d_elements.zip new file mode 100644 index 00000000..8a9d1c23 --- /dev/null +++ b/LayoutFunctions/OpenOfficeLayout/test/Generated/OpenOfficeLayoutTest/model_dependencies/Space Planning Zones/json/ddbadd4c-8ebc-4911-af73-5f52ba7a5382_998eb115-7d70-49df-9fbe-fbc96a91ae3d_elements.zip @@ -0,0 +1,2 @@ + +AccessDeniedAccess DeniedCMH857YEYZ5WRC90hOtw+YejhNRIAP2YyzyqSnUjP3wPHraUapiGGnH8Mwq0k6kSQLGiP2KlSyrql96/d6PcnrsdF0o= \ No newline at end of file diff --git a/LayoutFunctions/PhoneBoothLayout/src/PhoneBoothLayout.cs b/LayoutFunctions/PhoneBoothLayout/src/PhoneBoothLayout.cs index c352ec06..4ff2d0d8 100644 --- a/LayoutFunctions/PhoneBoothLayout/src/PhoneBoothLayout.cs +++ b/LayoutFunctions/PhoneBoothLayout/src/PhoneBoothLayout.cs @@ -98,6 +98,7 @@ public static PhoneBoothLayoutOutputs Execute(Dictionary inputMod if (layout != null) { LayoutStrategies.SetLevelVolume(layout, levelVolume?.Id); + LayoutStrategies.SetParentSpace(layout, room.Id); output.Model.AddElement(layout); seatsCount++; } @@ -112,6 +113,7 @@ public static PhoneBoothLayoutOutputs Execute(Dictionary inputMod if (layout != null) { LayoutStrategies.SetLevelVolume(layout, levelVolume?.Id); + LayoutStrategies.SetParentSpace(layout, room.Id); output.Model.AddElement(layout); seatsCount++; } diff --git a/LayoutFunctions/PrivateOfficeLayout/src/PrivateOfficeLayout.cs b/LayoutFunctions/PrivateOfficeLayout/src/PrivateOfficeLayout.cs index 44fc2dfa..e797290f 100644 --- a/LayoutFunctions/PrivateOfficeLayout/src/PrivateOfficeLayout.cs +++ b/LayoutFunctions/PrivateOfficeLayout/src/PrivateOfficeLayout.cs @@ -120,6 +120,7 @@ public static PrivateOfficeLayoutOutputs Execute(Dictionary input { var layout = InstantiateLayout(configs, width, depth, rect, levelVolume?.Transform ?? new Transform(), out var seats); LayoutStrategies.SetLevelVolume(layout, levelVolume?.Id); + LayoutStrategies.SetParentSpace(layout, room.Id); output.Model.AddElement(layout); privateOfficeCount++; seatsCount += seats; @@ -134,6 +135,7 @@ public static PrivateOfficeLayoutOutputs Execute(Dictionary input { var layout = InstantiateLayout(configs, width, depth, cinchedPoly, levelVolume?.Transform ?? new Transform(), out var seats); LayoutStrategies.SetLevelVolume(layout, levelVolume?.Id); + LayoutStrategies.SetParentSpace(layout, room.Id); output.Model.AddElement(layout); privateOfficeCount++; seatsCount += seats; diff --git a/LayoutFunctions/ReceptionLayout/src/ReceptionLayout.cs b/LayoutFunctions/ReceptionLayout/src/ReceptionLayout.cs index ca4d302b..c950126f 100644 --- a/LayoutFunctions/ReceptionLayout/src/ReceptionLayout.cs +++ b/LayoutFunctions/ReceptionLayout/src/ReceptionLayout.cs @@ -93,6 +93,7 @@ public static ReceptionLayoutOutputs Execute(Dictionary inputMode { var layout = InstantiateLayout(configs, width, depth, rect, room.Transform, out var seats); LayoutStrategies.SetLevelVolume(layout, levelVolume?.Id); + LayoutStrategies.SetParentSpace(layout, room.Id); output.Model.AddElement(layout); seatsCount += seats; } @@ -104,6 +105,7 @@ public static ReceptionLayoutOutputs Execute(Dictionary inputMode // output.Model.AddElement(new ModelCurve(cinchedPoly, BuiltInMaterials.ZAxis, levelVolume.Transform)); var layout = InstantiateLayout(configs, width, depth, cinchedPoly, room.Transform, out var seats); LayoutStrategies.SetLevelVolume(layout, levelVolume?.Id); + LayoutStrategies.SetParentSpace(layout, room.Id); output.Model.AddElement(layout); Console.WriteLine("🤷‍♂️ funny shape!!!"); seatsCount += seats;