[freearchitecture] An open CAD file format -- SQL db

Steve Hall digitect at mindspring.com
Mon Feb 17 14:18:43 GMT 2003


Ok, so the big idea we've been discussing is a way to version CAD
files for the purpose of creating a CAD detail library that could be
improved by any number of contributors, without losing any particular
snap shot along the way.

It might be helpful to say here that this discussion doesn't help us
get to a detail library in the short term. (Like the user-moderated
file posting system at http://www.vim.org/scripts.)

Neither does it start to resolve any of the basic standards
considerations we'll have to make as previously discussed:
* Measurement standards (English, metric)
* File format standards (DWG, DXF, XML)
* CAD drawing standards (lineweights, colors)
* Drafting standards (numbering, symbols, text)
* Block or parts standards (steel shape AISC W36x182)

But it's still fun. :)

So I wanted to flesh out my database-as-CAD-file idea for the record
before we move on:

* The CAD file is an SQL database. Individual tables handle each
   entity type (line, circle, binary objects, etc.). The database could
   be local to the app, shared by many users on a network or <gasp>
   over the internet.

* The file is loaded/refreshed by querying the database. Selected
   portions can easily be filtered on or off by query.

* Edits to the drawing update the database. Save transactions are
   logged by time and user for a progressive versioning (undo), and can
   also be benchmarked by name for release/edition snap shots. Edits
   might be saved in files apart from the checkout data (like diffs)
   for faster updating.

* Both the temp file on local disk during editing and the exported
   file for distribution have the same format: human readable SQL
   statements defining CAD entities along with associated files and
   relative path references for any other information better suited to
   binary format (rasters, PDFs, WP spec documents, etc). (Binary
   references could also be translated to base64 or packaged in a file
   store.)

* Both exported and working files use login and time stamping for
   later synchronizations if desired. These can be atomic by entity so
   that only the updated entities are versioned each time.

* Updates are possible by multiple users. The CAD app can be set to
   update automatically or manually.

* Complex permissioning can restrict reads or edits of drawing
   portions by entity type, editor, coordinate, version, view, etc.

I think a system like this would have a lot of benefits despite the
likely speed drawback. Storing info via db is so flexible that it
makes sense to me to collect CAD info this way, too.


--
Steve Hall  [ |digitect|AT|mindspring|DOT|com| ]

Try Cream in your Vim... it takes the bitterness out!
   http://cream.sourceforge.net





More information about the freearchitecture mailing list