[cad-linux-dev] Tell me why this won't work, if you would be so kind.

  • From: "Jeffrey McGrew" <JMcGrew@xxxxxxxxxxxxxx>
  • To: <cad-linux-dev@xxxxxxxxxxxxx>
  • Date: Tue, 11 Nov 2003 20:52:14 -0800

Just wondering something...

An idea has been rattlin' around my head for a long
while, and I thought I would post here to ask what others
think about the feasibility of it.

I've been heavily using a object-orientated parametric
cad system for the last two years (AutoDesk Revit).

I've been getting heavy into Radiance, which has a very
robust way of describing 3D geometry using plaintext.

I've also been getting into Python, and see that it
can be object orientated, jive with OpenGL,
is portable, has UI widgets, and is very robust
while being easy enough for non-programmer to use.

Finally, I've been looking at CVS revision control
systems, which allow for server-side management of
text & binary files. Typically these are used by
software developers, but can really manage any
information.

OK, so something clicked, and here's my big
(probably horribly flawed) idea, that I want
y'all to tell me why it won't work:

Would it be possible to make a 3D parametric
CAD system by using a robust plaintext with
a highly modular organizational system for
geometry storage, a second XML file with the
same name for the CAD system
to understand what an object 'is',
uses Python as the code base,
uses a GUI of primarily traditional 2D views
of the 3D data (plans, sections, elevations,
schedules, ect) and extensively uses the CVS system
to allow people to work on the same projects
at the same time.

What I'm thinking is that the building
would be a collection of plaintext objects,
named & organized in a system-defined way,
or divided into a geometry file of Radiance
format & a plaintext file of it's parameters
within the system (a XML format
to describe what the objects are to the
CAD system- such as 'I'm a door' and such)
instanced, 3D, modular, and completely
object-organized (ala Inventor or Revit-
no layers); this in turn is hashed upon by
both a GUI-driven system of python programs
that do various tasks and are arranged to
present itself as a monolithic application,
ala Blender or Sketch, and also by 'blind'
processes of command text-manipulation
line tools & custom command line tools;
In turn this data is parsed to generate
2D views & sections, 3D views, schedules,
renderings, and more, which are saved out
also as plaintext XML files that simply
describe where to cut & crop the model,
how to present the information if you will;
and CVS is used to manage who's doing what
to which part of the building at any point in time.

What I'm thinking is that a user would use
the GUI to open up the master project file,
which would list all the drawings/schedules/
views/renderings within the project, they
would pick a drawing/set of objects to work on,=20
CVS would check out that part of the building,
the system would parse that plaintext
data and show a 2D or 3D representation of it,
which the user could manipulate, along with a
'background' of the non-checked out data
that they couldn't edit, and as they made changes
to the objects on screen the application
would echo those changes back to the plaintext
files, making the necessary edits to both
the geometry files & the XML content files,
and when they released that part of the
building, the CVS system would update
and/or merge the plaintext files back to
the server & allow for the user to make
comments along with the work.

Sorry to dump on the list, this is
something that I've been thinking
about for a year or so, and just recently
it 'clicked' and I kinda wanted to write
it all down. I'm an Architect, who's getting
heavy into 3D and programming, who's very
interested in creating a bi-directional,
parametric 3D CAD system for Architects
(even tho this is totally and completely
beyond my current ability :)

OK, so why does my idea suck? :)
Am I totally barking up the wrong tree?
Would plaintext just be too slow?

Jeffrey McGrew

Other related posts: