Toward Optimistic Version Control in Architecture

Diffing, Patching, and Three-Way Merging for openNURBS 3D Models

Appendix B
OpenNURBS Geometry Types

This appendix outlines the breadth of geometric constructs supported by the openNURBS file format by enumerating the subclasses of ON_Geometry.

ON_Annotation
extends ON_Geometry
The base class for annotation objects.
ON_ArcCurve
extends ON_Curve
An arc or circle.
ON_Brep
extends ON_Geometry
A boundary representation, or B-rep. In computer graphics, boundary representations are a method of defining three-dimensional shapes in terms of the surfaces that enclose them.
ON_BrepEdge
extends ON_CurveProxy
An edge between two faces in a B-rep.
ON_BrepFace
extends ON_SurfaceProxy
A face in a B-rep.
ON_BrepLoop
extends ON_Geometry
The set of curves that define the edges of a single face in a B-rep.
ON_BrepTrim
extends ON_CurveProxy
A curve that trims a face in a B-rep.
ON_Centermark
extends ON_Dimension
An annotation that marks the center of a circle or arc.
ON_ClippingPlaneSurface
extends ON_PlaneSurface
A planar surface that is used as a clipping plane in one or more viewports.
ON_Curve
extends ON_Geometry
The base class for curves. In openNURBS, all one-dimensional geometric objects are considered to be curves even if they do not "curve" in the conventional sense.
ON_CurveOnSurface
extends ON_Curve
A curve that lies on a surface.
ON_CurveProxy
extends ON_Curve
A curve-like structure that is stored as part of another type of geometry. Proxy objects are not saved in an openNURBS file and only exist at runtime.
ON_DetailView
extends ON_Geometry
A viewport bounded by a closed planar curve.
ON_DimAngular
extends ON_Dimension
An annotation that shows the angle between two curves or surfaces.
ON_Dimension
extends ON_Annotation
The base class for dimension annotations.
ON_DimLinear
extends ON_Dimension
An annotation that shows the distance between two points.
ON_DimOrdinate
extends ON_Dimension
An annotation that shows the distance from the model's origin point.
ON_DimRadial
extends ON_Dimension
An annotation that shows the radius or diameter of a circle or arc.
ON_Extrusion
extends ON_Surface
A surface created by extruding a curve along a linear path.
ON_Hatch
extends ON_Geometry
A planar region filled with a hatch pattern.
ON_HLDCurve
extends ON_CurveProxy
A curve that is the result of projecting a three-dimensional object into a two-dimensional hidden line drawing.
ON_InstanceRef
extends ON_Geometry
A copy of an \texttt{ON_InstanceDefinition
that has been placed in the model.}
ON_Leader
extends ON_Annotation
A line that points from an annotation toward the model entity it describes.
ON_Light
extends ON_Geometry
A source of light used when rendering a model.
ON_LineCurve
extends ON_Curve
A straight line between two points.
ON_Mesh
extends ON_Geometry
A polygonal mesh. In computer graphics, meshes are a method of approximating a complex shapes through a network of planar, polygonal surfaces.
ON_MeshComponentRef
extends ON_Geometry
A face, edge, or vertex within a mesh.
ON_MorphControl
extends ON_Geometry
An object that controls the morphing behavior of another object.
ON_NurbsCage
extends ON_Geometry
A network of control points that defines the shape of a NURBS surface.
ON_NurbsCurve
extends ON_Curve
A non-uniform rational basis spline (NURBS) curve. All other types of curve are representable as and can be converted to a NURBS curve.
ON_NurbsSurface
extends ON_Surface
A non-uniform rational basis spline (NURBS) surface. All other types of surface are representable as and can be converted to a NURBS surface.
ON_OffsetSurface
extends ON_Surface
A surface that is offset from another according to some algorithm.
ON_PlaneSurface
extends ON_Surface
A planar surface.
ON_Point
extends ON_Geometry
A point in three-dimensional space.
ON_PointCloud
extends ON_Geometry
A collection of points such as those acquired by a 3D scanner.
ON_PointGrid
extends ON_Geometry
A set of regularly-spaced points.
ON_PolyCurve
extends ON_Curve
A curve that consists of other, simpler curves laid end-to-end.
ON_PolyEdgeCurve
extends ON_PolyCurve
A multi-part edge of a face in a B-rep.
ON_PolyEdgeSegment
extends ON_CurveProxy
A piece of a ON_PolyEdgeCurve.
ON_PolylineCurve
extends ON_Curve
A curve that consists of one or more linear segments.
ON_RevSurface
extends ON_Surface
A surface created by rotating a curve about an axis.
ON_SubD
extends ON_Geometry
A subdivision surface. In computer graphics, subdivision surfaces are a method of defining complex shapes through a network of control points and a set of algorithms that interpolate the surfaces between those control points.
ON_SubDComponentRef
extends ON_Geometry
A face, edge, or vertex within a subdivision surface.
ON_SumSurface
extends ON_Surface
A surface created by extruding a curve along a curved path.
ON_Surface
extends ON_Geometry
The base class for surfaces.
ON_SurfaceProxy
extends ON_Surface
A surface-like structure that is stored as part of another type of geometry. Proxy objects are not saved in an openNURBS file and only exist at runtime.
ON_Text
extends ON_Annotation
A textual annotation.
ON_TextContent
extends ON_Geometry
A textual label that is part of an annotation component.
ON_TextDot
extends ON_Geometry
A small textual label that keeps itself aligned with the viewing plane so it is always legible.
ON_Viewport
extends ON_Geometry
The field of view of a virtual camera.