Best way to divide a surface that has been extracted from a grading

Hi guys, I have the following problem at hand:

I need to divide a lot of surfaces that have been extracted from the grading I did in my project, my current workflow is:

Draw the feature line with the precise elevation points I have (20m in 20m) - automated
Grade this feature line to my terrain surface
Extract the detached surface from this grading
Explode a copy of this surface so I get the exactly lines that build my grading

Close the polygon at each 20m (I need my surfaces (solids that I build from it, to be precise), to be divided at this points, which are my stations) - This is done by hand, wasn’t such a problem, but now I have 10km+ to do this (500 divisions, if you put 1 minute to each, which is not real at all in some cases, already consumes me something like 10 hours)

Crop the original surfaces with this closed polygon via dynamo - I have some problems here too, looks like I always end with some “null” inputs from the object.geometry node, something with points being coincident, i’m using georeferenced coordinates, but even if I bring the project close to 0, still get this, independently of which geometry range I use - I CAN bypass this by creating a feature line from each polygon, then getting the average point of the respective feature line as my “Keep Location” in the “Crop Surface” node, and using the polyline polygon only as the cropping object.

then extract the solids via dynamo - Everything working perfect here

SO, anyone knows a better way to do that? I feel i’m doing this the wrong way/with wrong tools, i read something about parcels in the forum, but couldn’t work that out…

Hi @guilhermeJHXAW - some example files with screenshots/GIFs would be helpful if you are able.

Hello @mzjensen,

here is one example file Test.dwg (1.3 MB)

I didn’t sent any .dyn or even .dwg because I think what I need is some help with the logic itself that i’m building, it’s not like that one isn’t working, but it is so slow to do it even with the dynamo. I’ll prepare some gifs/Screenshots to send, just give me a few minutes

Dividir Superfícies.dyn (105.0 KB) ← this is the .dyn i use to crop the surfaces

Do you need to create separate surfaces, or is the end goal just to have individual solids? It would save a lot of work if you can avoid creating so many TIN surfaces. You can just use the OOTB Solid.SliceByPlanes node.

1 Like

the end goal is to have the individual solids, indeed.

I’ll try your solution rn, and will comeback with the feedback. I was almost always crashing/freezing my process while creating the tin surfaces, so this looks i nice workaround

BTW, can you share your .dyn and finished .dwg?

It’s running for about half an hour now, nothing yet. I Created this solid from a single surface, which had different surfaces on it (created from the same grading group, so they came like this), and it seens like this slow down the process A LOT, you know if dynamo has any trouble with this situation? Also, i’m using georef coordinates, so x has 6 digits, and y has 7, can this slow the process this much?

Sure, here’s a sample. This takes 1 minute on my machine.

Sample.dwg (4.0 MB)
Sample.dyn (41.0 KB)

This shouldn’t matter. The longest part of the process is probably extracting the solids between surfaces. Breaking this up into smaller pieces should help. Breaking it up into 20m increments is probably too granular (that’s what slicing the solids is for), but could you do some data prep and break the grading surface up into a few surfaces instead of one large surface?

Hi, as @mzjensen said the longest part of the process is exctracting the solids. Check your surfaces beforehand, if you have >100K triangles it would not work in Dynamo and it will take forever in C3D, so definitely break it up.


Hmmm, i don’t know, I’ve generated solids from surfaces with more than 500k triangles last week, and it took WAY less time to build… I’m at my WS right now, will test it here and see if I got any different results.

I’ve did this prep on most of the surfaces (~80%), but the ones that i received from a collab of mine had this 8 “different” gradings into the same surface, I don’t know if Civil takes in account the bounding box to do some math, because if you take the area from all of that surfaces, its not even 3% of the topographic surface that I worked with in this project, and that one took so less time to extract the solid. If I can’t solve this today, i’ll rebuild this ones separately.

While at this, can I ask why exactly you used alignments? AND, do you use EpicGames to work with pointclouds in Unreal Engine? I just got curious hahaha

@mzjensen marked your solutions, worked like a charm now that i’m in a decent WS, i’ll try later with this one surface of separate surfaces, and will give the feedback here.

Thanks for your time, guys

You originally mentioned that the cutting planes were at specific stations (or rather, at 20m increments), which you had located in model space as individual lines. But what would you do in the scenario where you need to change the increment to 15m? Then all of the lines would be incorrect. In my experience, it’s easier to get coordinate systems along the alignment at specific locations (which could even come from an Excel file if needed) than to draw individual lines. And it is also a more robust workflow with fewer steps of manual work.

Probably outside the scope of this thread :wink:

1 Like

Thank you for so much knowledge shared, @mzjensen.

I thought you made it by alignment because there was some tool that you could easy draw it by selecting the individual lines or something, but then i realized that i could just draw a polyline between that points with dynamo and transform it into an alignment…

Well, thank you all for your time, really nice examples and way of thought, hope I can help you like you helped me someday soon.