Project structure
You bought the source. Here is where to start reading.
This chapter is for source customers. The first five minutes with a repository decide your opinion of it, so "where to start" comes first rather than leaving you to dig.
Solution layout
PreciSim.sln
├── 01.PreciSim.Core Base types: frames, transforms, units, result types
├── 02.PreciSim.Devices Device interfaces + real hardware drivers
├── 03.PreciSim.Engine Virtual device engine ← ❌ not part of the source delivery
├── 04.PreciSim.Vision Image processing: circle centres, checkerboards, edges
├── 05.PreciSim.Calibration The six calibration chains
├── 06.PreciSim.Workflow Station + DAG workflow
├── 07.PreciSim.App WPF HMI (MVVM)
├── 08.PreciSim.Interop vmc.dll and the Modbus server
└── tests/ Unit tests and calibration regression tests
The engine (03) is closed source. The source package ships it as a compiled assembly plus complete model documentation. Everything else is source. Which package you bought decides whether you get 04+05, or 07, or all of it — see the source licence.
Three files to read on day one
| File | Why |
|---|---|
01.PreciSim.Core/Geometry/Transform2d.cs |
The foundation of every coordinate transform; teaches the naming conventions |
05.PreciSim.Calibration/Procedures/PixelSizeProcedure.cs |
A complete calibration chain; the other five follow its shape |
07.PreciSim.App/Views/CalibrationWizardView.xaml |
How the UI binds to a chain, including progress, cancel and single-step re-runs |
After those three you can add a seventh chain yourself.
Dependency direction
App → Workflow → Calibration → Vision → Devices → Core
↘ Engine (interfaces only; the implementation is a closed assembly)
Dependencies only point downward. Any reverse reference is caught by the architecture test in
CI (tests/ArchitectureTests.cs). That rule is the entire reason this code is reusable.
It builds on a clean clone
git clone https://github.com/precisim/precisim-hmi-source.git
cd precisim-hmi-source
dotnet restore
dotnet build -c Release
dotnet testNo dependency on paths or private packages on the author's machine. CI runs clone → restore → build → test on every release, so a fresh clone compiles. If it does not, that is our bug — open an issue.
Keeping up with updates
git pull origin main
git log --oneline v0.1.0..Every release is tagged and has release notes. Breaking changes only happen on major versions and are called out separately in the changelog.
Next: adding a page.