Accounts

Boolean Operations in AoI are a little bit cumbersome. For example: you can't union more that two objects at once. So creating a union of more objects creates many intermediate objects. Even worse: Once you want to change the position of a hole for example you have to do almost everything all over again. If only AoI was a little smarter...well it can be scripted and its even possible to write plugins in Java.

So some month ago we thought up a plan for writing a plugin that would use the tree structure of the objects that is already available in AoI to create a description of the boolean operations that need to be done to create the object you want. The description would be coded as a tree where the parent nodes represent the operation that needs to be performed (union, difference, intersection) on the child objects. So you could decide to move some of the objects or change the radius of a hole for example and just re-evaluate the tree to get the right object. No more intermediate objects! Marius and Stefan did most of the programming and now it works :)

For the future I have some ideas how to make this even more useful. I always wanted AoI to be more of a CAD tool. Why can't I write a formula into the radius property of a sphere? And have some variables (which are just key-value pairs) that parametrize the object. So it can not be used only to make ONE object but a FAMILY of objects that can be fit to your exact needs. For this to work you either have to change AoI or simply extend the existing plugin a little bit. Now already we have nodes like "intersection" and "union" that are basically just function calls! When the evaluator sees a node named "union" it knows what it has to do. So why not add another handler named "CADSphere" for example? If you named a node"CADSphere(diameter/2, 0, 0, 0)" it would be evaluated to a sphere with the given parameters. That parameters could be given by a formula like "diameter/2".