surfaces in BCAD

Took the Civil3D surface triangle data, exported to text file, imported to Bcad color coded way better than C3D can make things look.

Been working on this for a while, uses .net and subdmeshes. Soon I will have my own triangulation engine working, but C3D does that as fast as I've seen.

Comments

  • Consider trying to create a SubDmesh from a USGS import or LIDAR or some other huge data source.  We looked down this road for surface storage inside a drawing but found that even WellKnownCAD couldn't handle extremely large ones.  Small to medium was fine but large to huge failed.
  • Hi Terry,

    I just tried a 10m USGS DEM, and that gace a 3 million triangle surface. That is about double what I had tried before. I was able to save that as the format my prog uses, basically a text file of points and triangle vert indexes. The save took 2 minutes, and the display as color meshes too another 2.

    I am currently using Civil3D to do the triangulation, then saving that out, but that could change as I try out the ceometric.com engine I am going to use for that.

    I avoid storage of civil data inside a drawing, though I do it for my version of civil3d feature lines. I have never seen a good implementation of sharing data stored in a  drawing, and every example of progs that store data outside work well for what they try to do.

    Subdmeshes hold their points and triangle index lists though, you could use a bunch of them to store the data, then extract and process a bit to reconstruct the original set of triangles. That should scale well, but what would be the point?

  • Hi Terry,

    I just tried a 10m USGS DEM, and that gace a 3 million triangle surface. That is about double what I had tried before. I was able to save that as the format my prog uses, basically a text file of points and triangle vert indexes. The save took 2 minutes, and the display as color meshes too another 2.

    I am currently using Civil3D to do the triangulation, then saving that out, but that could change as I try out the ceometric.com engine I am going to use for that.

    I avoid storage of civil data inside a drawing, though I do it for my version of civil3d feature lines. I have never seen a good implementation of sharing data stored in a  drawing, and every example of progs that store data outside work well for what they try to do.

    Subdmeshes hold their points and triangle index lists though, you could use a bunch of them to store the data, then extract and process a bit to reconstruct the original set of triangles. That should scale well, but what would be the point?

  • OOPS. Keep us informed on your progress. This is very interesting!
  • I put together some test code (attached) to build a SubDMesh in a rectangular fashion similar to a DEM that prompts for a number of rows/cols.  On WellKnownCAD I was able to get to 1000 (1005 failed with "eOutOfRange").  At 1000 it was generating 1,000,000 Vertices, 4,990,005 Faces.  On BricsCAD it goes into an apparent lock up mode instead of returning an error code within a reasonable amount of time.

    I don't think there is an index bug in the test code because I tried every number between 3 and 101 and it worked.  It would have been nice to have a surface display object and we were excited about the prospect.  You may be able to use the object within a corporate environment by telling users that you have to stay within a certain limit.   We can't use it because we have DEM files that are 1201x1201 and even that is less than 10% of the size of some surfaces we have been sent sample files for.

    meshtest.txt

  • just split triangles into groups of 20,000, and do multiple meshes, seems to scale as large as I can test it :)

    To reconstruct, grab points and tris from mesh, and do some processing magic to remove dupe points and re-index tris.

  • The thoughts of splitting into chunks isn't appealing and binding individual objects (like 3dFaces) into a block chokes the engine(s).  However we have a plan that might replicate the surface display style from Ciivil3D, still working on the details.
  • I agree, splitting was plan B. The results and speed have been great though, making me think it should have been plan A since its so stable.

    The colors have that bug in bcad though so that is an issue. Bcad support is working on that for me.

    I am very curious to hear of other ideas, and am wondering what c3d does. You can color a whole face like c3d by adding dupe points to the mesh. So each triangle has its own points.

  • I've been experimenting with the Tin/surface released in v20. It is fast ... worth visiting

  • And v20 implemented a decent start on a .NET API. I did a triangulation test on a Lidar tile of 14.5 million points (no breaklines) and it completed 20% faster than the HighC engine. I've put in a few requests for API additions, which could be handled in .NET extensions until they (hopefully) implement them (faster). All in all it looks like a foundation for the future.