Divide irregular shape into equal parcels


#1

Hi there - I need to divide irregular shapes into parcels of equal area. For example the attached shape needs to be divided into 10 parcels all of the same area. Parameters could be set - all dividing lines are horizontal.

The shape is a 2d closed polygon.

Is there a way to do this?

Many thanks for your help.
Marty


(John Brock) #2

No with core Rhino tools.
My guess is this could be done with scripting or Grasshopper.


#3

I think this would be a good example to do in Grasshopper with Galapagos (evolutionary/iterative solver).

–Mitch


#4

That seems like an appropriate approach. Although I had never actually used it before, I just had a quick go at implementing Galapagos for subdividing an irregular polyline into “even-area” Voronoi cells:

The values indicate cell area, as you see it gets pretty close. Obviously this definition does not take into account the horizontal constraint you describe (didn’t catch that on the first read). But perhaps the file can help you get the ball rolling, note that I basically winged it: EvenAreaVoronoiCellsWithinPolyline.gh(11.8 KB)

Best,

Anders


(Willem Derks) #5

Hi Marty,

I took the challenge and wrote this script to divide planar closed curves, into equal area parts (within a relative tolerance). Sections are in a direction set by the user.

The scripts are offererd as-is so make sure to double check results for critical applications.

When you run the script, check the commandline to set parameters.

To run the script download and save this file: DivideShapeInEqualParts_NoAlias.rvb(4.9 KB)
Drag and drop Over a running instance of Rhino
The script above will then run only once.

To let it create an alias, save this file:DivideShapeInEqualParts.rvb(4.9 KB)
Make sure you save it at a safe place where it can remain, as the registered alias refers to that location. The script will create an alias equal to the file name; “DivideShapeInEqualParts”

I am curious about why you need this functionality? Can you tell me what the purpose of this equal partitioning is?

-Willem


#6

Hey there. Big thanks for the responses. Its great to have a couple of options to explore at this stage and both approaches, Anders and Willem are helpful at this stage.

I’m simply looking at site division. From hunting around there is surveying specific software that can do this kind of thing. However I thought, having a basic familiarity with rhino, it would probably be flexible enough to do the operation natively, with a script or a plugin.

My thanks again. If I run in to some problems i’ll make a post.

Marty


#7

Thanks again - both options have been really helpful.