Author Topic: Civil 3D Inquiry Tool & Labels  (Read 20840 times)

0 Members and 1 Guest are viewing this topic.

BlackBox

  • King Gator
  • Posts: 3770
Civil 3D Inquiry Tool & Labels
« on: July 27, 2012, 09:04:19 AM »
In plan view, how does one query a pipe (part) for the invert elevation by user specified point?

Also, I know that Civil 3D can query any given Station & Offset by point (using the Inquiry Tool), so why must I select the same point twice when adding an Alignment Label (i.e., _AeccAddAlignOffLbl Command:? ?
« Last Edit: July 27, 2012, 09:09:40 AM by RenderMan »
"How we think determines what we do, and what we do determines what we get."

BlackBox

  • King Gator
  • Posts: 3770
Re: Civil 3D Inquiry Tool & Labels
« Reply #1 on: July 27, 2012, 09:30:49 AM »
In plan view, how does one query a pipe (part) for the invert elevation by user specified point?

Another awesome Autodesk AECC* enhancement:

Code - Auto/Visual Lisp: [Select]
  1. Command: (_dump (vla-get-startpoint (vlax-ename->vla-object (car (entsel))))) ; <- I selected an AECC_PIPE
  2.  
  3. Select object: ; Object does not support ITypeInfo interface
  4.  
  5. ** Invalid argument: Must be VLA-OBJECT **
  6.  

... If I can't even view the Properties & Methods available for the StartPoint Property Object, then I certain cannot code my own Visual LISP function, without some .NET LispFunction assistance.
"How we think determines what we do, and what we do determines what we get."

mjfarrell

  • Seagull
  • Posts: 14444
  • Every Student their own Lesson
Re: Civil 3D Inquiry Tool & Labels
« Reply #2 on: July 27, 2012, 01:23:38 PM »
In plan view, how does one query a pipe (part) for the invert elevation by user specified point?

there is no way that I am aware of....not even with a(n) expression as the information one needs
like pipe station, or instantaneous grade, slope, elevation is not available to use in a formula.
Be your Best


Michael Farrell
http://primeservicesglobal.com/

mjfarrell

  • Seagull
  • Posts: 14444
  • Every Student their own Lesson
Re: Civil 3D Inquiry Tool & Labels
« Reply #3 on: July 27, 2012, 01:25:47 PM »

Also, I know that Civil 3D can query any given Station & Offset by point (using the Inquiry Tool), so why must I select the same point twice when adding an Alignment Label (i.e., _AeccAddAlignOffLbl Command:? ?
Use the Station and Offset _ Fixed Point command instead.
Be your Best


Michael Farrell
http://primeservicesglobal.com/

BlackBox

  • King Gator
  • Posts: 3770
Re: Civil 3D Inquiry Tool & Labels
« Reply #4 on: July 27, 2012, 01:28:15 PM »
In plan view, how does one query a pipe (part) for the invert elevation by user specified point?

there is no way that I am aware of....not even with a(n) expression as the information one needs
like pipe station, or instantaneous grade, slope, elevation is not available to use in a formula.

Thanks for the confirmation.


Also, I know that Civil 3D can query any given Station & Offset by point (using the Inquiry Tool), so why must I select the same point twice when adding an Alignment Label (i.e., _AeccAddAlignOffLbl Command:? ?
Use the Station and Offset _ Fixed Point command instead.

Doh! Early on, I set an alias to use the non-fixed command, to avoid having to go to another tab, the pulldown ribbon button, flyout, etc.. I'll update my alias accordingly. Thanks!  :lol:
"How we think determines what we do, and what we do determines what we get."

BlackBox

  • King Gator
  • Posts: 3770
Re: Civil 3D Inquiry Tool & Labels
« Reply #5 on: July 27, 2012, 01:42:32 PM »
In plan view, how does one query a pipe (part) for the invert elevation by user specified point?

there is no way that I am aware of....not even with a(n) expression as the information one needs
like pipe station, or instantaneous grade, slope, elevation is not available to use in a formula.

Thanks for the confirmation.

Perhaps I can employ the GetClosestPointTo() Method found in the Autodesk.Civil.PipeNetwork.DatabaseServices.Pipe Class... I'll check out the Civil 3D & ObjectARX 2011 code samples before rolling my own CommandMethod.  :kewl:

... Just wanted to make sure I wasn't missing a built-in option.

Cheers, Michael! :beer:
"How we think determines what we do, and what we do determines what we get."

mjfarrell

  • Seagull
  • Posts: 14444
  • Every Student their own Lesson
Re: Civil 3D Inquiry Tool & Labels
« Reply #6 on: July 27, 2012, 01:55:48 PM »
please keep me abreast of the result of this

otherwise just send me some breasts
Be your Best


Michael Farrell
http://primeservicesglobal.com/

BlackBox

  • King Gator
  • Posts: 3770
Re: Civil 3D Inquiry Tool & Labels
« Reply #7 on: July 27, 2012, 02:12:17 PM »
please keep me abreast of the result of this

otherwise just send me some breasts

Sure thing, I'll just get something off the rack! :lmao:
"How we think determines what we do, and what we do determines what we get."

BlackBox

  • King Gator
  • Posts: 3770
Re: Civil 3D Inquiry Tool & Labels
« Reply #8 on: July 30, 2012, 09:31:42 PM »
Update:

I have a working draft for my CommandMethod, which prompts the user to first select a pipe ("AECC_PIPE"), then a point along the pipe, which successfully returns a Point3D to the Command Line for verification.

Currently, the point that is returned is not the invert (flow line), but appears to be the outside of pipe (top?) in the limited testing I've done (just got this working 2 mins ago). So I need to find the correct way of extracting the pipe invert next.

More work is needed, as I would like to make this a single point selection (no prompting the user to select the pipe first), and loop the point selection. I also need to implement some basic Exception handling, and then I think I'm ready to post.
« Last Edit: July 30, 2012, 10:35:46 PM by RenderMan »
"How we think determines what we do, and what we do determines what we get."

Jeff_M

  • King Gator
  • Posts: 4093
  • C3D user & customizer
Re: Civil 3D Inquiry Tool & Labels
« Reply #9 on: July 31, 2012, 12:15:29 AM »

Currently, the point that is returned is not the invert (flow line), but appears to be the outside of pipe (top?) in the limited testing I've done (just got this working 2 mins ago). So I need to find the correct way of extracting the pipe invert next.
This should be the center of pipe elevation. You'd then use 1/2 the InnerDiameterOrWidth property to determine the invert. This can all be done in lisp, btw. You just need to use the Curve class methods (not the vlax-curve-* lisp stuff, they fail). Here's a quick function to get a point at the specified parameter:
Code: [Select]

(defun getparam (pipe param)
  (vlax-safearray->list
    (vlax-variant-value
      (vlax-get-property pipe 'pointatparam param)
      )
    )
  )
 
(setq end0 (getparam pipe 0.0)
          end1 (getparam pipe 1.0)
)
« Last Edit: July 31, 2012, 12:20:41 AM by Jeff_M »

Jeff_M

  • King Gator
  • Posts: 4093
  • C3D user & customizer
Re: Civil 3D Inquiry Tool & Labels
« Reply #10 on: July 31, 2012, 12:19:36 AM »
Oh, but you can get fancier with a .NET solution. This image is of a real-time invert tracker that updates as you move along the pipe.


BlackBox

  • King Gator
  • Posts: 3770
Re: Civil 3D Inquiry Tool & Labels
« Reply #11 on: July 31, 2012, 01:18:49 AM »
Jeff,

Yet again, you're an excellent resource as I progress with an initiative. I can't wait to try this out tomorrow. I completely overlooked this being possible when I couldn't even use vlax-dump-object on some of the Property Objects. I just went straight to the Object Browser.

I still think I'm going to move forward with the .NET option, as I had already planned on incorporating a pipe-centric 'label station, offset, and elevation' option, in addition to a small litany of LispFunctions that would allow our veteran users to stick with LISP (I'm seemingly one of the only strange birds interested in .NET development at my company).

Again; I can't thank you enough for the continued guidance.
« Last Edit: July 31, 2012, 06:34:48 AM by RenderMan »
"How we think determines what we do, and what we do determines what we get."

BlackBox

  • King Gator
  • Posts: 3770
Re: Civil 3D Inquiry Tool & Labels
« Reply #12 on: July 31, 2012, 06:57:33 AM »
Would there be a reason to use InnerDiameterOrWidth in lieu of InnerHeight, given the intent to extract the pipe's invert elevation, if the Point3D (pt) specified is the center of pipe?

Code - C#: [Select]
  1.                             ed.WriteMessage(
  2.                                 "\nINV = {0} ",
  3.                                 (pipe.GetClosestPointTo(pt).Z - (pipe.InnerHeight * 0.5))
  4.                                 );
  5.  

Also, being this is the first time I am in fact working with a 3D pipe element (rather than a 2D Line/Polyline), specifying a Point3D from plan view along the pipe at the midpoint yields an accurate, but unexpected invert elevation... For example if the pipe starts at EL = 10.00, and ends at EL = 0.00 (remember, I'm in Florida! LoL), snapping to the midpoint one would expect EL = 5.00, which is not what is returned.

How would I go about translating the plan view midpoint to the point along the pipe straight down about the Z axis (presuming Top, WCS), rather than the GetClosestPointTo() which is perpendicular to the 3D pipe?  :?
« Last Edit: July 31, 2012, 08:16:24 AM by RenderMan »
"How we think determines what we do, and what we do determines what we get."

Jeff_M

  • King Gator
  • Posts: 4093
  • C3D user & customizer
Re: Civil 3D Inquiry Tool & Labels
« Reply #13 on: July 31, 2012, 09:09:34 AM »
Would there be a reason to use InnerDiameterOrWidth in lieu of InnerHeight, given the intent to extract the pipe's invert elevation, if the Point3D (pt) specified is the center of pipe?

How would I go about translating the plan view midpoint to the point along the pipe straight down about the Z axis (presuming Top, WCS), rather than the GetClosestPointTo() which is perpendicular to the 3D pipe?  :?
When I first wrote a number of my pipe utilities the InnerHeight had a bug where it didn't always report the correct height (C3D2007 or 2008) so I just used the other and never checked if the bug was fixed. It appears that it has been.

As for the 2d/3d issue, I cheat. :-) I create a temporary pline using the pipe start/end xy and current drawing Elevation values, find the parameter at the point returned by GetClosestPointTo on the temp pline, then get the point on the pipe at that parameter. There's probably a more elegant way to do this, but it's what I came up with that works reliably.

BlackBox

  • King Gator
  • Posts: 3770
Re: Civil 3D Inquiry Tool & Labels
« Reply #14 on: July 31, 2012, 11:15:38 AM »
Would there be a reason to use InnerDiameterOrWidth in lieu of InnerHeight, given the intent to extract the pipe's invert elevation, if the Point3D (pt) specified is the center of pipe?

How would I go about translating the plan view midpoint to the point along the pipe straight down about the Z axis (presuming Top, WCS), rather than the GetClosestPointTo() which is perpendicular to the 3D pipe?  :?


When I first wrote a number of my pipe utilities the InnerHeight had a bug where it didn't always report the correct height (C3D2007 or 2008) so I just used the other and never checked if the bug was fixed. It appears that it has been.

No worries; we use a mix of RCP & ERCP, perhaps more frequently than other states. Wasn't sure how that would affect the calculation. I'll stick with InnerHeight for the time being.

As for the 2d/3d issue, I cheat. :-) I create a temporary pline using the pipe start/end xy and current drawing Elevation values, find the parameter at the point returned by GetClosestPointTo on the temp pline, then get the point on the pipe at that parameter. There's probably a more elegant way to do this, but it's what I came up with that works reliably.

Awesome... I already started coding this; glad to know I was on the right track. I hadn't thought to create a temporary line, as I assumed that I could perform the calculation programmatically instead (untested); but still.

For the line though; do you just handle the deletion in the Catch/Finally block (if it exists)?  :? If so, then I'd need to define the new 'line' outside of my Try scope, correct (otherwise the Catch/Finally block couldn't see it)?

Thanks!
"How we think determines what we do, and what we do determines what we get."

Jeff_M

  • King Gator
  • Posts: 4093
  • C3D user & customizer
Re: Civil 3D Inquiry Tool & Labels
« Reply #15 on: July 31, 2012, 02:54:11 PM »

For the line though; do you just handle the deletion in the Catch/Finally block (if it exists)?  :? If so, then I'd need to define the new 'line' outside of my Try scope, correct (otherwise the Catch/Finally block couldn't see it)?

Thanks!
First, be sure to use a LWPolyline, not a line. Lines report different parameters than plines/pipes. And just be sure to Dim the temppoly as nothing prior to the Try...block. I don't actually do it this way since my code operates on the entire network, whichever pipe/structure is closest to the cursor gets acted on. I create a collection of polylines for each pipe in the network at command startup that I dispose of as the command ends.

BlackBox

  • King Gator
  • Posts: 3770
Re: Civil 3D Inquiry Tool & Labels
« Reply #16 on: August 07, 2012, 10:00:56 AM »
Hey Jeff,

I was helping another member here with using the GetPoints Method for a Feature Line, and saw the GetGradesAtPoint Method.

... Do you think it would be faster (programmatically speaking) to query a simple Feature Line (start & end points) using the GetGradesAtPoint Method, rather than a LWPolyline and have to calculate the elevation?  :?

Also, vlax-dump-object shows that the GetGradesAtPoint Method has three arguments, but I cannot seem to find this Method in Object Browser (with both AecBaseMgd, and AeccDbMgd referenced)... Where can I find more on this?
"How we think determines what we do, and what we do determines what we get."

Jeff_M

  • King Gator
  • Posts: 4093
  • C3D user & customizer
Re: Civil 3D Inquiry Tool & Labels
« Reply #17 on: August 07, 2012, 10:26:49 AM »

... Do you think it would be faster (programmatically speaking) to query a simple Feature Line (start & end points) using the GetGradesAtPoint Method, rather than a LWPolyline and have to calculate the elevation?  :? Adding the overhead of a Featureline may be counterproductive. All i can say is try it if you want :-)

Also, vlax-dump-object shows that the GetGradesAtPoint Method has three arguments, but I cannot seem to find this Method in Object Browser (with both AecBaseMgd, and AeccDbMgd referenced)... Where can I find more on this? This is a COM object, so look in Autodesk.Aecc.Interop.Land

BlackBox

  • King Gator
  • Posts: 3770
Re: Civil 3D Inquiry Tool & Labels
« Reply #18 on: August 07, 2012, 10:29:25 AM »
I don't know, what I don't know... Awesome, thanks!
"How we think determines what we do, and what we do determines what we get."

alanjt

  • Needs a day job
  • Posts: 5352
  • Standby for witty remark...
Re: Civil 3D Inquiry Tool & Labels
« Reply #19 on: September 06, 2014, 02:30:54 PM »
Came across this thread while writing a program similar to Jeff's. I got everything to working, but I am curious, how do you deal with arced pipes? I will say that I was writing this for storm/sewer pipes, and I've never used the arc pipe option (that I can recall :uglystupid2: ), so this is purely academic.

Either way, thank you for the nudge in the right direction for normal elevation inquiry.
Civil 3D 2019 ~ Windohz 7 64bit
Dropbox

Jeff_M

  • King Gator
  • Posts: 4093
  • C3D user & customizer
Re: Civil 3D Inquiry Tool & Labels
« Reply #20 on: September 06, 2014, 02:53:22 PM »
Alan, are you using lisp or .NET? In my .NET app I actually calc/create arced plines for the curved pipes as well. Here's a snip from the method where I add the Curve/Pipe pair to a Dictionary:
Code - C#: [Select]
  1.         private void getPipes(PipesDB.Network ntwrk)
  2.         {
  3.             curves.Clear();
  4.             foreach (ObjectId id in ntwrk.GetPipeIds())
  5.             {
  6.                 PipesDB.Pipe pipe = (PipesDB.Pipe)id.GetObject(OpenMode.ForRead);
  7.                 ///must convert Pipe object to temporary Curve object, Pipe does not support the GetClosestPointTo method we need to use
  8.                 Curve crv = null;
  9.  
  10.                 if (pipe.SubEntityType == PipesDB.PipeSubEntityType.Straight)
  11.                 {
  12.                     Line line = new Line(pipe.StartPoint.FlattenedPoint(), pipe.EndPoint.FlattenedPoint());
  13.                     crv = (Curve)line;
  14.                 }
  15.                 else //it's a curved pipe
  16.                 {
  17.                     Point2d mid = pipe.GetPointAtParam(0.5).Convert2d(GeometryUtil.PlaneXY);
  18.                     Point2d startpt = pipe.StartPoint.Convert2d(GeometryUtil.PlaneXY);
  19.                     Point2d endpt = pipe.EndPoint.Convert2d(GeometryUtil.PlaneXY);
  20.                     Point2d midcrd = new Point2d((startpt.X + endpt.X) * 0.5, (startpt.Y + endpt.Y) * 0.5);
  21.                     Vector2d vec2d = mid.GetVectorTo(midcrd);
  22.                     Point2d radPt = Polar(mid, vec2d.Angle, pipe.Radius);
  23.                     double angIn = radPt.GetVectorTo(startpt).Angle;
  24.                     double angOut = radPt.GetVectorTo(endpt).Angle;
  25.                     Arc arc = new Arc(new Point3d(radPt.X, radPt.Y, 0), pipe.Radius, angIn, angOut);
  26.                     Point2d arcmid = arc.GetPointAtParameterQuux((arc.StartParam + arc.EndParam) * 0.5).Convert2d(GeometryUtil.PlaneXY);
  27.  
  28.                     crv = arc;
  29.                     if (!(arcmid.GetDistanceTo(mid) < 0.1))
  30.                     {
  31.                         arc.StartAngle = angOut;
  32.                         arc.EndAngle = angIn;
  33.                         Polyline pline = new Polyline();
  34.                         pline.AddVertexAt(0, startpt, -arc.GetArcBulge(), 0, 0);
  35.                         pline.AddVertexAt(1, endpt, 0, 0, 0);
  36.                         crv = pline;
  37.                     }
  38.                 }
  39.                 curves.Add(crv, pipe);
  40.             }
  41.         }
  42.  
  43.  
Yes, there are a number of helper/extension methods used, but it should give you the sense of what it's doing.

cadplayer

  • Bull Frog
  • Posts: 390
  • Autocad Civil3d, OpenDCL.Runtime, LISP, .NET (C#)
Re: Civil 3D Inquiry Tool & Labels
« Reply #21 on: April 23, 2015, 06:14:11 AM »
Hello!
I wondering the same problem and donīt get it solved.
1) A LspCode here calculates start- & and-point from pipe. The x/y coordinates are right but the z-coordinate is constant 0.2 to hight.

2) When I get I want interpolate a point to the pickpoint on pipe, which way is best. Calculation or work with Polylines and get closed-point

Code: [Select]
(defun c:xx()
  (while (null (setq vEnt (entsel ))))
    (setq vEnt (vlax-ename->vla-object (car vEnt)))
    (if (= (vla-get-ObjectName vEnt ) "AeccDbPipe")
      (progn
(setq p1 (vlax-safearray->list (vlax-variant-value (vlax-get-property vEnt 'PointAtParam 0))))
(setq p2 (vlax-safearray->list (vlax-variant-value (vlax-get-property vEnt 'PointAtParam 1))))

(princ (strcat "\nElevation in Picked point: \n" (strcat "Start: " (vl-princ-to-string p1) "- End: " (vl-princ-to-string p2))))
(princ)
        )
      )
  )

Jeff_M

  • King Gator
  • Posts: 4093
  • C3D user & customizer
Re: Civil 3D Inquiry Tool & Labels
« Reply #22 on: April 23, 2015, 10:25:53 AM »
The values retrieved for a pipe are at the center of the pipe.To get the inverts you must use the InnerHeight of the pipe, divide by 2, subtract that from the desired point. Insert this into your code for that....
Code - Auto/Visual Lisp: [Select]
  1.         (setq halfsize (* 0.5 (vlax-get-property vEnt 'InnerHeight)))
  2.         (setq p1 (list (car p1) (cadr p1) (- (last p1) halfsize)))
  3.         (setq p2 (list (car p2) (cadr p2) (- (last p2) halfsize)))
  4.  

Personally, I would work with lines/arcs to get the interpolated points.

mjfarrell

  • Seagull
  • Posts: 14444
  • Every Student their own Lesson
Re: Civil 3D Inquiry Tool & Labels
« Reply #23 on: April 23, 2015, 10:59:34 AM »
The values retrieved for a pipe are at the center of the pipe.To get the inverts you must use the InnerHeight of the pipe, divide by 2, subtract that from the desired point. Insert this into your code for that....
Code - Auto/Visual Lisp: [Select]
  1.         (setq halfsize (* 0.5 (vlax-get-property vEnt 'InnerHeight)))
  2.         (setq p1 (list (car p1) (cadr p1) (- (last p1) halfsize)))
  3.         (setq p2 (list (car p2) (cadr p2) (- (last p2) halfsize)))
  4.  

Personally, I would work with lines/arcs to get the interpolated points.

yes, but would not drawing all those lines and or arcs, sort of defeat the purpose of using 3d pipes at all?   
Be your Best


Michael Farrell
http://primeservicesglobal.com/

Jeff_M

  • King Gator
  • Posts: 4093
  • C3D user & customizer
Re: Civil 3D Inquiry Tool & Labels
« Reply #24 on: April 23, 2015, 11:34:42 AM »
yes, but would not drawing all those lines and or arcs, sort of defeat the purpose of using 3d pipes at all?   
Not at all, Michael. When trying to customize C3D with lisp, one must sometimes jump through hoops to get the desired results. This is just one of those cases where using simple, temporary, linework, based on the 3d pipes, allows one to get the desired data. It is not readily available from the Pipe object itself.

cadplayer

  • Bull Frog
  • Posts: 390
  • Autocad Civil3d, OpenDCL.Runtime, LISP, .NET (C#)
Re: Civil 3D Inquiry Tool & Labels
« Reply #25 on: April 23, 2015, 12:26:18 PM »
Great thanx Jeff! I get idea too but I was not sure. Your picture in thread looks nice.
But you solved that with .NET or?

Jeff_M

  • King Gator
  • Posts: 4093
  • C3D user & customizer
Re: Civil 3D Inquiry Tool & Labels
« Reply #26 on: April 23, 2015, 12:36:26 PM »
Yes, I coded my solution in C# and the .NET API

mjfarrell

  • Seagull
  • Posts: 14444
  • Every Student their own Lesson
Re: Civil 3D Inquiry Tool & Labels
« Reply #27 on: April 23, 2015, 12:44:04 PM »
yes, but would not drawing all those lines and or arcs, sort of defeat the purpose of using 3d pipes at all?   
Not at all, Michael. When trying to customize C3D with lisp, one must sometimes jump through hoops to get the desired results. This is just one of those cases where using simple, temporary, linework, based on the 3d pipes, allows one to get the desired data. It is not readily available from the Pipe object itself.

I would count that among the many fails lurking inside C3D.....and yet it's full steam ahead trying to shoehorn MORE functions into Infraworks   :idiot2:
Be your Best


Michael Farrell
http://primeservicesglobal.com/

Jeff_M

  • King Gator
  • Posts: 4093
  • C3D user & customizer
Re: Civil 3D Inquiry Tool & Labels
« Reply #28 on: April 23, 2015, 01:52:05 PM »
Nothing 'fail' about this. They have said from the start "do not expect to be able to customize C3D in lisp, not everything is, or will be, exposed for use in lisp". Those who choose to try to do so are basically doing so at their own risk. I gave up trying to force it to work in lisp 7+ years ago. I still can't do EVERYTHING I'd like to do with the API's provided, but I'm pleased that I'm at least able to do a LOT of what I want. Unlike some other civil packages out there.

And, fwiw, C3D development is still alive and kicking.

mjfarrell

  • Seagull
  • Posts: 14444
  • Every Student their own Lesson
Re: Civil 3D Inquiry Tool & Labels
« Reply #29 on: April 23, 2015, 02:11:43 PM »

And, fwiw, C3D development is still alive and kicking.

Yes, I know however they appear to be ignoring issues with existing features/functions.
For example; long standing issues with pipes and labels and that damnable 'part builder'.
Be your Best


Michael Farrell
http://primeservicesglobal.com/

nobody

  • Swamp Rat
  • Posts: 861
  • .net stuff
Re: Civil 3D Inquiry Tool & Labels
« Reply #30 on: August 10, 2015, 01:39:23 AM »
Oh, but you can get fancier with a .NET solution. This image is of a real-time invert tracker that updates as you move along the pipe.

Hi jeff...is this in sincpac?

Jeff_M

  • King Gator
  • Posts: 4093
  • C3D user & customizer
Re: Civil 3D Inquiry Tool & Labels
« Reply #31 on: August 10, 2015, 09:48:18 AM »
Yes, Alien, it is. The PipeElevationEditor command has a toggle to go from editing to tracking.

nobody

  • Swamp Rat
  • Posts: 861
  • .net stuff
Re: Civil 3D Inquiry Tool & Labels
« Reply #32 on: August 10, 2015, 09:28:34 PM »
Thanks!