Wall/Part panelization minimizing waste

Im looking for some guidance on what steps to take to modify the following script by @JacobSmall.

It works well for horizontal (floor/roof) planes, but I want to split the insulation layer of a precast wall into 4’x8’ sheets. I want to eliminate the need for the sloped glazing step as I do not want to generate any new geometry.

What would I need to do to have the script generate curves on the surface as per the calculation (minimize waste/maximize full sheets), then draw reference planes at those curves, then divide the parts by reference plane using teh Parts.Divide Parts node? Or can i use Geometry.Split to skip the reference plane step?

I’m fairly new to Dynamo, but hopefully can figure something out if someone can point me in the right direction!

Hi Chris, welcome :wave:

Please read How to get help on the Dynamo forums

In this workflow, we are using the graph to create a sloped glazing element in Revit. This enables material takeoff and better downstream use of the results

I would look at Curtain Walls to do the similar role for a vertical element as the sloped glazing

The GD component will give you the optimised result - then open the result in Dynamo which you could add an additional set of nodes with an ‘execution gate’ to modify the Revit file to the selected result

Note: I would think that insulation panels are installed in a staggered pattern to improve strength / reduce cracking

Thanks Mike, I will look into Curtain Walls as an option. I’ll need to test this outside of dynamo to ensure it fits into the larger workflow first. I’m thinking working with the native Part (insulation wythe) will still be preferred but maybe there is a way to overlay the curtain wall grid onto the host surface and use it as a reference to divide the Part

Curious what the larger workflow looks like for you… often it is best to optimize the paneling earlier than when real floors come into play as the direction of the structure will impact the result a good bit. @Dieter_Vermeulen and had a section of our AU session last year dedicated to this concept but incorporating the framing as well (here: Achieve Sustainable Development Goals with Generative Design in AEC | Autodesk University). Big benefit there is you were optimizing the material use of the framing and the panels concurrently with one workflow.

The ‘paneling a surface’ workflow with a predefined primary axis also works, but is less impactful. Instead of doing both panel directions at once I recommend mastering one axis at a time. You also want to keep in mind that the realities of manufacturing mean that the panelization is usually best optimized by the people building the panels themselves. Those very rules are what drive the effectiveness for any of these workflows, and experience has taught me that until you have identified those rules the exact methodology matters a lot less.

If you are after a ‘partial T&G panel overlap’ you actually have two optimizations to run. Where you start your primary axis, and the sequential offset of each panel (as you have between 1/3 of a panel length of play in each row). That means a LOT to optimize in one go - more than I would recommend. Start by optimizing the primary aspect and then you can deal with each row.

If you’re optimizing something else, list all of the rules out as until that is defined clearly we can’t give good guidance.

Thanks Jacob, I appreciate the comments. I’ve attached a few screenshots for clarification.

We’re designing and detailing insulated precast concrete wall panels. We utilize a few 3rd party add-ins in Revit to help facilitate this, but they all come with their own limitations specific to the way we and our manufacturers operate.

Our main manufacturer is looking to upgrade their facility to include CNC cutting of the insulation pieces that are cast into the concrete. I’ll spare the details and cut to the relevant parts. Their current process is manual arrangement shop-side, with manual cutting and modifying of the sheets. Transitioning to a CNC/automation workflow would mean this, at least in part, would need to come from us, the design/detailer/modellers.

As you can see in the screenshot, the precast wall panels themselves have very few constraints, other than a maximum width of 15’ and height of (currently) 40’. There are very few constraints on the profile, number and size of openings, etc.

The standard insulation sheet is a blank 4’ x 8’. They are butted together. We need to cut slots (via this CNC process) in it to allow for some structural connections to facilitate the composite panel design. These are typically in a basic array as shown in the screenshot. Our third party tools can effectively place these elements.

The main problem I’m looking to solve is how to automatically divide the area of the panel into as effective a layout of 4’x8’ sheets as possible.

Goals:
Primary goal #1 is to automate the division, forgoing all the constraints, this would already eliminate a ton of manual work. Given this, to add on and eliminate even more manual work the following constraints could be considered:
-minimize # of sheets
-consider waste (efficiency would take precedence over waste)
-no piece can be less than 12" in one dimension (minimum 6" edge distance for the connectors), so consider openings and the perimeter profile of the wall
-sheets can be either horizontal or vertical

There may be more rules once I get into it, but this is a starting point for sure.


Ok so you have two separate but equally meaningful problems ahead of you.

The first problem is automating the division is a separate task. There are some good nodes already for dividing parts - look into those first. Draw up the divisions on the base part as model lines, and use those to divide the parts. It’s been ages, but I recall that you have to divide the parts sequentially, so likely you will want to do primary divisions first, so group the curves by those which run the ‘full length’ though the original surface (intersect the perimeter of the surface, aligned by axis).

The second and harder problem is optimizing the divisions. As the dimensions of any sheet aren’t ‘locked’ into any one dimension, you have an wicked problem. Instead of an easy layout you now have to deal with defining the logic for how the splits would be defined. Look into creating isocurves at the corners of openings first, then further subdividing the remaining pieces into 2x2 or 4x4 surfaces, and then finally unioning the adjoining faces until the maximum width or length distances are met or would be exceeded. You’ll want to use the topology nodes for this. The hard part will be deciding how to best decipher which panels to merge first, and GD can do so via permutations the list so that you decide which face to start with. Python or C# would be recommended for this.

Thanks a lot Jacob, this is reassuring. The divide into a smaller grid and then rejoin back up to the maximum dimensions was the direction I was planning to head as well so I’m happy to hear it is a reasonable solution. I am working on Python training as we speak to help with this (and future) problems.

I’ll keep you updated with my progress on this problem!

I recently posted a Python based solution to separate disjointed polysurfaces, which may help you wrap your head around the logic.

Comments are pretty robust so you can review. Before you start that be sure to review Dynamo’s (often overlooked) topology classes in the geometry library. Otherwise it’ll make zero sense.

1 Like