Evaluating rhino for development purposes

Hello Rhino people.

I haven’t purchased Rhino yet, I’m still evaluating. I’m a software developer with a background in CAD and mechanical engineering. I am looking for a CAD system which can host my software. I am most familiar with AutoCAD and Solidworks, but I find Rhino’s comparative low cost and high sophistication to be appealing. My software is quite different from Rhino’s approach to modeling. Where Rhino is highly visual and interactive, my software is a form of object oriented programming called knowledge based engineering and is good at creating engineer-to-order applications. Engineer to order applications can present blazingly fast reconfigurable designs to the end user when authored correctly, but it’s not an artsy process, its computational. It generally takes some math and design skill to do this, but I’m investigating approaches to make it less tedious.

I’m trying to figure out some things about Rhino. I am interested in modeling/command history. I noticed that the only way to create a history record is if a command takes another object, such as a curve as input. For example, creating and Arc and then executing the command ExtrudeCrv with the arc as input will create a history record. I can then analyze this history record to extract information about relationships between entities and which particular constructors were used to create the dependent entity. Unfortunately I have not determined a way to get any history on normal commands without dependents. For example, it would be good to know when creating a circle whether it was a tangent-tangent-radius construction or a three-point construction and what those input values were. One cannot glean the wealth of information about design intent from a flat database of entities, so I need to examine the process as much as the result. If anyone has any information on how to get modeling history from Rhino please let me know as the API documentation does not explicitly explain.

Also, I’m interested in the Mac version of Rhino. I think Macs are becoming a better platform for CAD than they were in the past. Does anyone know of any caveats to developing ARM64 shared object as a Rhino plugin on the Mac?

Thanks,
Andrew Wolven

Hi Andrew,

Sounds like an interesting project, and often describe Rhino to others as:

“A 3D software development environment with a native UI”

I would suggest you look at the workflow within Grasshopper if you need to see the history of object creation.

Cheers

DK

4 Likes

Those parameters are not part of the circle object that is added to the document.

If you want to create your own objects with history however, you should be able to add information to the record.
For more info see the developer examples here:

Welcome to the forums @Andrew_Wolven,

I too went through a similar process before I worked at McNeel when I started a new CAD plugin on top of Rhino. And I was very happy we picked Rhino, Rhino is very hackable and very extensible.

It sounds to me like what you want to create would find Rhino an ideal base layer.

To add to what @Gijs said, I’m also not sure how you could find this information, there command outputs a circle, but does not keep information about what created it anywhere. You could follow the Rhino History and see that an object was created via “Circle3Pt”. If you needed this it might make sense to create your own Circle Command.

I think Mac is an excellent choice myself. Certainly the Mac Laptops are much better value for money than Windows ones IMO. If you use C# to create a cross-platform plugin, then there shouldn’t be any differences or issues as far as your code base goes.

Regarding Rhino Mac as a platform, you may find a few things that are missing in the SDK for Mac vs Windows, but these are often small and shouldn’t cause serious snags.

Here are a few resources you may have read already, but I’d love to make sure you or a future reader don’t miss :slight_smile: