# angelsix/solidworks-api architecture

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

- Interactive diagram: https://gitdiagram.com/angelsix/solidworks-api
- Repository: https://github.com/angelsix/solidworks-api

## Overview

SolidDNA is a C# framework that wraps the SOLIDWORKS API and provides add-in integration plus higher-level APIs for working with the application and its models. A user can start from a SOLIDWORKS add-in or the standalone template, connect through the integration layer, and use framework wrappers to interact with SOLIDWORKS; command UI and localization are additional capabilities. The excerpts show integration and command-manager relationships, but most model-domain implementations were not sampled, so their internal call paths are not inferred.

Main entry points: [`SolidDna/AngelSix.SolidDna/SolidWorks/Integration/AddIn/AddInIntegration.cs`](https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/SolidWorks/Integration/AddIn/AddInIntegration.cs) (Add-in Integration), [`SolidDna/AngelSix.SolidDna/SolidWorks/Models/Model.cs`](https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/SolidWorks/Models/Model.cs) (Model Wrapper), [`SolidDna/AngelSix.SolidDna/SolidWorks/CommandManager/CommandManager.cs`](https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/SolidWorks/CommandManager/CommandManager.cs) (Command Manager), [`SolidDna/AngelSix.SolidDna/SolidWorks/CommandManager/Group/CommandManagerGroup.cs`](https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/SolidWorks/CommandManager/Group/CommandManagerGroup.cs) (Command Groups)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_integration["SOLIDWORKS Integration"]
  node_addin["Add-in Integration"]
  node_plugin["Plug-in Loading"]
  node_domain["AppDomain Boundary"]
  node_swapp["Application Wrapper"]
end

subgraph group_ui["Command UI"]
  node_command["Command Manager<br/>[CommandManager.cs]"]
  node_commandgroup["Command Groups"]
  node_commanditem["Command Items"]
  node_flyout["Command Flyouts"]
  node_tab["Command Tabs"]
end

subgraph group_models["Model API"]
  node_model["Model Wrapper<br/>[Model.cs]"]
  node_documents["Model Documents<br/>[Documents]"]
  node_features["Feature API<br/>[Feature]"]
  node_selection["Selection Manager"]
  node_taskpane["Taskpane API<br/>[Taskpane.cs]"]
end

subgraph group_framework["Framework Services"]
  node_combase["COM Object Wrappers<br/>[SolidDnaObject.cs]"]
  node_localization["Localization"]
  node_resources["Resource Providers"]
  node_di["Dependency Injection<br/>[IoCContainer.cs]"]
  node_errors["Error Handling<br/>[SolidDnaErrors.cs]"]
end

node_developer(("Add-in Developer"))
node_standalone["Standalone Template<br/>[Program.cs]"]
node_solidworks["SOLIDWORKS"]

node_developer -.->|"implements"| node_addin
node_standalone -->|"connects via"| node_addin
node_addin -.->|"connects"| node_solidworks
node_addin -->|"sets up"| node_plugin
node_addin -->|"sets up"| node_domain
node_plugin -->|"configures app"| node_addin
node_addin -->|"initializes"| node_swapp
node_command -->|"creates"| node_commandgroup
node_commandgroup -->|"adds"| node_commanditem
node_commandgroup -->|"configures"| node_flyout
node_command -->|"returns"| node_tab
node_flyout -->|"listens for callbacks"| node_plugin
node_model -.->|"provides"| node_documents
node_model -.->|"provides"| node_features
node_model -.->|"provides"| node_selection
node_model -.->|"supports"| node_taskpane
node_localization -->|"queries providers"| node_resources
node_localization -->|"accesses through"| node_di
node_command -.->|"inherits wrappers"| node_combase

click node_standalone "https://github.com/angelsix/solidworks-api/blob/develop/Templates/SolidDNA.StandAlone/SolidDNA.StandAlone/Program.cs"
click node_addin "https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/SolidWorks/Integration/AddIn/AddInIntegration.cs"
click node_plugin "https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/SolidWorks/Integration/PlugInIntegration.cs"
click node_domain "https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/SolidWorks/Integration/AppDomainBoundary.cs"
click node_swapp "https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/SolidWorks/Application/SolidWorksApplication.cs"
click node_command "https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/SolidWorks/CommandManager/CommandManager.cs"
click node_commandgroup "https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/SolidWorks/CommandManager/Group/CommandManagerGroup.cs"
click node_commanditem "https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/SolidWorks/CommandManager/Item/CommandManagerItem.cs"
click node_flyout "https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/SolidWorks/CommandManager/Flyout/CommandManagerFlyout.cs"
click node_tab "https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/SolidWorks/CommandManager/Tab/CommandManagerTab.cs"
click node_model "https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/SolidWorks/Models/Model.cs"
click node_documents "https://github.com/angelsix/solidworks-api/tree/develop/SolidDna/AngelSix.SolidDna/SolidWorks/Models/Documents"
click node_features "https://github.com/angelsix/solidworks-api/tree/develop/SolidDna/AngelSix.SolidDna/SolidWorks/Models/Feature"
click node_selection "https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/SolidWorks/SelectionManager/ModelSelectionManager.cs"
click node_taskpane "https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/SolidWorks/Taskpane/Taskpane.cs"
click node_combase "https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/SolidWorks/Core/SolidDnaObject.cs"
click node_localization "https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/Localization/Implementation/LocalizationManager.cs"
click node_resources "https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/Localization/Implementation/FormatProviders/XmlFormatProvider.cs"
click node_di "https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/DependencyInjection/IoCContainer.cs"
click node_errors "https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/Errors/SolidDnaErrors.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_addin,node_plugin,node_domain,node_swapp toneBlue
class node_command,node_commandgroup,node_commanditem,node_flyout,node_tab toneAmber
class node_model,node_documents,node_features,node_selection,node_taskpane toneMint
class node_combase,node_localization,node_resources,node_di,node_errors toneRose
class node_developer,node_solidworks toneIndigo
class node_standalone toneTeal
```

## Components

### SOLIDWORKS Integration

- [Add-in Integration](https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/SolidWorks/Integration/AddIn/AddInIntegration.cs): `SolidDna/AngelSix.SolidDna/SolidWorks/Integration/AddIn/AddInIntegration.cs`
- [Plug-in Loading](https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/SolidWorks/Integration/PlugInIntegration.cs): `SolidDna/AngelSix.SolidDna/SolidWorks/Integration/PlugInIntegration.cs`
- [AppDomain Boundary](https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/SolidWorks/Integration/AppDomainBoundary.cs): `SolidDna/AngelSix.SolidDna/SolidWorks/Integration/AppDomainBoundary.cs`
- [Application Wrapper](https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/SolidWorks/Application/SolidWorksApplication.cs): `SolidDna/AngelSix.SolidDna/SolidWorks/Application/SolidWorksApplication.cs`

### Command UI

- [Command Manager](https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/SolidWorks/CommandManager/CommandManager.cs): `SolidDna/AngelSix.SolidDna/SolidWorks/CommandManager/CommandManager.cs`
- [Command Groups](https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/SolidWorks/CommandManager/Group/CommandManagerGroup.cs): `SolidDna/AngelSix.SolidDna/SolidWorks/CommandManager/Group/CommandManagerGroup.cs`
- [Command Items](https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/SolidWorks/CommandManager/Item/CommandManagerItem.cs): `SolidDna/AngelSix.SolidDna/SolidWorks/CommandManager/Item/CommandManagerItem.cs`
- [Command Flyouts](https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/SolidWorks/CommandManager/Flyout/CommandManagerFlyout.cs): `SolidDna/AngelSix.SolidDna/SolidWorks/CommandManager/Flyout/CommandManagerFlyout.cs`
- [Command Tabs](https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/SolidWorks/CommandManager/Tab/CommandManagerTab.cs): `SolidDna/AngelSix.SolidDna/SolidWorks/CommandManager/Tab/CommandManagerTab.cs`

### Model API

- [Model Wrapper](https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/SolidWorks/Models/Model.cs): `SolidDna/AngelSix.SolidDna/SolidWorks/Models/Model.cs`
- [Model Documents](https://github.com/angelsix/solidworks-api/tree/develop/SolidDna/AngelSix.SolidDna/SolidWorks/Models/Documents): `SolidDna/AngelSix.SolidDna/SolidWorks/Models/Documents`
- [Feature API](https://github.com/angelsix/solidworks-api/tree/develop/SolidDna/AngelSix.SolidDna/SolidWorks/Models/Feature): `SolidDna/AngelSix.SolidDna/SolidWorks/Models/Feature`
- [Selection Manager](https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/SolidWorks/SelectionManager/ModelSelectionManager.cs): `SolidDna/AngelSix.SolidDna/SolidWorks/SelectionManager/ModelSelectionManager.cs`
- [Taskpane API](https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/SolidWorks/Taskpane/Taskpane.cs): `SolidDna/AngelSix.SolidDna/SolidWorks/Taskpane/Taskpane.cs`

### Framework Services

- [COM Object Wrappers](https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/SolidWorks/Core/SolidDnaObject.cs): `SolidDna/AngelSix.SolidDna/SolidWorks/Core/SolidDnaObject.cs`
- [Localization](https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/Localization/Implementation/LocalizationManager.cs): `SolidDna/AngelSix.SolidDna/Localization/Implementation/LocalizationManager.cs`
- [Resource Providers](https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/Localization/Implementation/FormatProviders/XmlFormatProvider.cs): `SolidDna/AngelSix.SolidDna/Localization/Implementation/FormatProviders/XmlFormatProvider.cs`
- [Dependency Injection](https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/DependencyInjection/IoCContainer.cs): `SolidDna/AngelSix.SolidDna/DependencyInjection/IoCContainer.cs`
- [Error Handling](https://github.com/angelsix/solidworks-api/blob/develop/SolidDna/AngelSix.SolidDna/Errors/SolidDnaErrors.cs): `SolidDna/AngelSix.SolidDna/Errors/SolidDnaErrors.cs`

### Other components

- **Add-in Developer**
- [Standalone Template](https://github.com/angelsix/solidworks-api/blob/develop/Templates/SolidDNA.StandAlone/SolidDNA.StandAlone/Program.cs): `Templates/SolidDNA.StandAlone/SolidDNA.StandAlone/Program.cs`
- **SOLIDWORKS**

## Connections

- Add-in Developer → Add-in Integration: implements
- Standalone Template → Add-in Integration: connects via (evidence: `Templates/SolidDNA.StandAlone/SolidDNA.StandAlone/Program.cs`)
- Add-in Integration → SOLIDWORKS: connects
- Add-in Integration → Plug-in Loading: sets up (evidence: `SolidDna/AngelSix.SolidDna/SolidWorks/Integration/AddIn/AddInIntegration.cs`)
- Add-in Integration → AppDomain Boundary: sets up (evidence: `SolidDna/AngelSix.SolidDna/SolidWorks/Integration/AddIn/AddInIntegration.cs`)
- Plug-in Loading → Add-in Integration: configures app (evidence: `SolidDna/AngelSix.SolidDna/SolidWorks/Integration/PlugInIntegration.cs`)
- Add-in Integration → Application Wrapper: initializes (evidence: `SolidDna/AngelSix.SolidDna/SolidWorks/Integration/AddIn/AddInIntegration.cs`)
- Command Manager → Command Groups: creates (evidence: `SolidDna/AngelSix.SolidDna/SolidWorks/CommandManager/CommandManager.cs`)
- Command Groups → Command Items: adds (evidence: `SolidDna/AngelSix.SolidDna/SolidWorks/CommandManager/Group/CommandManagerGroup.cs`)
- Command Groups → Command Flyouts: configures (evidence: `SolidDna/AngelSix.SolidDna/SolidWorks/CommandManager/Group/CommandManagerGroup.cs`)
- Command Manager → Command Tabs: returns (evidence: `SolidDna/AngelSix.SolidDna/SolidWorks/CommandManager/CommandManager.cs`)
- Command Flyouts → Plug-in Loading: listens for callbacks (evidence: `SolidDna/AngelSix.SolidDna/SolidWorks/CommandManager/Flyout/CommandManagerFlyout.cs`)
- Model Wrapper → Model Documents: provides
- Model Wrapper → Feature API: provides
- Model Wrapper → Selection Manager: provides
- Model Wrapper → Taskpane API: supports
- Localization → Resource Providers: queries providers (evidence: `SolidDna/AngelSix.SolidDna/Localization/Implementation/LocalizationManager.cs`)
- Localization → Dependency Injection: accesses through (evidence: `SolidDna/AngelSix.SolidDna/Localization/Implementation/LocalizationManager.cs`)
- Command Manager → COM Object Wrappers: inherits wrappers (evidence: `SolidDna/AngelSix.SolidDna/SolidWorks/CommandManager/CommandManager.cs`)
