Hacker News new | past | comments | ask | show | jobs | submit login

Ao's author here – I'd be glad to answer questions.



Second on mind being blown. Great work you have done here!

Long time 3D/CAD Schemer/Lisper here. I've tried OpenSCAD, programming FreeCAD in Python, Blender3D, and others. AutoLISP was OK as long as you had AutoCAD. Creating parametric shapes in Blender3D in the mid-2000s was cool.

I had used SDRC's IDEAS and AutoDesk Inventor for work, but I was always looking for a more programmatic way of doing things, since sometimes the concepts were more 'organic'. Tools like Rhino at the time were grabbing some of that market, and they had scripting. I dug into Open Cascade a bit, but I am not as skilled as you are, and I got lost in their link to analysis tooling too.

I think the term computational design is a good one. The same way I think computational intelligence is better than the artificial intelligence moniker.

This project, Rosetta, seemed interesting in using Racket to bring a general CAD programming language to work as a Front end for various CAD systems - Rhino, AutoCAD and future ones [1] [2 PDF].

I will be following you closely, since I think your other projects are cool too!

[1] http://web.ist.utl.pt/antonio.menezes.leitao/Rosetta/tutoria...

[2 PDF] http://papers.cumincad.org/data/works/att/acadia11_196.conte...


I am writing another comment here since I just had a play with Antimony and boy do I have to say my mind has been blown.

Please please please tell me that you intend on either keeping that project alive or moving it's features into Ao. This is the first CAD software I can understand.

It not only combines the logical ordering I have grown to love as a programmer but the instant feedback of playing with legos. It's the only way I can describe it.

You've blown my mind completely tonight. I've stayed up 5hr after when I like to hit the hay just to play around with this software and am I amazed.

Really hope to hear back on this.


Glad to hear that you're enjoying Antimony!

I'm planning to keep either Antimony or something similar alive into the future. Antimony is approaching convergence, so development has slowed down – not sure whether major new features will land there or in a successor (because I'm not sure what the next big features should be).

The trajectory may be to use Ao's kernel plus a new graph engine to make an Antimony successor. Ao is a powerful system, but I'd like to keep providing a tool with a friendlier UI and lower barrier to entry.


I've been a programmer for a very large portion of my life and have to say that I, personally, don't feel that code is an appropriate way to express 3d shapes. This is in my opinion of course.

For you, given your obviously gifted talent for this sort of thing, it might actually be much much easier just to have a software interface. I don't thing most of the population is like this.

I'd say for most a visual graph display is more natural a conversion of our ideas to shapes then text is. That combined with the live updating models and you've got yourself a winner.

For the more technically inclined you also get to play around with ADDING blocks (via the script block) which is a perfect bridge between the technical side and the conceptional side.

As for features, I'd like to suggest a few things that might be helpful.

For the node graph system, I'd say take some ideas from Unreal's UDK.

  1. Comment Blocks that can be dropped around large block groups
  2. Ability to rout "cables" the way you'd like (Snap to a "junction" then to where you'd like to take it)
  3. Select colors of wires.
  4. The ability to collapse and expand XYZ from floats to a Point object (making it a single value) for nicer routing.
  5. Variable declaration
Outside of that, something that would be interesting for larger scale design, it would be nice to be able to load multiple "mini-projects" into one larger project. When designing an engine for a car it would be nice to be able to make every complex shape it's own project. From that state you could import it into a larger complex project to fit all the parts together how it should look in the end.

That alone would be a massive undertaking. But my begging hand is still out: I'd like to be able to "simulate" what will happen. Adding this feature takes your project from simply being one of the best open source CAD projects I've ever seen to being one of the best cad projects I've ever seen. For me rivaling the usefulness of Fusion 360, Autodesk, Creo, the likes.

Aside from that, maybe add a more traditional interface in which I can right click on the model and say "3d->extrude>cylinder" and visually in the model edit the project while also changing the node graph.

I've got to say this if no one else has told you this yet: you're on to something big with this software and I DO hope you keep it up. You're building something that will bring engineering into the hands of us mere mortals. Coming from CS it's crazy to find the huge lack of open source tools and documentation in this space that you are seemingly fixing single-handedly.

Keep up the good work! Well, I should say the amazing work!


Your projects are really impressive! Can you tell us a little bit about your background, and how you developed a proficiency with graphics programming?


I started this kind of tool-building in grad school, where I implemented a bunch of algorithms from the research literature and combined them together in interesting ways.

Implementing interesting algorithms is a good way to get a feel for the problem space, and it drags a bunch of the UI/UX considerations along with it – once you've created the crux of a particular tool, how do you expose it to a user (or just yourself while testing) in a way that makes sense?


What about it is impressive? Could you elaborate?


What separates this from Antimony? Would you use one over the other in certain contexts? Why?


Antimony [1] is stable and user-friendly. You can get started without knowing about the underpinnings, just by connecting predefined shape nodes into a graph – basic modeling is possible with just the mouse, as shapes can define handles in the UI. Using Python for scripts is also a bit more accessible than Scheme. The downside is that hacking raw shapes is less pleasant, because they're defined as strings implementing a DSL. Developing on Antimony is also slower – much of the code is UI and glue to attach the geometry + graph engines.

Ao is more experimental and unstable. It's much lower-impedance for folks that want to work directly with f-reps, but doesn't have a click-and-drag UI with which to get started. The geometry kernel is also newer than Antimony's, and has slightly better performance. From a development perspective, I can play more easily with new algorithms without a cumbersome UI.

For folks that aren't as comfortable with coding, Antimony is the right choice. For f-rep development, Ao is the right choice. Otherwise, it's a matter of personal preference.

[1] https://github.com/mkeeter/antimony


I wouldn't say Python is more accessible. Considering this will be used by first time programmers who just want to design to print, and given that Scheme has less semantic baggage than Python, I'd wager that it's a better choice. Also, the data-driven nature of things is more natural to manage in a Lisp dialect.


I think it'd be killer if you could combine the user interface of Antimony with the same inspectability Ao. What would it take to achieve an Antimony-like UI on top of Ao?


I'm currently writing a toy library to play with hierarchical graphs – if Ao is a minimal implementation of Antimony's CAD, this will be a minimal implementation of the graph engine.

Beyond that, it's a small matter of programming – I'd want to find a UI paradigm / library that's less cumbersome that Antimony's, as the UI programming adds a lot of impedance to development.


Do you have plans on creating tutorials for walking people through modeling basic things?

I've wanted to get into doing some ME stuff but I can never get past how "made by engineers, for engineers" CAD software is.


Having looked through some of your other projects there is some really amazing work you have done. I was wondering the graph node code you wrote. What does it use for library to render them to the screen?


I assume you're talking about Antimony. Its graph UI is done in Qt, using the QGraphicsView framework. That section of the code is at https://github.com/mkeeter/antimony/tree/develop/app/canvas


I've been foaming at the mouth to try Ao. Are you ever planning to make a Unix or Windows release?


Folks are building it on Linux already, generally with success (and failure to build on Linux is considered a bug, so raise a Github issue if that happens).

Windows is less likely, as Guile (an FSF project) doesn't have an officially supported build. It looks like people have made it work [1], but there would be a lot more messing around involved.

[1] https://github.com/Madsy/guile-automatic-build




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: