Feedback from chrkorn

28 views
Skip to first unread message

Matthew Keeter

unread,
May 24, 2016, 8:40:55 AM5/24/16
to antimony-dev
From this issue on Github:

I'd like to provide some thoughts for discussion. Opening an issue may not be the most appropriate form for doing so - it was chosen because I was unable to find something like an Antimony discussion forum.

Background: I'm a mathematician working in IT with experience in software architecture, developing 3D-related applications of various kinds, but (being a 3D printing enthusiast) also with experience in 3D modeling, mostly of technical parts, for which I use OpenSCAD (only for very "mathematical" parts) and Geomagic Design (which provides parametric modeling very similar to SolidWorks).

Recently, I tried Antimony and immediately fell in love with the concept, particularly as it visualizes dependencies without restricting a tree to production of one single entity (as, effectively, Geomagic does in part design). Quite often, I model larger parts which then need to be broken up into multiple smaller parts, a tedious task in Geomagic - but this can easily be done in Antimony in a single graph.

I tried to use Antimony on a real world project - but did not get very far. Parts often require cutouts to be placed on faces that are not necessarily perpendicular to the default planes. In Geomagic, I can select the face and construct a 2D sketch on the corresponding plane (later to be extruded) - or, I can construct reference planes and axis defined by distance to existing planes, intersection of planes and axis etc. In Antimony, I can of course apply any transformation I want, but not without calculating the transformation parameters in some way, there is no single way to say 'place this on top of this cylinder' or 'use the plane in which these two edges lie'.

Somewhat related to this is the need to identify faces and edges - imagine a cube with chamfered edges around one face, somehow you need to pick either the one face or the four relevant edges. These selections need to be somewhat persistent with regard to changes in other nodes: if the cube changes dimensions, the selected face should remain the same.

Lastly, as has already been discussed, what I also miss sorely is a constraint system. I have thought about this and believe there is a way to implement this without necessarily ending up in circular graphs. Imagine constraint nodes ('this face must be coplanar to this plane', 'the distance between these two points must be x' etc.) having as input the relevant shapes/faces/edges/points and a general transformation node (allowing translation and rotation) which takes as inputs the shape it transforms and a number of constraints. So far, the resulting graph can be calculated without circular references. I believe most, if not all, situations could be represented in this way - certainly assembly of parts can be achieved. A similar scheme would be useful in 2D construction of sketches (to be used in extrusion etc.), where constraints in Geomagic are a very valuable tool in placement of arcs, lines etc.

If these features were available, Antimony would become an extremely powerful tool, vastly cutting down modeling time. I have looked at the sources, though I won't pretend to understand them in depth yet. My current impression is that identifying edges, points and faces of shapes won't be an easy task.

Then, of course, it's entirely possible I missed possibilities Antimony already provides - due to, maybe, thinking too much along Geomagic principles. Either way - I'd greatly appreciate feedback on these rambles.

TL'DR: To become useful in efficient construction of real-world geometry, Antimony needs ways to construct reference geometry (planes, axis, points), to identify faces and edges in a semi-flexible way and to implement a constraint model. This post suggests how this might work, on a very high level.

This is great feedback, and I’ll be writing up a longer reply to discuss the points that chrkorn raised.

-Matt
Reply all
Reply to author
Forward
0 new messages