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.