> ## Documentation Index
> Fetch the complete documentation index at: https://docs.speckle.systems/llms.txt
> Use this file to discover all available pages before exploring further.

# Navisworks Schema

> Data schema and structure for Navisworks models

The Navisworks connector exports model items from Autodesk Navisworks, with configurable hierarchy preservation.

## Hierarchy

Navisworks models have two possible structures depending on the **preserve hierarchy** publish setting:

### Default (Flattened Hierarchy)

```mermaid theme={null}
graph TD
    A[Root Collection] --> B[Navisworks File]
    A --> C[Proxies: RenderMaterial array]
    
    B --> D[NavisworksObject<br/>all objects at same level]
```

### Preserve Hierarchy Setting

```mermaid theme={null}
graph TD
    A[Root Collection] --> B[Navisworks File]
    A --> C[Proxies: RenderMaterial array]
    
    B --> D[Selection Tree Item]
    D --> E[Nested Selection Tree Item]
    E --> F[NavisworksObject]
```

The **preserve hierarchy** setting controls whether the Navisworks selection tree structure is preserved in the Speckle hierarchy.

## NavisworksObject Structure

NavisworksObject extends [DataObject](/developers/data-schema/object-schema) with minimal additional fields:

```json theme={null}
{
  "id": "string",
  "speckle_type": "Objects.Data.DataObject:Objects.Data.NavisworksObject",
  "applicationId": "string",
  "name": "string",
  "properties": {
    "string": "any value"
  },
  "displayValue": [
    "Base (geometry objects)"
  ],
  "units": "string"
}
```

NavisworksObject is essentially a DataObject with no connector-specific extensions. All Navisworks-specific data is in the `properties` field.

<Info>
  The Speckle `NavisworksObject` represents the **first selectable ancestor** `Navisworks.ModelItem` object in Navisworks.
</Info>

## Properties

NavisworksObject `properties` contain Navisworks-specific property data. The exact structure depends on the source file type and properties available in Navisworks.

Properties may include:

* Source file information
* Element properties from original applications
* Navisworks-specific properties

## Proxies

Navisworks models use:

### RenderMaterial

Material assignments for visual representation. Referenced by objects via `applicationId`.

## Example: NavisworksObject

```json theme={null}
{
  "id": "navisworks-abc123...",
  "speckle_type": "Objects.Data.DataObject:Objects.Data.NavisworksObject",
  "applicationId": "modelitem-456",
  "name": "Wall - A1",
  "properties": {
    "Source File": "Building.rvt",
    "Element Id": "12345",
    "Category": "Walls",
    "Type": "Basic Wall"
  },
  "displayValue": [
    {
      "speckle_type": "Objects.Geometry.Mesh",
      "vertices": [0, 0, 0, 10, 0, 0, 10, 0, 3, 0, 0, 3, ...],
      "faces": [0, 1, 2, 0, 2, 3, ...],
      "units": "meters"
    }
  ],
  "units": "meters"
}
```

## Invariants and Caveats

1. **Minimal extension** - NavisworksObject has no connector-specific fields beyond DataObject
2. **Hierarchy is configurable** - Structure depends on publish settings
3. **First selectable ancestor** - Objects represent the first selectable item in Navisworks, not necessarily leaf nodes
4. **Properties vary** - Property structure depends on source file types
5. **No Info fields** - Navisworks models don't include Info fields

<Accordion title="What does 'first selectable ancestor' mean?">
  In Navisworks, the selection tree can have nested items where parent items aren't directly selectable. The NavisworksObject represents the first item in the hierarchy that can actually be selected, which may be a parent of the actual geometry. This ensures objects are meaningful and selectable entities.
</Accordion>

<Accordion title="Should I use flattened or preserved hierarchy?">
  * **Flattened**: Simpler structure, all objects at one level. Good for simple processing.
  * **Preserved**: Maintains Navisworks selection tree structure. Good for understanding the source organization and context.

  Choose based on whether you need the source hierarchy information.
</Accordion>

## Related Documentation

* [Object Schema](/developers/data-schema/object-schena) - Base object structure
* [Geometry Schema](/developers/data-schema/geometry-schema) - Geometry storage
* [Proxy Schema](/developers/data-schema/proxy-schema) - How proxies work
