Toward Optimistic Version Control in Architecture

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

Appendix D
Supported Component Types

The 3dmdiff, 3dmpatch, and 3dmdiff3 programs described in this thesis currently support the eight component types listed below. The supported properties of each of these component types are enumerated in the sections that follow.

ArcCurve
An arc or circle. Corresponds to an ON_ModelGeometryComponent containing an instance of ON_ArcCurve.
Group
A named collection of geometric objects. Corresponds to an instance of ON_Group.
Layer
A category into which geometric objects can be organized. Corresponds to an instance of ON_Layer.
LineCurve
A straight line between two points. Corresponds to an ON_ModelGeometryComponent containing an instance of ON_LineCurve.
Linetype
A pattern of dashes and spaces that can be applied to a curve. Corresponds to an instance of ON_Linetype.
Material
A set of physical and optical properties that affect the appearance of a rendered object. Corresponds to an instance of ON_Material.
Point
A point in three-dimensional space. Corresponds to an ON_ModelGeometryComponent containing an instance of ON_Point.
TextDot
An arc or circle. Corresponds to an ON_ModelGeometryComponent containing an instance of ON_TextDot.

Common Properties

The following properties are supported on all component types:

Name
string
A human-readable label describing the component.
Parent
uuid
The ID of the component's parent object.

Common Geometric Properties

The following properties are supported on all geometric component types, including Point, ArcCurve, LineCurve, and TextDot.

CastsShadows
boolean
Whether or not the object casts shadows during rendering.
Color
color
The color of the object when displayed on screen.
ColorSource
keyword
The source of the object's display color. Possible values are:
layer
The object takes on the color of its layer.
material
The object takes on the color of its material.
object
The object is displayed using the color set in its Color property.
parent
The object takes on the color of its parent.
Decoration
keyword
Indicates whether decorative marks such as arrowheads are applied to the ends of the object.
none
The object has no decorations.
both
Decorations are applied to both ends of the object.
start
Decoration is applied to the beginning of the object only.
end
Decoration is applied to the end of the object only.
DisplayOrder
integer
Controls the order in which objects are drawn. Objects with a lower display order appear beneath those with a higher one.
Groups
set
The UUIDs of the groups that the object belongs to.
Layer
uuid
The ID of the layer the object belongs to.
Linetype
uuid
The UUID of the object's linetype.
LinetypeSource
keyword
The source of the object's plot color. Possible values are:
layer
The object takes on the linetype of its layer.
object
The object uses the linetype referenced in its Linetype property.
parent
The object takes on the linetype of its parent.
Material
uuid
The UUID of the object's material.
MaterialSource
keyword
The source of the object's material. Possible values are:
layer
The object takes on the material of its layer.
object
The object uses the material referenced in its Material property.
parent
The object takes on the material of its parent.
PlotColor
color
The color of the object when printed.
PlotColorSource
keyword
The source of the object's plot color. Possible values are:
display
The object is printed using the color set in the Color property.
layer
The object takes on the color of its layer.
object
The object is printed using the color set in its PlotColor property.
parent
The object takes on the color of its parent.
PlotWeight
float
The line weight of the object when printed.
PlotWeightSource
keyword
The source of the object's plot weight. Possible values are:
layer
The object takes on the line weight of its layer.
object
The object is printed using the weight set in its PlotWeight property.
parent
The object takes on the line weight of its parent.
ReceivesShadows
boolean
Whether or not the object receives shadows during rendering.
Space
keyword
The space the object belongs to. Possible values are:
none
The object does not belong to any space.
model
The object exists in model space.
page
The object exists in page space.
Viewport
uuid
Restricts the object to a specific view.
WireDensity
integer
The density of isocurves used to display the object's surfaces.
Mode
keyword
The status of the object. Possible values are:
hidden
The object is hidden.
instanceDefinition
The object is part of an ON_InstanceDefinition.
locked
The object is visible but cannot be edited.
normal
The object is visible and can be edited.
URL
string
The object's URL.

Common Curve Properties

The following properties are supported on all curve types, including ArcCurve and LineCurve.

Degree
integer
The algebraic degree of the curve. The degree of a LineCurve is always 1 and for an ArcCurve it is always 2, but other types of curves may have higher degrees.
Domain
interval
The minimum and maximum values of the parameterization of the curve.

Properties of ArcCurve Components

ArcCurve components support the following in addition to the common properties listed in the first three sections of this appendix.

Angle
interval
The angles, in radians, of the start and end points of the arc relative to its center. Circles have an Angle value of [0, 2𝜋].
Center
point3d
The location of the center of the arc.
Normal
vector3d
The normal vector of the plane in which the arc lies.
Radius
float
The radius of the arc.

Properties of Group Components

Group components do not have any properties beyond the common ones listed in the first section of this appendix.

Properties of Layer Components

Layer components support the following properties in addition to the common ones listed in the first section of this appendix.

Color
color
The layer's color.
IgesLevel
integer
The level assigned to the layer during IGES export.
Linetype
uuid
The UUID of the layer's linetype.
Material
uuid
The UUID of the layer's material.
PlotColor
color
The layer's plot color.
PlotWeight
float
The layer's plot weight.

Properties of LineCurve Components

LineCurve components support the following in addition to the common properties listed in the first three sections of this appendix.

EndPoint
point
The location at which the line ends.
StartPoint
point
The location at which the line begins.

Properties of Linetype Components

Linetype components support the following property in addition to the common ones listed in the first section of this appendix.

Segments
list
The lengths of the dashes and spaces that make up the linetype.

Properties of Material Components

Material components support the following properties in addition to the common ones listed in the first section of this appendix.

AmbientColor
color
The material's ambient color.
DiffuseColor
color
The material's diffuse color.
DisableLighting
boolean
Disables lighting for the material.
EmissionColor
color
The material's emission color.
FresnelIndexOfRefraction
float
The Fresnel index of refraction of the material.
FresnelReflections
boolean
Whether Fresnel reflections are used.
IndexOfRefraction
float
The index of refraction of the material.
PreviewColor
color
The color used for previewing the material in non-rendered contexts.
ReflectionColor
color
The material's reflection color.
ReflectionGlossiness
float
The layer's plot weight.
Reflectivity
float
The level of reflectivity of the material. A value of 0.0 indicates that the material is not reflective at all and a value of 1.0 indicates that it reflects all of the light that strikes it.
RenderPlugIn
uuid
The UUID of the rendering plug-in responsible for the material.
Shine
float
The shine factor of the material.
SpecularColor
color
The material's specular color.
Transparency
float
The level of transparency of the material. A value of 0.0 indicates that the material is fully opaque and a value of 1.0 indicates that it is fully transparent.
TransparentColor
color
The material's transparent color.

Properties of Point Components

Point components support the following in addition to the common properties listed in the first two sections of this appendix.

Point
point3d
The location of the point.

Properties of TextDot Components

TextDot components support the following in addition to the common properties listed in the first two sections of this appendix.

Point
point3d
The location of the text dot.
PrimaryText
string
The primary content of the text dot.
SecondaryText
string
The secondary content of the text dot.
FontFace
string
The font face used to render the text dot.
Height
integer
The size of the text dot.