Deprecated Rhino3dmIO?

Let me try :sweat_smile:

  • I am writing a Rhino plugin (Project P), that uses a lot of geometric functionality that has been abstracted to a Core dll (Project C), both of which depend on RhinoCommon. The idea is to write reusable code in Project C that could be used for other plugins, GH components, etc.
  • I am trying to write unit tests for Project C, to verify that the computations are correct. The tests are meant to be ran on Build in pure VS, without firing an instance of a Rhino application to handle them.
  • For the tests, I am trying to load some geometry from sample 3dm files, convert to geometry types (Brep, Curve, etc.) and use those in the tests.
  • If I use RhinoCommon in the unit test project, when I read 3dm files using File3dm I run into this problem, because I am not inside a Rhino application.
  • If I use RhinoCommon to try to load that same geometry from a serialized json file, I run into the same issue when working with CommonObject.
  • If I use Rhino3dm for either of the two options above, loading the 3dm file works great. However, now the problem is that the Rhino3dm Geometry classes in the unit tests are not compatible with their RhinoCommon siblings used in Project C. Therefore, can not use them to test the Project C library.
  • At this point in the project, we cannot change Project P and/or C to depend on Rhino3dm, and I also don’t think that would be good for either, since they are targeting living inside a Rhino runtime…

Sooo, I am kind of stuck here, and not sure how to move forward. Ideally, I would like to be able to load geometry from a file using RhinoCommon headles, or find a way to marshall between a Rhino3dm Brep and a RhinoCommon one for example. But even this last option would probably not work, since a project cannot depend on both RhinoCommon and Rhino3dm at the same time!

Any help would be much appreciated, thanks a lot @stevebaer :nerd_face: