[cad-linux] Re: Design methodology for an open geometric data management standard

  • From: Bruno Postle <bruno@xxxxxxxxxx>
  • To: CAD Linux list <cad-linux@xxxxxxxxxxxxx>
  • Date: Sun, 7 Sep 2003 20:04:10 +0100

On Sun 07-Sep-2003 at 07:47:37PM +0200, Janek Kozicki wrote:
> 
> As a general reply to your post. I'd like to allow myself to post
> what Bruno said about data management standard. I think it's
> important and should be said here.

Ok, though obviously these ideas changed in the course of doing an
implementation.

> Bruno said:
> 
> > Here are my requirements for a properly open and RCS-able CAD
> > file format:
> 
> > 1. Text only, <cr><lf> delimited, human readable.

The <cr><lf> delimitation part is unnecessary, this was an attempt
at Windows compatibility; but in practice protocols like email, cvs
and even zipping pretty much solve these line ending issues.

> > o  Packaging via zip.

Actually packaging via zip is an acknowledgement that proper network
means of transmission have failed.

One of the annoyances I have with the way OpenOffice zips data is
that it just makes it harder to script.  They realised that a
collection of files for each document is the right way to go, but
chickened-out and stuffed everything into a zip file - hoping that
nobody would notice.

> > o  One line per data item.
> >
> >    The entire contents of a file might look something like this:
> >
> >       Centre-X: 345.678
> >       Centre-Y: 9876.543
> >       Centre-Z: 0.0
> >       Radius: 246.8
> >       Transform: 1, 0, 0, 0, 1, 0, 0, 0, 1
> >       Units: millimetres

Maybe I'm just lazy, but I found it easier to parse by using
ordering instead of specifically labelling dimensions:

      0: 345.678
      0: 9876.543
      0: 0.0
      Radius: 246.8
      Transform: 1, 0, 0, 0, 1, 0, 0, 0, 1
      Units: millimetres

(This has the added advantage that it is extensible to
hyperdimensional spaces with more than 3 dimensions :-)

> > o  Polymorphism via diff/patch files.

Ignore this idea, I found a much more elegant way of implementing
polymorpism that uses multiple inheritance and a fine-grained
ignore-list method for overriding specific elements.

> > o  RCS-able data, revisions are managed by CVS or Subversion.

I did some performance tests, and at the moment, Subversion really
doesn't have the necessary speed.

> >   With Subversion, each drawing would have a public permanent URL
> >   accessible via the web.

This would be cool though.  With Subversion, every tagged release
version can have a unique URL.

> I just copied this from freearchitecture mailing list (which
> unfortunately seems now quite dead).

Hopefully it isn't dead forever, the main motivation for looking at
basic file formats is to promote the same practices in architecture
that we already use with open-source software.

-- 
Bruno

Other related posts: