Import Points make into Group and Surface

Hello everyone,

I’m new to Dynamo and currently trying to follow a YouTube tutorial on importing Excel file data into Civil 3D, creating a point group, and then generating a surface.

I’m using Civil 3D 2026, and I carefully followed all the nodes shown in the video (credit to the original creator). However, I keep encountering errors when running the script.

Would anyone be willing to help me review and tweak the file so it works properly in 2026? I’ve attached the file for reference.

Thank you in advance for your help!

What is the warning on the import excel node? Check the graph node manager (in extensions) and you should be able to copy the warning text directly.

From the file path node it looks like you have a .txt file as input?

Also just want to point out that there’s a sample file that comes with Civil 3D for this same task. Might be worth checking out.

Thanks for pointing that out. Yes, the file path node is currently pointing to a .txt file. I will change it to an .xlsx file and try again. Hopefully that resolves the issue.

Got this warning:

Thanks for the suggestion. I noticed the sample file “OpenXMLImport_Data From Excel.dyn” included with Civil 3D. I’ll review it and try to base my script on that.

The warning message is telling you what the issue is.

Node expects string, string, number, number, and boolean for the inputs. However it got a file, string, string, string and boolean inputs.

Remove the file from path node.
Use number nodes for the start row and column.

The result will likely then be a new warning Ali n the lines of ‘file is not an excel file’, so set the path correctly as well.

I followed the sample file “OpenXMLImport_Data From Excel.dyn”, and now I am getting a different set of errors. It seems the graph is running further than before, but it still does not complete successfully.

I may still be missing something in the configuration. I have attached the updated Dynamo file and the error message for reference. Any guidance would be greatly appreciated.

was just wondering why this warning came up:

I used this on the first List.GetItemAtIndex and there were no errors. However, when I applied the same setup to the second and third List.GetItemAtIndex, this error appeared:

“Operation failed: Index was outside the bounds of the array.”

It seems like the list might not contain enough items for the index being used. Could this be related to the data being imported from Excel?

Pin open the data preview from the excel node and the list transpose node.

Civil3D_CreateSurfaceFromCSV.dyn is what I was referring to.

Thank you for this Civil3D_CreateSurfaceFromCSV.dyn file. It worked well on my end. I was just wondering if it’s possible to modify the last part so that the created surface automatically reflects my desired surface style.

I am using 2 nodes from the Camber package as shown below.

Thank you for the suggestion. I’m currently using the two nodes from the Camber package as shown below. Is there a way to link this with Civil3D_CreateSurfaceFromCSV.dyn so the surface created from the CSV will automatically adopt the selected surface style?

Yes, just add the 2 nodes from the Camber package after TinSurface.ByCogoPointGroup node.


Civil3D_CreateSurfaceFromCSV_SetStyle.dyn (114.0 KB)

With an Excel file, that would look like this:

Civil3D_CreateSurfaceFromXLSX_SetStyle.dyn (79.1 KB)

This could be one of those things where doing it in Dynamo is more work than doing it in the C3D GUI:

  • Import the points as a point group: maybe 3 clicks

  • Create the surface with a style: 2 or 3 clicks

  • Add the point group to the surface: 2 clicks

Awesome! Thanks for confirming :blush: I’ll go ahead and add the 2 nodes from the Camber package after the TinSurface.ByCogoPointGroup node.

Hehe, yeah I see what you mean :sweat_smile: Sometimes Dynamo ends up being more work than just a few clicks in C3D! Appreciate the breakdown—it actually helps me decide when to use which approach.

By the way, if you want to keep your data in a .txt file, you can parse it into values using the below method.

Civil3D_CreateSurfaceFromTXT_SetStyle.dyn (87.3 KB)

Thank you so much for this! :folded_hands: Super helpful, especially since most of my files are in .txt format. Really appreciate you sharing this method—kudos to you! :clap: