I have already searched for similar solutions but nothing that I found was helping.
Here is my problem:
I have 3 different surfaces (plots) that I have to divide into smaller ones (500-800 m2). The new lines that divide smaller plots have to be at least 18m apart.
I have already divided the second surface by dividing upper curve with number 18 and conecting points to the curve below. Now I also have to add the area condition (500-800m2).
I would really appreciate it if someone would help me.
Thank you for sharing your solution. I’ve tried it, but it didn’t work as I wanted it to. It didn’t take the whole surface and some of the new plots were too small, but I liked the fact that areas were displayed.
For each branch in cTree:
Given a pair of non null and valid curves (c1, c2):
Check the direction of the second (DotProduct on tangentAtStart) and reverse if DP<0.
Sort the curves (Length): c1 is the shortest, c2 the longest.
Divide by distance D both (or use the proportional [newly added] option for the longest).
Let c1divPtsCount the count of the points on the shortest.
Loop (c1divPtsCount - 1 times) and sample pairs of c1,c2 div points + c1, c2 div doubles and do the regions, centers, areas. Option last does the last region (may have odd shape).
Clear previous TDots (if any), do the TDot List and display it.
While this example perhaps doesn’t fully capture your exact constraints, your problem does appear to be one that lends itself well to be solved with a generic solver, such as the standard Galapagos plugin. In this case, by dividing the perimeter into same sized plots by lines that travel perpendicular along a “spine” and searching the parameter space along the spine, minimising the plot area difference from a target average:
Awesome. I think you might be better off computing the fitness value like so, and using the annealing solver instead of the evolutionary solver (seems to get better results, especially with many plots):
I haven’t fully checked the final result from the model, but I think it covers all the criteria you are looking for. Although some of the divisions do get a little funky.
What version of Grasshopper are you running? If you’re still on Rhino5, then opening files saved on Rhino6 will sometimes result in missing components since GH on R6 has many new components that were not there before.