I recently came across your liquidPCB site and it embodies a lot of ideas
that I had come up with independently. I was going to have a go at making
a non-sucky PCB layout editor using Python and Cairo. I was also going to
start a STEP library independent of opencascade a couple years ago, but I
got overwhelmed by the piles of documents written in standards-ese
language. It might be easier and more useful to start with IGES first,
which has excellent and freely available documentation. How are you going
to get the ISO STEP standards documents? They cost about $15k for each AP,
or so I hear. BRL-CAD has offered access to them if you are willing to
make a converter to/from BRL-CAD format.
Right now I'm working with a loose group of people at
openmanufacturing.net on some free-libre automated dependency /
functionality analysis software[1], for answering questions like "how do I
build a spaceship with what I've got laying around?" and then printing
step by step instructions on how to do it. You might be interested in some
of our discussions. We are desperately in need of a minimal yet hackable
solid modeling CAD program for distributed collaboration.
ciao,
-fenn
[1] http://heybryan.org/mediawiki/index.php/SKDB
> What makes my life difficult (doing robotics) is that I have one
> application for mechanical CAD, one for CAM, one for the schematic and
> one for the PCB. They're all different, have different interfaces and
> don't always talk to eachother nicely. To make it worse, two of them
> run on Windows and two on Linux! Argh.
Jef Raskin is rolling in his grave...
> The other thing is, all the documents depend on eachother. I.E. If I
> make a change in one, then I have to, manually, propogate that change
> through the others. Sometimes I forget to do this, and end up having to
> re- manufacture something.
This is a major bummer, but how do you go about specifying the
dependencies? There are some non-obvious side effects (to humans too!)
like, if I move this strut here, it will make a ground loop. Or, if I
change this capacitor to 1 Farad it throws off the weight balance. It
seems like you would have to write unit tests for your end product's
desired functionality, and then run it in some super duper multi-domain
simulator. Of course a simple interference fit check would solve 95% of
manufacturing problems.
> What I'd love is if they could all be in the same application. In fact,
> it would be even better if they were seamless. It would be great if I
> could have all my CAD documents for one project literally open in the
> same window.
>
> Imagine, in the instance of mechanical CAD, one window containing a huge
> spread of tens or hundreds of solid model parts. All spread out. So you
> can zoom out and get an overall view of all the parts of a robot hand,
> say, or zoom in and edit one part. Inbetween those parts would be
> arrows showing which docs depend on which others. When you edit one
> part, others would either automatically change, or become highlighted to
> let you know they need attention. Some of these might be asssemblies,
> so, when you edit one part you see it instantly change in the assembly.
This sounds terrible. Why would you try to convert your 3D geometry into a
2D layout? And do you really want different documents in the same window?
Why not one for the whole project? Or, the other extreme is something like
http://www.bruno.postle.net/neatstuff/draft/
(which is very much what you're after, after all)
> Other documents might then be PCBs, which are also part of the
> dependency tree.
>
> Model of casing --> Model of PCB --> PCB layout <-- schematic
>
> I don't know if I've made this very clear. Another way to think about
> it is: To switch from one document (e.g. solid model or pcb) to another
> in your project, rather than using ctrl-tab, you'd just scroll over
> there, or zoom out, then zoom into the document you want.
Just rotate around the cad model until you see the pcb, then click
on the pcb to edit it (and perhaps some nifty automatic view locking to go
into 2D pcb editing mode, but this shouldn't be required)
> Basically, this is a kind of window manager, where each type of document
> is handled by a plugin or something. And somehow the documents can pass
> information about events or updates to eachother. So, if I click on a
> net in my schematic, then the relevant traces on the PCB could
> highlight.
Event passing can be done between applications in most modern GUI
frameworks. Hilighting nets between schematic/layout is brain-dead
obvious, and I seriously wonder why it isn't a standard feature of EDA
packages.
> People could then write more plugins. For example, someone might write a
> stress analysis plugin. So, you see a document with the results of a
> stress analysis there among your other docs. It would automatically
> update when you make a change to the part it's analysing.
What I really want is an algorithm to automatically find the optimum
geometry for the constraints I've given it. But, having a real-time "play"
mode with various physics simulations would be very useful too. I saw on
your webpage some beginnings of this:
http://freespace.virgin.net/hugo.elias/models/m_cloth.htm
http://freespace.virgin.net/hugo.elias/models/m_ffire.htm
> Other plugins would be importers and exporters. For example a STEP
> exporter. Again, when I make a change to a solid part, the STEP exporter
> automatically updates the STEP file on disk, to make sure it's never out
> of date.
How does it not bog the system down? This can already be done with "file
alteration monitor" or similar.
> Again, this is all a mad lot of work, but I think it would make an
> amazing platform for open source engineering.
>
> Any thoughts ?
I jotted down some similar ideas here a couple years ago:
http://fennetic.net/cadwiki/
> Hugo
-fenn