TinSurfaceTriangle and its vertices direction in AutoCAD Civil 3D

By Partha Sarkar

Recently I
was working on a project and I had to use TinSurfaceTriangle object
to access the Surface triangle vertices. You might be knowing already that TinSurfaceTriangle
class encapsulates a triangle in a TinSurface in AutoCAD Civil 3D.
TinSurfaceTriangle type exposes the following members –

 Vertex1 – > Gets the first vertex in the
triangle. 

 Vertex2 – > Gets the second vertex in the
triangle. 

 Vertex3 – > Gets the third vertex in the
triangle.

 

One question
came up during our discussion – in which direction (clock-wise or
anti-clockwise) these vertex points are counted. So, to figure out that I did a
quick test to iterate through the vertices and see which direction they are
returned by Civil 3D API. Here is the result which shows us the direction :

SurfaceTriangle_Direction

 

And the C# .NET code snippet I used :

using (Transaction trans = db.TransactionManager.StartTransaction())
{
  TinSurface surface = trans.GetObject(surfaceId, OpenMode.ForRead) as TinSurface;
 
  TinSurfaceTriangleCollection tinSurfTrianglColl = surface.GetTriangles(true);
 
  if (tinSurfTrianglColl.Count > 0)
  {
    foreach (TinSurfaceTriangle tinsurfTriangle in tinSurfTrianglColl)
    {
      // Vertex1
      Point3d pnt3d = tinsurfTriangle.Vertex1.Location;
      ed.WriteMessage("n Vertex1 ::  X1 : " + pnt3d.X.ToString() +
                      "  Y1 : " + pnt3d.Y.ToString() +
                      "  Z1 : " + pnt3d.Z.ToString());
 
      // Vertex2
      pnt3d = tinsurfTriangle.Vertex2.Location;
      ed.WriteMessage("n Vertex2 ::  X1 : " + pnt3d.X.ToString() +
                      "  Y1 : " + pnt3d.Y.ToString() +
                      "  Z1 : " + pnt3d.Z.ToString());
 
      // Vertex3
      pnt3d = tinsurfTriangle.Vertex3.Location;
      ed.WriteMessage("n Vertex3 ::  X1 : " + pnt3d.X.ToString() +
                      "  Y1 : " + pnt3d.Y.ToString() +
                      "  Z1 : " + pnt3d.Z.ToString());
 
    }
 
  }
 
  trans.Commit();
}

 

Hope this is
useful to you!


Comments

Leave a Reply

Discover more from Autodesk Developer Blog

Subscribe now to keep reading and get access to the full archive.

Continue reading