Message 1 of 12
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Is there a way I can add a column in a C3D Point table that gives me a depth between a surface and the COGO point?
Solved! Go to Solution.
Is there a way I can add a column in a C3D Point table that gives me a depth between a surface and the COGO point?
Solved! Go to Solution.
I don't think a reference surface can be added to cogo points. you can add it to a pipe network structure the looks like a cogo point.
Joe Bouza
Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.
Hi Martin,
I haven't tested it, but I'm pretty sure Project Explorer can do this by comparing COGO points to a surface.
Dave
Dave Stoll
Las Vegas, Nevada
You can definitely do that. Project Explorer gives you a ton of flexibility, BUT I hate that now I have two workflows for creating tables.
You can take this data from project explorer and create a custom table with the object sets tab (circled).
That's cool. Ill give it some effort now. Two work flows is a drag. are they civil3d tables or acad tables?
Joe Bouza
Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.
There are a bunch of options in the object sets, autocad table, export to csv, excel, and it will auto-update if you tell it to. Its nice, but I don't like to have to train on two workflows. It would be great if they picked one and migrated the other over.
@Joe-Bouza wrote:That's cool. Ill give it some effort now. Two work flows is a drag. are they civil3d tables or acad tables?
Project Explorer creates AutoCAD tables that have C3D data in them. However, they aren't truly dynamic as any manual ACAD changes done to it will be undone when the table is refreshed with C3D object data. They're semi-dynamic and Autodesk believes this is good enough.
But in this case I believe Project Explorer would be the best method to get a point to reference a depth.
Can you get Project Explorer to add the depth as a UDP? If you do that, the value will be available to regular Civil 3D labeling and tabling commands. I know this can be done with LISP. Maybe Dynamo.
I like my robust pipe network structure displays as a cogo point. Robust and dynamic, but im going to explore explorer
Joe Bouza
Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.
@tcorey wrote:Can you get Project Explorer to add the depth as a UDP? If you do that, the value will be available to regular Civil 3D labeling and tabling commands. I know this can be done with LISP. Maybe Dynamo.
I don't know if it can. As far as I know PE just creates ACAD tables with C3D object data. You can create a table with COGO point data and also add alignment data to the same table. What can be linked between the various C3D objects is usually spatial. I.e., the COGO point will show the closest alignment station and offset. I don't know if PE can read UDP data in the first place, but I don't think it can transpose data from one object to another. I don't use it regularly, so maybe it can.
This code will calculate the depth and add it to the COGO Point as User Defined Properties. Be sure you have created a UDP called Depth. The routine looks for that field name so it can place the Depth there. When you make the UDP for Depth, be sure you set Property Field Type to Double.
;Rev Q
(defun c:revq ( / srf pts len ctr pt elv x y diff)
(vl-load-com)
(setq srf (vlax-ename->vla-object (car (entsel "\nSelect Surface: "))))
(while (/= (vlax-get srf 'ObjectName) "AeccDbSurfaceTin")
(setq srf (vlax-ename->vla-object (car (entsel "\nObject must be a TIN Surface. Try again: "))))
)
(setq pts (ssget "x" (list (cons 0 "AECC_COGO_POINT")))
len (sslength pts)
ctr 0)
(while (< ctr len)
(setq pt (vlax-ename->vla-object (ssname pts ctr))
elv (vlax-get pt 'Elevation)
x (vlax-get pt 'Easting)
y (vlax-get pt 'Northing)
)
(if (ispointonsurface (list x y) srf)
(progn
(vlax-invoke-method srf 'FindElevationAtXY x y)
(setq diff (- elv (vlax-invoke-method srf 'FindElevationAtXY x y)))
(vlax-invoke-method pt 'SetUserDefinedPropertyValue "DEPTH" diff)
)
;and nothing if not on surface
)
(setq ctr (1+ ctr))
)
)