# xarial/codestack architecture

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

- Interactive diagram: https://gitdiagram.com/xarial/codestack
- Repository: https://github.com/xarial/codestack

## Overview

CodeStack is a learning resource and collection of downloadable examples for automating SOLIDWORKS and related engineering software, not one integrated application. Its examples cover distinct workflows: interacting with SOLIDWORKS documents and geometry, building add-ins with SwEx, exporting through eDrawings, accessing file metadata with Document Manager, and automating PDM. The tree also includes localization, macro features, PropertyManager pages, and data-storage examples. Arrows below reflect only sampled, explicit calls or documented API interactions; most examples are independent, so their internal wiring is not inferred.

Main entry points: [`edrawings-api/output/export/Program.cs`](https://github.com/xarial/codestack/blob/master/edrawings-api/output/export/Program.cs) (Batch export), [`labs/solidworks/swex/add-in`](https://github.com/xarial/codestack/tree/master/labs/solidworks/swex/add-in) (Add-in lifecycle), [`solidworks-document-manager-api/document/data-storage/third-party/add-watermark/Program.cs`](https://github.com/xarial/codestack/blob/master/solidworks-document-manager-api/document/data-storage/third-party/add-watermark/Program.cs) (Watermark storage), [`solidworks-api`](https://github.com/xarial/codestack/tree/master/solidworks-api) (API examples)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_swapi["SOLIDWORKS API"]
  node_swapi_examples["API examples"]
  node_geometry["Geometry examples"]
  node_document_ops["Document operations"]
  node_interop["App interoperation"]
  node_storage_examples["Storage examples"]
end

subgraph group_swex["SwEx Add-ins"]
  node_swex_addin["Add-in lifecycle"]
  node_commands["Command management"]
  node_doc_events["Document events"]
  node_third_party["Third-party storage"]
  node_macro_feature["Macro features"]
  node_pm_page["PropertyManager pages"]
end

subgraph group_edrawings["eDrawings"]
  node_edrawings_api["eDrawings examples"]
  node_export_job["Batch export<br/>[Program.cs]"]
  node_edrawings_control["eDrawings control<br/>[EDrawingsHost.cs]"]
end

subgraph group_docmgr["Document Manager"]
  node_dm_examples["Document Manager examples"]
  node_watermark["Watermark storage<br/>[Program.cs]"]
end

subgraph group_pdm["PDM API"]
  node_pdm_examples["PDM examples"]
end

node_learner(("Engineer / learner"))
node_solidworks["SOLIDWORKS"]
node_edrawings_service["eDrawings runtime"]
node_dm_service["Document Manager"]
node_pdm_vault[("PDM vault")]

node_learner -->|"studies"| node_swapi_examples
node_learner -->|"studies"| node_swex_addin
node_learner -->|"studies"| node_edrawings_api
node_learner -->|"studies"| node_dm_examples
node_learner -->|"studies"| node_pdm_examples
node_solidworks -->|"loads through"| node_export_job
node_export_job -->|"hosts"| node_edrawings_control
node_edrawings_control -->|"controls"| node_edrawings_service
node_export_job -->|"opens and saves"| node_edrawings_service
node_solidworks -->|"hosts"| node_swex_addin
node_swex_addin -->|"handles storage events"| node_third_party
node_third_party -->|"reads/writes document storage"| node_solidworks
node_dm_examples -->|"uses API"| node_dm_service
node_watermark -->|"opens document storage"| node_dm_service
node_watermark -->|"saves document"| node_dm_service
node_pdm_examples -->|"accesses vault"| node_pdm_vault
node_swapi_examples -->|"automates API"| node_solidworks
node_geometry -->|"queries geometry"| node_solidworks
node_document_ops -->|"operates on documents"| node_solidworks
node_interop -->|"invokes add-in functions"| node_solidworks

click node_swapi_examples "https://github.com/xarial/codestack/tree/master/solidworks-api"
click node_geometry "https://github.com/xarial/codestack/tree/master/solidworks-api/geometry"
click node_document_ops "https://github.com/xarial/codestack/tree/master/solidworks-api/document"
click node_interop "https://github.com/xarial/codestack/tree/master/solidworks-api/getting-started/inter-process-communication"
click node_storage_examples "https://github.com/xarial/codestack/tree/master/solidworks-api/data-storage"
click node_swex_addin "https://github.com/xarial/codestack/tree/master/labs/solidworks/swex/add-in"
click node_commands "https://github.com/xarial/codestack/tree/master/labs/solidworks/swex/add-in/commands-manager"
click node_doc_events "https://github.com/xarial/codestack/tree/master/labs/solidworks/swex/add-in/documents-management"
click node_third_party "https://github.com/xarial/codestack/tree/master/labs/solidworks/swex/add-in/third-party-data-storage"
click node_macro_feature "https://github.com/xarial/codestack/tree/master/labs/solidworks/swex/macro-feature"
click node_pm_page "https://github.com/xarial/codestack/tree/master/labs/solidworks/swex/pmpage"
click node_edrawings_api "https://github.com/xarial/codestack/tree/master/edrawings-api"
click node_export_job "https://github.com/xarial/codestack/blob/master/edrawings-api/output/export/Program.cs"
click node_edrawings_control "https://github.com/xarial/codestack/blob/master/edrawings-api/output/export/EDrawingsHost.cs"
click node_dm_examples "https://github.com/xarial/codestack/tree/master/solidworks-document-manager-api"
click node_watermark "https://github.com/xarial/codestack/blob/master/solidworks-document-manager-api/document/data-storage/third-party/add-watermark/Program.cs"
click node_pdm_examples "https://github.com/xarial/codestack/tree/master/solidworks-pdm-api"

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_swapi_examples,node_geometry,node_document_ops,node_interop,node_storage_examples toneBlue
class node_swex_addin,node_commands,node_doc_events,node_third_party,node_macro_feature,node_pm_page,node_pdm_vault toneAmber
class node_edrawings_api,node_export_job,node_edrawings_control toneMint
class node_dm_examples,node_watermark toneRose
class node_pdm_examples,node_learner,node_solidworks,node_edrawings_service,node_dm_service toneIndigo
```

## Components

### SOLIDWORKS API

- [API examples](https://github.com/xarial/codestack/tree/master/solidworks-api): `solidworks-api`
- [Geometry examples](https://github.com/xarial/codestack/tree/master/solidworks-api/geometry): `solidworks-api/geometry`
- [Document operations](https://github.com/xarial/codestack/tree/master/solidworks-api/document): `solidworks-api/document`
- [App interoperation](https://github.com/xarial/codestack/tree/master/solidworks-api/getting-started/inter-process-communication): `solidworks-api/getting-started/inter-process-communication`
- [Storage examples](https://github.com/xarial/codestack/tree/master/solidworks-api/data-storage): `solidworks-api/data-storage`

### SwEx Add-ins

- [Add-in lifecycle](https://github.com/xarial/codestack/tree/master/labs/solidworks/swex/add-in): `labs/solidworks/swex/add-in`
- [Command management](https://github.com/xarial/codestack/tree/master/labs/solidworks/swex/add-in/commands-manager): `labs/solidworks/swex/add-in/commands-manager`
- [Document events](https://github.com/xarial/codestack/tree/master/labs/solidworks/swex/add-in/documents-management): `labs/solidworks/swex/add-in/documents-management`
- [Third-party storage](https://github.com/xarial/codestack/tree/master/labs/solidworks/swex/add-in/third-party-data-storage): `labs/solidworks/swex/add-in/third-party-data-storage`
- [Macro features](https://github.com/xarial/codestack/tree/master/labs/solidworks/swex/macro-feature): `labs/solidworks/swex/macro-feature`
- [PropertyManager pages](https://github.com/xarial/codestack/tree/master/labs/solidworks/swex/pmpage): `labs/solidworks/swex/pmpage`

### eDrawings

- [eDrawings examples](https://github.com/xarial/codestack/tree/master/edrawings-api): `edrawings-api`
- [Batch export](https://github.com/xarial/codestack/blob/master/edrawings-api/output/export/Program.cs): `edrawings-api/output/export/Program.cs`
- [eDrawings control](https://github.com/xarial/codestack/blob/master/edrawings-api/output/export/EDrawingsHost.cs): `edrawings-api/output/export/EDrawingsHost.cs`

### Document Manager

- [Document Manager examples](https://github.com/xarial/codestack/tree/master/solidworks-document-manager-api): `solidworks-document-manager-api`
- [Watermark storage](https://github.com/xarial/codestack/blob/master/solidworks-document-manager-api/document/data-storage/third-party/add-watermark/Program.cs): `solidworks-document-manager-api/document/data-storage/third-party/add-watermark/Program.cs`

### PDM API

- [PDM examples](https://github.com/xarial/codestack/tree/master/solidworks-pdm-api): `solidworks-pdm-api`

### Other components

- **Engineer / learner**
- **SOLIDWORKS**
- **eDrawings runtime**
- **Document Manager**
- **PDM vault**

## Connections

- Engineer / learner → API examples: studies
- Engineer / learner → Add-in lifecycle: studies
- Engineer / learner → eDrawings examples: studies
- Engineer / learner → Document Manager examples: studies
- Engineer / learner → PDM examples: studies
- SOLIDWORKS → Batch export: loads through
- Batch export → eDrawings control: hosts
- eDrawings control → eDrawings runtime: controls
- Batch export → eDrawings runtime: opens and saves
- SOLIDWORKS → Add-in lifecycle: hosts
- Add-in lifecycle → Third-party storage: handles storage events
- Third-party storage → SOLIDWORKS: reads/writes document storage
- Document Manager examples → Document Manager: uses API
- Watermark storage → Document Manager: opens document storage
- Watermark storage → Document Manager: saves document
- PDM examples → PDM vault: accesses vault
- API examples → SOLIDWORKS: automates API
- Geometry examples → SOLIDWORKS: queries geometry
- Document operations → SOLIDWORKS: operates on documents
- App interoperation → SOLIDWORKS: invokes add-in functions
