Diffing, Patching, and Three-Way Merging for openNURBS 3D Models
The rhino3dm package provides bindings for the openNURBS library for the Python programming language. Unfortunately, those bindings are incomplete; a number of functions and data types defined in the openNURBS C++ library are not available in Python. During the course of this thesis, seven pull requests containing enhancements and corrections were submitted to the rhino3dm Github repository. As of this writing, four of those pull requests have been accepted by Robert McNeel & Associates and merged into the rhino3dm source.
Pull request #477 seeks to enable inspection and manipulation of line types by adding the Linetype and File3dmLinetypeTable classes. It has not yet been accepted.
Pull request #477 was merged into rhino3dm’s dev branch on July 17, 2023.
Pull request #478 added an .editorconfig file to the repository to help ensure the project's coding conventions. It was accepted on September 5, 2022.
Pull request #479 added support for the equality (==) and inequality (!=) operators on the Interval, Point2d, Point2f, Point3d, Point3f, Point4d, Vector2d, Vector3d, and Vector3f data types. It was accepted on September 8, 2022.
Pull request #480 added a Plane property to the Arc class. It was accepted on September 18, 2022. An earlier version of this pull request also included a Normal property for the Arc class and added a setter to the Arc property of the ArcCurve class. Those changes were rejected because they lacked precedent in the RhinoCommon API after which rhino3dm is modeled.
Pull request #481 fixed a few spelling mistakes that were present in the rhino3dm code. It was accepted on October 31, 2022.
Pull request #482 seeks to add a Delete method to the File3dmGroupTable class. It has not yet been accepted.
Pull request #482 was merged into rhino3dm’s dev branch on July 17, 2023.
Pull request #483 seeks to add the following properties and methods to the Transform class:
Transform is affine.Transform is linear.Transform is a proper rotation.Transform is rigid.Transform is an orientation-preserving or orientation-reversing similarity.Transform that rotates from the direction specified by one vector to the direction specified by another.Transform that moves and re-orients objects in one plane to another.This pull request has not yet been accepted.
Pull request #483 was merged into rhino3dm’s dev branch on July 17, 2023.