Table of contents

  1. Individual Part Constraints
    1. FIXED_ORIENTATION
      1. Schema
      2. Properties
      3. Usage Notes
      4. Example Use Cases
    2. RANGE_ORIENTATION
      1. Schema
      2. Properties
      3. Usage Notes
      4. Example Use Cases
    3. FORBIDDEN_ORIENTATION
      1. Schema
      2. Properties
      3. Usage Notes
      4. Example Use Cases
    4. FIXED_LOCATION
      1. Schema
      2. Properties
      3. Usage Notes
      4. Example Use Cases
    5. RANGE_LOCATION
      1. Schema
      2. Properties
      3. Usage Notes
      4. Example Use Cases

Individual Part Constraints

FIXED_ORIENTATION

Specifies an exact orientation for a part using a 3x3 rotation matrix.

Schema

{
  "manifestId": "550e8400-e29b-41d4-a716-446655440000",
  "type": "FIXED_ORIENTATION",
  "value": {
    "rotation": [
      1, 0, 0, 
      0, 1, 0, 
      0, 0, 1
    ]
  }
}

Properties

Property Type Description
rotation array[9] 3x3 rotation matrix in row-major order

Usage Notes

  • The rotation matrix must be orthogonal
  • Used when parts must maintain a specific orientation
  • Common in parts with critical surfaces or features

Example Use Cases

  • Precision machined surfaces that must face upward
  • Text or logos that must face a specific direction
  • Parts with critical tolerances in specific orientations

RANGE_ORIENTATION

Defines an allowed range of rotations around a specific axis, enabling controlled part orientation flexibility.

Schema

{
  "manifestId": "550e8400-e29b-41d4-a716-446655440000",
  "type": "RANGE_ORIENTATION",
  "value": {
    "axis": [0, 0, 1],
    "range": {
      "min": -45,
      "max": 45
    },
    "units": "deg"
  }
}

Properties

Property Type Description
axis array[3] Vector defining rotation axis [x, y, z]
range.min number Minimum allowed rotation angle (-180 to 180)
range.max number Maximum allowed rotation angle (-180 to 180)
units string Must be “deg” or “rad”

Usage Notes

  • Axis vector must be normalized
  • Min/max angles define the allowed rotation range around the axis
  • Multiple RANGE_ORIENTATION constraints can be combined
  • Range bounds are inclusive

Example Use Cases

  • Parts that can rotate within specific limits
  • Cylindrical features with orientation flexibility
  • Aesthetic components with limited variation allowed
  • Support optimization with controlled freedom

FORBIDDEN_ORIENTATION

Defines directions that cannot face downward, useful for avoiding support structures or maintaining surface quality.

Schema

{
  "manifestId": "550e8400-e29b-41d4-a716-446655440000",
  "type": "FORBIDDEN_ORIENTATION",
  "value": {
    "normals": [
      [0, 0, 1], 
      [0, 1, 0]
      ],
    "tolerance": 10,
    "units": "deg"
  }
}

Properties

Property Type Description
normals array[array[3]] Array of normal vectors that cannot point downward
tolerance number Allowed deviation in degrees (0-180)
units string Must be “deg” or “rad”

Usage Notes

  • Normal vectors must be unit vectors
  • Multiple normals can be specified
  • Tolerance allows for some flexibility in orientation

Example Use Cases

  • Avoiding support structures on finished surfaces
  • Protecting critical features from support removal
  • Maintaining surface quality on visible faces

FIXED_LOCATION

Sets an exact position for a part in the build volume.

Schema

{
  "manifestId": "550e8400-e29b-41d4-a716-446655440000",
  "type": "FIXED_LOCATION",
  "value": {
    "x": 0,
    "y": 0,
    "z": 0,
    "units": "mm"
  }
}

Properties

Property Type Description
x number X-coordinate in build volume
y number Y-coordinate in build volume
z number Z-coordinate in build volume
units string Must be “mm”, “cm”, “in” or “ft”

Usage Notes

  • Coordinates are relative to build volume origin
  • Used when exact positioning is critical
  • Takes precedence over optimization strategies

Example Use Cases

  • Parts that must align with fixtures
  • Multi-part assemblies with precise positioning
  • Reference parts for calibration

RANGE_LOCATION

Defines allowable position bounds for a part.

Schema

{
  "manifestId": "550e8400-e29b-41d4-a716-446655440000",
  "type": "RANGE_LOCATION",
  "value": {
    "bounds": {
      "x": {"min": 0, "max": 100},
      "y": {"min": 0, "max": 100},
      "z": {"min": 0, "max": 50}
    },
    "units": "mm"
  }
}

Properties

Property Type Description
bounds.x object Min/max X-coordinates
bounds.y object Min/max Y-coordinates
bounds.z object Min/max Z-coordinates
units string Must be “mm”, “cm”, “in” or “ft”

Usage Notes

  • All coordinates are optional
  • Allows flexible positioning within bounds
  • Compatible with optimization strategies

Example Use Cases

  • Parts that must stay within specific build areas
  • Height-restricted builds
  • Thermal zone restrictions