I believe that someone can help us with python code node, to overcome the lack of that command in Civil 3D API.
May this help you
Thank you for your input, however, the python script you shared is for extracting surface solids, and I was trying to extract corridor solids. Is there any way to extract solids for multiple corridors?
@Ahmed.Kamal.Moussa I believe there is a node in either the Standard Civil 3d nodes or the Civil Toolkit called
Corridor.GetSolids which does what you’re after. This topic illustrates it’s use: Civil 3D Merge solids
To pull the solids from multiple corridors, you’d have to build a list of said corridors as a first step.
My understanding is that to get the solids with that node, you need to have the solids on the drawing in the first place. Thus have already gone through the extraction process.
@Ahmed.Kamal.Moussa packages such as C3D Toolkit and Camber are essentially calling the API commands. If the command isn’t exposed you will need to essentially build your own extraction method which can get very complicated. I can see 2 workarounds through Dynamo, which depending on the complexity on your corridor, could get messy
Using corridor feature lines, links of the applied subassembly and shape codes to build your own solids but depending on your
Use dynamo and camber nodes to create various corridor surfaces using your link codes and then use the C3D toolkit to create the solids between the different surface lakers
This previous thread is similar.
I’m able to get solids from individual corridors using that script but am have trouble getting it to properly loop through multiple corridors. Do you have any tips for looping through scripts with complex lacing and levels with multiple objects? If it was like a text based programming language you could define a function and just loop through the function multiple times with different variables. Is there an equivalent with dynamo? Or is it best to just imorove my lacing/leveling skills to get passing a list of objects into a graph to work properly.
Not much advice here other than just play with it until it works
Hah! Fair enough! I’ll keep tinkerin’.
I know it’s not a very dynamic work flow but it sure is easier to extract/create the solids in civil 3d and then use the Corridor.GetSolids. Especially when trying to generate all of the geometry on the dynamo end, for multiple corridors at once. Seems to want to crash my dynamo instance anyway
What I am trying now is to put Camber package “Object.Select” & “Document.SendCommand” nodes in use, to send the extract command to Civil 3D, however, I failed to automate the process in the below two steps:
- To select each corridor one by one, and send the command to each one;
- When the extract window is shown, I am looking up something to press “Enter” for me.
Put the “enter” at the end of the string you send and it should be fine.
Strung seven commands together in a row this way today…
I am not entirely sure it would work with this as the Export Corridor To Solids command opens a dialogue window. I tried adding the “-” before the command but it will still open the dialogue window
Off to the wonderful world of windows dlls I go… can someone (@david_licona?) post a DWG which needs 3 VERY SIMPLE corridor solids to have this command run? I would like to reduce runtime of each test to near 0.
This is really disappointing, as it is essential in BIM workflows…
It’s on the idea board, please vote, hopefully it gets attention:
DataSet_Corridor.dwg (2.7 MB)
Autodesk Civil Infrastructure Roadmap also?
Nah, I haven’t seen that there yet. I hope this gets attention soon.
Soo, there has been some progress I guess.
I believe that there is light at the end of the tunnel.