# teklanology/tekla-properties architecture

> Architecture diagram of the GitHub repository teklanology/tekla-properties, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/teklanology/tekla-properties
- Repository: https://github.com/teklanology/tekla-properties

## Overview

Tekla Properties is a Windows dialog for viewing and editing properties of selected Tekla model or drawing objects. The documented workflow is selection followed by property changes in the dialog; the two versioned directories provide parallel implementations. The excerpts show model property access and drawing-dimension updates, but not the dialog’s dispatch to individual property adapters, so those links are dashed and unverified.

Main entry points: [`16.1/Form1.cs`](https://github.com/teklanology/tekla-properties/blob/master/16.1/Form1.cs) (16.1 dialog), [`17.0/Form1.cs`](https://github.com/teklanology/tekla-properties/blob/master/17.0/Form1.cs) (17.0 dialog), [`16.1/ModelPart.cs`](https://github.com/teklanology/tekla-properties/blob/master/16.1/ModelPart.cs) (Model parts), [`16.1/ModelWeld.cs`](https://github.com/teklanology/tekla-properties/blob/master/16.1/ModelWeld.cs) (Model welds)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application"]
  node_program16["16.1 startup<br/>[Program.cs]"]
  node_form16["16.1 dialog<br/>[Form1.cs]"]
  node_program17["17.0 startup<br/>[Program.cs]"]
  node_form17["17.0 dialog<br/>[Form1.cs]"]
end

subgraph group_model["Model Properties"]
  node_mpart16["Model parts<br/>[ModelPart.cs]"]
  node_mbolt16["Model bolts<br/>[ModelBolt.cs]"]
  node_mweld16["Model welds<br/>[ModelWeld.cs]"]
  node_mgrid16["Model grids<br/>[ModelGrid.cs]"]
  node_mconn16["Model connections<br/>[ModelConnection.cs]"]
  node_mpart17["Model parts<br/>[ModelPart.cs]"]
  node_mbolt17["Model bolts<br/>[ModelBolt.cs]"]
  node_mweld17["Model welds<br/>[ModelWeld.cs]"]
  node_mgrid17["Model grids<br/>[ModelGrid.cs]"]
  node_mconn17["Model connections<br/>[ModelConnection.cs]"]
end

subgraph group_drawing16["Drawing 16.1"]
  node_dpart16["Drawing parts<br/>[DrawingPart.cs]"]
  node_dbolt16["Drawing bolts<br/>[DrawingBolt.cs]"]
  node_dweld16["Drawing welds<br/>[DrawingWeld.cs]"]
  node_dgrid16["Drawing grids<br/>[DrawingGrid.cs]"]
  node_dgraphic16["Drawing graphics<br/>[DrawingGraphic.cs]"]
  node_ddimension16["Dimensions"]
  node_dtext16["Drawing text<br/>[DrawingText.cs]"]
  node_dmark16["Drawing marks<br/>[DrawingMark.cs]"]
  node_dsymbol16["Drawing symbols<br/>[DrawingSymbol.cs]"]
  node_dview16["Drawing views<br/>[DrawingView.cs]"]
  node_active16["Active drawing<br/>[ActiveDrawing.cs]"]
end

subgraph group_drawing17["Drawing 17.0"]
  node_dpart17["Drawing parts<br/>[DrawingPart.cs]"]
  node_dbolt17["Drawing bolts<br/>[DrawingBolt.cs]"]
  node_dweld17["Drawing welds<br/>[DrawingWeld.cs]"]
  node_dgrid17["Drawing grids<br/>[DrawingGrid.cs]"]
  node_dgraphic17["Drawing graphics<br/>[DrawingGraphic.cs]"]
  node_ddimension17["Dimensions"]
  node_dtext17["Drawing text<br/>[DrawingText.cs]"]
end

node_user(("Tekla user"))
node_tekla["Tekla selection"]

node_user -->|"selects object"| node_tekla
node_user -.->|"opens dialog"| node_form16
node_user -.->|"opens dialog"| node_form17
node_program16 -->|"runs"| node_form16
node_program17 -->|"runs"| node_form17
node_form16 -.->|"dispatches properties"| node_mpart16
node_form16 -.->|"dispatches properties"| node_mbolt16
node_form16 -.->|"dispatches properties"| node_mweld16
node_form16 -.->|"dispatches properties"| node_mgrid16
node_form16 -.->|"dispatches properties"| node_dpart16
node_form16 -.->|"dispatches properties"| node_dbolt16
node_form16 -.->|"dispatches properties"| node_dweld16
node_form16 -.->|"dispatches properties"| node_dgrid16
node_form16 -.->|"dispatches properties"| node_dgraphic16
node_form16 -.->|"dispatches properties"| node_ddimension16
node_form16 -.->|"dispatches properties"| node_dtext16
node_form16 -.->|"dispatches properties"| node_dmark16
node_form16 -.->|"dispatches properties"| node_dsymbol16
node_form16 -.->|"dispatches properties"| node_dview16
node_form17 -.->|"dispatches properties"| node_mpart17
node_form17 -.->|"dispatches properties"| node_mbolt17
node_form17 -.->|"dispatches properties"| node_mweld17
node_form17 -.->|"dispatches properties"| node_mgrid17
node_form17 -.->|"dispatches properties"| node_dpart17
node_form17 -.->|"dispatches properties"| node_dbolt17
node_form17 -.->|"dispatches properties"| node_dweld17
node_form17 -.->|"dispatches properties"| node_dgrid17
node_form17 -.->|"dispatches properties"| node_dgraphic17
node_form17 -.->|"dispatches properties"| node_ddimension17
node_form17 -.->|"dispatches properties"| node_dtext17
node_tekla -.->|"reads selection"| node_mpart16
node_tekla -.->|"reads selection"| node_mweld16
node_tekla -.->|"reads selection"| node_mpart17
node_tekla -.->|"reads selection"| node_mweld17

click node_program16 "https://github.com/teklanology/tekla-properties/blob/master/16.1/Program.cs"
click node_form16 "https://github.com/teklanology/tekla-properties/blob/master/16.1/Form1.cs"
click node_program17 "https://github.com/teklanology/tekla-properties/blob/master/17.0/Program.cs"
click node_form17 "https://github.com/teklanology/tekla-properties/blob/master/17.0/Form1.cs"
click node_mpart16 "https://github.com/teklanology/tekla-properties/blob/master/16.1/ModelPart.cs"
click node_mbolt16 "https://github.com/teklanology/tekla-properties/blob/master/16.1/ModelBolt.cs"
click node_mweld16 "https://github.com/teklanology/tekla-properties/blob/master/16.1/ModelWeld.cs"
click node_mgrid16 "https://github.com/teklanology/tekla-properties/blob/master/16.1/ModelGrid.cs"
click node_mconn16 "https://github.com/teklanology/tekla-properties/blob/master/16.1/ModelConnection.cs"
click node_mpart17 "https://github.com/teklanology/tekla-properties/blob/master/17.0/ModelPart.cs"
click node_mbolt17 "https://github.com/teklanology/tekla-properties/blob/master/17.0/ModelBolt.cs"
click node_mweld17 "https://github.com/teklanology/tekla-properties/blob/master/17.0/ModelWeld.cs"
click node_mgrid17 "https://github.com/teklanology/tekla-properties/blob/master/17.0/ModelGrid.cs"
click node_mconn17 "https://github.com/teklanology/tekla-properties/blob/master/17.0/ModelConnection.cs"
click node_dpart16 "https://github.com/teklanology/tekla-properties/blob/master/16.1/DrawingPart.cs"
click node_dbolt16 "https://github.com/teklanology/tekla-properties/blob/master/16.1/DrawingBolt.cs"
click node_dweld16 "https://github.com/teklanology/tekla-properties/blob/master/16.1/DrawingWeld.cs"
click node_dgrid16 "https://github.com/teklanology/tekla-properties/blob/master/16.1/DrawingGrid.cs"
click node_dgraphic16 "https://github.com/teklanology/tekla-properties/blob/master/16.1/DrawingGraphic.cs"
click node_ddimension16 "https://github.com/teklanology/tekla-properties/blob/master/16.1/DrawingDimension.cs"
click node_dtext16 "https://github.com/teklanology/tekla-properties/blob/master/16.1/DrawingText.cs"
click node_dmark16 "https://github.com/teklanology/tekla-properties/blob/master/16.1/DrawingMark.cs"
click node_dsymbol16 "https://github.com/teklanology/tekla-properties/blob/master/16.1/DrawingSymbol.cs"
click node_dview16 "https://github.com/teklanology/tekla-properties/blob/master/16.1/DrawingView.cs"
click node_active16 "https://github.com/teklanology/tekla-properties/blob/master/16.1/ActiveDrawing.cs"
click node_dpart17 "https://github.com/teklanology/tekla-properties/blob/master/17.0/DrawingPart.cs"
click node_dbolt17 "https://github.com/teklanology/tekla-properties/blob/master/17.0/DrawingBolt.cs"
click node_dweld17 "https://github.com/teklanology/tekla-properties/blob/master/17.0/DrawingWeld.cs"
click node_dgrid17 "https://github.com/teklanology/tekla-properties/blob/master/17.0/DrawingGrid.cs"
click node_dgraphic17 "https://github.com/teklanology/tekla-properties/blob/master/17.0/DrawingGraphic.cs"
click node_ddimension17 "https://github.com/teklanology/tekla-properties/blob/master/17.0/DrawingDimension.cs"
click node_dtext17 "https://github.com/teklanology/tekla-properties/blob/master/17.0/DrawingText.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_program16,node_form16,node_program17,node_form17,node_user toneBlue
class node_mpart16,node_mbolt16,node_mweld16,node_mgrid16,node_mconn16,node_mpart17,node_mbolt17,node_mweld17,node_mgrid17,node_mconn17 toneAmber
class node_dpart16,node_dbolt16,node_dweld16,node_dgrid16,node_dgraphic16,node_ddimension16,node_dtext16,node_dmark16,node_dsymbol16,node_dview16,node_active16 toneMint
class node_dpart17,node_dbolt17,node_dweld17,node_dgrid17,node_dgraphic17,node_ddimension17,node_dtext17 toneRose
class node_tekla toneIndigo
```

## Components

### Application

- [16.1 startup](https://github.com/teklanology/tekla-properties/blob/master/16.1/Program.cs): `16.1/Program.cs`
- [16.1 dialog](https://github.com/teklanology/tekla-properties/blob/master/16.1/Form1.cs): `16.1/Form1.cs`
- [17.0 startup](https://github.com/teklanology/tekla-properties/blob/master/17.0/Program.cs): `17.0/Program.cs`
- [17.0 dialog](https://github.com/teklanology/tekla-properties/blob/master/17.0/Form1.cs): `17.0/Form1.cs`

### Model Properties

- [Model parts](https://github.com/teklanology/tekla-properties/blob/master/16.1/ModelPart.cs): `16.1/ModelPart.cs`
- [Model bolts](https://github.com/teklanology/tekla-properties/blob/master/16.1/ModelBolt.cs): `16.1/ModelBolt.cs`
- [Model welds](https://github.com/teklanology/tekla-properties/blob/master/16.1/ModelWeld.cs): `16.1/ModelWeld.cs`
- [Model grids](https://github.com/teklanology/tekla-properties/blob/master/16.1/ModelGrid.cs): `16.1/ModelGrid.cs`
- [Model connections](https://github.com/teklanology/tekla-properties/blob/master/16.1/ModelConnection.cs): `16.1/ModelConnection.cs`
- [Model parts](https://github.com/teklanology/tekla-properties/blob/master/17.0/ModelPart.cs): `17.0/ModelPart.cs`
- [Model bolts](https://github.com/teklanology/tekla-properties/blob/master/17.0/ModelBolt.cs): `17.0/ModelBolt.cs`
- [Model welds](https://github.com/teklanology/tekla-properties/blob/master/17.0/ModelWeld.cs): `17.0/ModelWeld.cs`
- [Model grids](https://github.com/teklanology/tekla-properties/blob/master/17.0/ModelGrid.cs): `17.0/ModelGrid.cs`
- [Model connections](https://github.com/teklanology/tekla-properties/blob/master/17.0/ModelConnection.cs): `17.0/ModelConnection.cs`

### Drawing 16.1

- [Drawing parts](https://github.com/teklanology/tekla-properties/blob/master/16.1/DrawingPart.cs): `16.1/DrawingPart.cs`
- [Drawing bolts](https://github.com/teklanology/tekla-properties/blob/master/16.1/DrawingBolt.cs): `16.1/DrawingBolt.cs`
- [Drawing welds](https://github.com/teklanology/tekla-properties/blob/master/16.1/DrawingWeld.cs): `16.1/DrawingWeld.cs`
- [Drawing grids](https://github.com/teklanology/tekla-properties/blob/master/16.1/DrawingGrid.cs): `16.1/DrawingGrid.cs`
- [Drawing graphics](https://github.com/teklanology/tekla-properties/blob/master/16.1/DrawingGraphic.cs): `16.1/DrawingGraphic.cs`
- [Dimensions](https://github.com/teklanology/tekla-properties/blob/master/16.1/DrawingDimension.cs): `16.1/DrawingDimension.cs`
- [Drawing text](https://github.com/teklanology/tekla-properties/blob/master/16.1/DrawingText.cs): `16.1/DrawingText.cs`
- [Drawing marks](https://github.com/teklanology/tekla-properties/blob/master/16.1/DrawingMark.cs): `16.1/DrawingMark.cs`
- [Drawing symbols](https://github.com/teklanology/tekla-properties/blob/master/16.1/DrawingSymbol.cs): `16.1/DrawingSymbol.cs`
- [Drawing views](https://github.com/teklanology/tekla-properties/blob/master/16.1/DrawingView.cs): `16.1/DrawingView.cs`
- [Active drawing](https://github.com/teklanology/tekla-properties/blob/master/16.1/ActiveDrawing.cs): `16.1/ActiveDrawing.cs`

### Drawing 17.0

- [Drawing parts](https://github.com/teklanology/tekla-properties/blob/master/17.0/DrawingPart.cs): `17.0/DrawingPart.cs`
- [Drawing bolts](https://github.com/teklanology/tekla-properties/blob/master/17.0/DrawingBolt.cs): `17.0/DrawingBolt.cs`
- [Drawing welds](https://github.com/teklanology/tekla-properties/blob/master/17.0/DrawingWeld.cs): `17.0/DrawingWeld.cs`
- [Drawing grids](https://github.com/teklanology/tekla-properties/blob/master/17.0/DrawingGrid.cs): `17.0/DrawingGrid.cs`
- [Drawing graphics](https://github.com/teklanology/tekla-properties/blob/master/17.0/DrawingGraphic.cs): `17.0/DrawingGraphic.cs`
- [Dimensions](https://github.com/teklanology/tekla-properties/blob/master/17.0/DrawingDimension.cs): `17.0/DrawingDimension.cs`
- [Drawing text](https://github.com/teklanology/tekla-properties/blob/master/17.0/DrawingText.cs): `17.0/DrawingText.cs`

### Other components

- **Tekla user**
- **Tekla selection**

## Connections

- Tekla user → Tekla selection: selects object
- Tekla user → 16.1 dialog: opens dialog
- Tekla user → 17.0 dialog: opens dialog
- 16.1 startup → 16.1 dialog: runs (evidence: `16.1/Program.cs`)
- 17.0 startup → 17.0 dialog: runs (evidence: `17.0/Program.cs`)
- 16.1 dialog → Model parts: dispatches properties
- 16.1 dialog → Model bolts: dispatches properties
- 16.1 dialog → Model welds: dispatches properties
- 16.1 dialog → Model grids: dispatches properties
- 16.1 dialog → Drawing parts: dispatches properties
- 16.1 dialog → Drawing bolts: dispatches properties
- 16.1 dialog → Drawing welds: dispatches properties
- 16.1 dialog → Drawing grids: dispatches properties
- 16.1 dialog → Drawing graphics: dispatches properties
- 16.1 dialog → Dimensions: dispatches properties
- 16.1 dialog → Drawing text: dispatches properties
- 16.1 dialog → Drawing marks: dispatches properties
- 16.1 dialog → Drawing symbols: dispatches properties
- 16.1 dialog → Drawing views: dispatches properties
- 17.0 dialog → Model parts: dispatches properties
- 17.0 dialog → Model bolts: dispatches properties
- 17.0 dialog → Model welds: dispatches properties
- 17.0 dialog → Model grids: dispatches properties
- 17.0 dialog → Drawing parts: dispatches properties
- 17.0 dialog → Drawing bolts: dispatches properties
- 17.0 dialog → Drawing welds: dispatches properties
- 17.0 dialog → Drawing grids: dispatches properties
- 17.0 dialog → Drawing graphics: dispatches properties
- 17.0 dialog → Dimensions: dispatches properties
- 17.0 dialog → Drawing text: dispatches properties
- Tekla selection → Model parts: reads selection
- Tekla selection → Model welds: reads selection
- Tekla selection → Model parts: reads selection
- Tekla selection → Model welds: reads selection
