Skip to content

Commit

Permalink
group by thickness and apply
Browse files Browse the repository at this point in the history
  • Loading branch information
jamesbradleym committed Jul 25, 2024
1 parent c79b5f7 commit 088c0f6
Showing 1 changed file with 22 additions and 17 deletions.
39 changes: 22 additions & 17 deletions LayoutFunctions/WallsLOD200/src/WallsLOD200.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,26 +29,31 @@ public static WallsLOD200Outputs Execute(Dictionary<string, Model> inputModels,

walls = SplitWallsByLevels(walls, levels, random);

var wallGroups = walls.GroupBy(w => w.AdditionalProperties["Level"] ?? w.Transform.Origin.Z);

foreach (var group in wallGroups)
var wallThicknessGroups = walls.GroupBy(w => w.Thickness);
foreach (var thicknessGroup in wallThicknessGroups)
{
var level = levels.FirstOrDefault(l => l.Id.ToString() == group.Key.ToString()) ?? new Level(0, 3, null);
var lines = UnifyLines(group.ToList().Select(wall =>
var thickness = thicknessGroup.Key;
var wallGroups = thicknessGroup.GroupBy(w => w.AdditionalProperties["Level"] ?? w.Transform.Origin.Z);

foreach (var group in wallGroups)
{
var transform = new Transform(wall.Transform);
transform.Move(0, 0, -level.Elevation); // To keep the level.Elevation logic below, negate the wall's Z-position.
return wall.CenterLine.TransformedLine(transform);
}).ToList());
var roundedZLines = lines.Select(l =>
var level = levels.FirstOrDefault(l => l.Id.ToString() == group.Key.ToString()) ?? new Level(0, 3, null);
var lines = UnifyLines(group.ToList().Select(wall =>
{
var roundedStart = new Vector3(l.Start.X, l.Start.Y, Math.Round(l.Start.Z, 5));
var roundedEnd = new Vector3(l.End.X, l.End.Y, Math.Round(l.End.Z, 5));
return new Line(roundedStart, roundedEnd);
}
);
var newWalls = roundedZLines.Select(mc => new StandardWall(mc, 0.13335, level.Height ?? 3, random.NextMaterial(), new Transform().Moved(0, 0, level.Elevation)));
output.Model.AddElements(newWalls);
var transform = new Transform(wall.Transform);
transform.Move(0, 0, -level.Elevation); // To keep the level.Elevation logic below, negate the wall's Z-position.
return wall.CenterLine.TransformedLine(transform);
}).ToList());
var roundedZLines = lines.Select(l =>
{
var roundedStart = new Vector3(l.Start.X, l.Start.Y, Math.Round(l.Start.Z, 5));
var roundedEnd = new Vector3(l.End.X, l.End.Y, Math.Round(l.End.Z, 5));
return new Line(roundedStart, roundedEnd);
}
);
var newWalls = roundedZLines.Select(mc => new StandardWall(mc, thickness, level.Height ?? 3, random.NextMaterial(), new Transform().Moved(0, 0, level.Elevation)));
output.Model.AddElements(newWalls);
}
}
}

Expand Down

0 comments on commit 088c0f6

Please sign in to comment.