← Back to context

Comment by addaon

3 days ago

For my airplane design, I've used Rhino3D (which is 3d modeling, not CAD), and used their Python-based plug-in API to create a very custom, limited scope parametric CAD on it... using a mix of geometric and aerodynamic parameters, and using vortex lattice methods to bridge between them. So the wing chord (MAC) can be set in centimeters, but the wing span set to achieve a specific modeled climb rate. It's all very ad hoc, but also lovely to develop in. Hit run, in three seconds have a freshly-generated OML, use Rhino's UI to make a few changes, confirm I like them, then move those changes to code and re-run. Hit undo/redo a few times to compare the hand-drawn and generated versions, then move on to the next feature.

Do you find you prefer python to grasshopper? I loved how easy it was to connect data sources to geometry, and feedback is instantaneous. never tried the Python plugin.

  • (a) I started this before grasshopper was mature enough to use. (b) I haven't looked too much into grasshopper because of that, but my impression was that the version control story was basically non-existent. As pure text, Python is easier to change review and to version. (c) Having a "real" language to bridge to other languages is fundamental for what I'm doing. For example, the panel code is written in Fortran, and the CFD libraries are written in C++.

Why would you say Rhino 3D "isn't CAD"?

  • Well, it's certainly not parametric CAD -- it's a drawing program that happens to be in 3D, with limited (and, I'm very glad to see, growing) ability to use history for some more structured creation. But the biggest limitation is that it's numerics are mediocre, and subtle -- everything is in float space, and it's very easy to get into a space where things just don't make sense, especially far from the origin. In a CAD tool I'd expect to be able to enforce constraints to resolve this ("these two points must match"); I've been able to do that somewhat with my plug-in when the precision is there but the error stack-up has been too high, but there's also cases where the precision just doesn't exist.

    • You're in luck! As of a year ago, I work at McNeel on the math team on Rhino's in-house CAD kernel. Luckily, we own the entirety of the kernel, so we are free to improve it. I've been in the field of numerical methods for most of my career in academia and industry, so you are preaching to the converted when you say that Rhino's numerics are mediocre. At McNeel, I'm actively pursuing strategies to improve this situation, although it will be a massive long term project.

      Hopefully you know that you can reach out to the McNeel developers directly and on the Discourse forums. But I would also love to chat directly if you're interested. It sounds like you're working on a project that is both sophisticated and interesting, which directly stresses many of the known pain points in the kernel. If you're interested, I can shoot an email to the address you've got listed in your profile from my McNeel email.

    • I think this definition is a bit too strict. CAD just means computer aided design. Architects use Rhino to design buildings. You use it to design airplanes. CAD doesn't even have to be 3D.

      3 replies →