Civil 3d Point Group by Description in Current dwg


Need help understand points, and work flow for cogo points

I’m trying to create point groups based on the cogo point descriptions.
I’m able to create the point groups by name from the point description, however, I get a warning that a point groups already existing with that name. I’m not sure why. It also does not filter the points with matching descriptions to that point group. it places all the points in the named point groups. now to you filter for that?

I guess I need to find a way to filter cogo point objects by it’s description.

second, Does anyone have a sample cogo point selection inside closed polyline, that the next lesson.
points with desc.dwg (1.2 MB) ACTION-MAKE POINTGROUP-BY-DESC.dyn (49.8 KB) point groupCapture

Thank you for any help can provide,

Hi @jcoon,

Is this what you’re looking for?

For this task, I can think of two methods:

  1. Get the polycurve of the polyline
  2. Get the COGO points as Dynamo points
  3. Create a surface from the polycurve using Surface.ByPatch
  4. Use Geometry.DoesIntersect to get boolean values of the COGO points that intersect the surface and those that don’t
  5. Filter the original list of COGO points using List.FilterByBoolMask


  1. Get the COGO points as Dynamo points
  2. Get the vertices of the polyline
  3. Create a Dynamo polygon using Polygon.ByPoints with the polyline vertices
  4. Use Polygon.ContainmentTest with the COGO points to get a list of booleans for the points that are within the polygon
  5. Filter the original list of COGO points using List.FilterByBoolMask


Thanks for the ideas. I did see the sample you linked, I think I got lost when he was stripping text values from the descriptions. maybe I can go back and use some of his to finalize my sample.

I’m going to try the polygon, bypoints. that looks more like what I think I need. in the end,
the routine will sample points against surface to check if point is above the surface. The only remaining section would be finding the highest point above with 100 feet inside the selected polygon.

Thank you

Thanks for the help.

I’m now able to create the point groups based on the cogo points descriptions in the drawing.
I current issue is, I don’t see a method to get the cogo point number points to be included to complete the points group container.


Thank you

Hi @jcoon,

I think you actually need to plug the ‘groups’ output into the ‘cogoPoints’ input. Otherwise you’ll be creating five different point groups with each group containing all of the points instead of only the points with each unique description. This shows the difference in the list structure:

Here’s an updated file with the change I mentioned above, as well as an example of creating a point group by points within a polyline boundary.

points with desc_MZJ.dwg (1.2 MB)


Thank you

Wow that’s fantastic. still trying to wrap my head around this application. I know what I want to do, it’s finding or understanding what tools to use or how to move the date around to get the results you need.

My goal would be to update most of my VB net routines to Dynamo. Do you know if they will add some type of drawing tools soon. having some type of select object or object endpoint or start point with the ability to draw 90 degree lines or polylines from those objects would be very helpful. maybe even driven from an excel file. I working in the aviation design industry. it would be great if I could identify a polyline as my runway and have approach surface move much like a parametric object, meaning they are connected in space relative to the location of the ends of the runway. increase or reduce and endpoint would propagate thru all setting relative to that line/polyline object.

Again, Thank you, I’ll take some time to review what you have done.


Already got those :wink:

I do roadways and know next to nothing about runways, but here is an example for you to play around with. All of the inputs are driven from an Excel file. The plane is totally unnecessary, but it’s an example of dynamically placing a block reference.

RunwayExample.dyn (151.6 KB)
RunwayExample.xlsx (8.7 KB)
RunwayExample.dwg (3.4 MB)



Now you’re talking!
let me see how you did that, hopefully I can figure it out and see if I can add to it for my needs.

Before I go crazy with this, can the centerline location push / pull associated data.
Let say you had a building or a road that needs to be 200 feet beyond the runway end, can dynamo
interact like that?

Thank you this is great.

In theory you should be able to come up with something. If there’s too much going on, eventually a graph might start to get a little unmanageable. But at that point you could always split it up into multiple files or start exploring custom nodes. So it’s pretty scalable.

I see the plane does react to the runway end points, so that answers one of the question above.

This is going to take some time to understand all this. I mean, I’ve marked maybe 1000 runways
and I have no idea yet how this sets the points for the marking… now the fun begins.

Thank you

um…Polygon.ContainmentTest?! That saves tons of work trying to make patch surfaces from points from a polyline and then intersecting etc.

Pretty incredible work with the getting all the threshold striping points and using coordinate system point and working out from there with a cross product lacing :open_mouth:

I see that the striping is placed with a single coordinate system in its center and line drawn from point before and after; however this doesn’t work well for the runway outline if the centerline has multiple points or any curvature (likely wouldn’t be any for a runway). I added in a PolylineExtensions.Offset node for fun.

The plane was a fun touch too, I’ll have to look into the the remaprange node.

Thanks for sharing!

Yeah it works nicely for bounded shapes that are only made up of line segments. But if there are curved segments then you’d have to use the surface intersection method.

1 Like

yeah this is a wonderful start point for me. at my level is pretty daunting to understand.
I’m going to try and pull just the line start and end point that then draws the runway outline, then the marking. That’s going to my first goal.

second will be the threshold stripes. I assume those stripes are controlled by or from the line.start point. and the length is coming from the excel file. in the real world I’d need to set additional points at 10 and 20 feet from the line.start point to set start the threshold and then the threshold marking stripes. is there a method to set points based on line direction?.

can you do something like this in a code block?

code block?
point1.byCooridates (pt1.X, pt1.Y) = rw centerline line start point (x,y)
point2.byCooridates (pt2.X, pt2.Y) = rw centerline line end point (x,y)
get the vector direction so I can set new points 10 and 20 feet in the direction of of
point1 and point2. let say I’m a surveyor, I setup at point1 siting point2 and I want to set points on that direction from point1 an point2, at 10, and 20 feet.

Dim pt10 As New Point2d(pt1.X, pt1.Y)
Dim pt20 As New Point2d(pt2.X, pt2.Y)
'Autodesk.AutoCAD.ApplicationServices.Application.ShowAlertDialog("Angle from XAxis: " & pt10.GetVectorTo(pt20).Angle.ToString())
dblRot = pt10.GetVectorTo(pt20).Angle

newpt104 = PolarPoint(newpt101, (pi + dblRot), 10))
newpt105 = PolarPoint(newpt104, (pi/2 + dblRot), runwaywidth / 2))
newpt106 = PolarPoint(newpt104, (pi/2 + dblRot), runwaywidth / 2))
Dim objline1 As Line = New Line(newpt105, newpt106

This is great stuff if I can ever figure it out.
Thank you

I would do all of that with a coordinate system and then Point.ByCartesianCoordinates. There are a few places in the example script that show this.

Some other resources that might be helpful as you get going:

1 Like


Thanks, I’m watch a code block video right now.


I will really recommend going through the primer that @mzjensen suggested. It will really help understand core concepts. I’ve seen some users jump directly into workflows without the primer prework and then get stuck on something and frustrated.


Thanks, I’m currently doing that

Also, I may be advancing myself, but if you’re interested in airport design, one of the cases that we want to publish in this AU class (if chosen) is the creation of part 77 surfaces, so don’t hesitate to vote :slight_smile:

guilty :wave:t3: I haven’t gone through the whole primer yet but you can still learn a lot by studying and reverse engineering examples from other users which can be a little more accessible when you understand the goal of a script vs studying individual nodes.

1 Like