BoxCAD is in a bit of a transition right now. It started a few months ago as a scopeless actionscript learning project, and gradually morphed into a potentially powerful development tool (not to mention an addictive “toy”). When I started working on BoxCAD, I only had a very rudimentary understanding of OOP. As my design thought process has shifted with my understanding of OOP, BoxCAD has undergone several major overhauls. Very little (maybe 5%) of the first functional version’s code exists at all.
I am very slowly (for lack of time) performing what I hope is the last major architectural overhaul. Every component is nearly independant from every other component, with very tight interfaces between. But I do mean “nearly” – as in, it’s still pretty sloppy and idiosyncratic here and there.
The result of that is … quirks. Mainly in mouse handling, where I’ve simply lost track of what’s going on because so many different parts of BoxCAD have access to cursor states, cursor visibility, snap states, etc.
So it’s slightly irritating to use right at the moment.
But it’s almost there, and once it is, it is going to be extemely easy to add new functionality and tools with a very simple, but comprehensive API.
Of course, the whole initial point of BoxCAD was for developers. At the moment, code dumping is not functional, because it’s obviously prequisite that the application be solidly capable of creating something to dump the code for. But, it is very nearly so, and dumping of at least standard objects and joints isn’t too far out. It is #2 on the priority list.
One neat recent addition is the automatic posting of screenshots on save, so you can show off your incredible designs…
Here are some nice treads to get you started (new window):
Regarding big-picture future plans – one thing I’m particularily excited about is scripting. I found a run-time AS3 parser (can’t remember the link right at the moment) which means the scripting will be in AS3, and will have about the same API as the full-on API, AND it will be accessible from the browser – so experimenting and sharing will be very simple. So I’m HOPING maybe some form of a community will develop, and really push the capabilities of what flash and physics engines can do.
A couple of other things that keep me obcessively motivated:
- When BoxCAD is mature with box2d, I want to develop a “Physics Abstraction Layer” (PAL), to allow other physics engines to be swapped in. I’d love to support a verlet engine like APE, and it would be fascinating to swap engines in near-realtime to see differences in behavior and speed. This would require that BoxCAD have it’s own, generic physics model with a public API. Then, to add a new engines, one would simply have to create a “driver” to map the engine to BoxCAD’s generic model. Needless to say, that is a ways off.
- I almost had an accident when I thought of this one: BoxWARS! I would like add a multi-user mode to BoxCAD, with persistent “accounts.” Imagine something like – each user having a territory, starting with resources, building defenses, then building offense “robots” to attack other territories. Of course there would have to be limits on forces, velocities, masses etc, but it would basically be up to clever design to … “win.” And with AI via scripting… wow.
A couple of things I want to do really really bad, but can’t quite find the time:
- I built a mechanical NOT gate the other day. Now I just need to build an AND gate, and I will have NAND – the fundamental building block of digital circuits. For some reason, I want to build some simple digital “circuits” with mechanical gates really really bad.
- I’ve made a couple of feeble attempts to build a clock’s pendulum and escapement mechanism, but BoxCAD doesn’t quite have the mechanical functionality necessary to do so easily. But it can be done! It MUST be done…
- I saw some demo’s of Papervision3D being used to create an extruded view of a box2d model. Adding that limited 3D viewing functionality would be freakin’ awesome. Can’t remember the link. I’ll post it later.






