beckhoff-xts-viewer-3d 3.0.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  [![npm](https://img.shields.io/npm/v/beckhoff-xts-viewer-3d.svg)](https://www.npmjs.com/package/beckhoff-xts-viewer-3d)
4
4
  [![npm assets](https://img.shields.io/npm/v/beckhoff-xts-viewer-3d-assets.svg?label=assets)](https://www.npmjs.com/package/beckhoff-xts-viewer-3d-assets)
5
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
6
- [![Build](https://github.com/philippleidig/beckhoff-xts-viewer-3d/actions/workflows/build.yml/badge.svg)](https://github.com/philippleidig/beckhoff-xts-viewer-3d/actions/workflows/build.yml)
6
+ [![Release](https://github.com/philippleidig/beckhoff-xts-viewer-3d/actions/workflows/release.yml/badge.svg?branch=main)](https://github.com/philippleidig/beckhoff-xts-viewer-3d/actions/workflows/release.yml)
7
7
 
8
8
  A reusable React component that renders **Beckhoff XTS** linear-motor systems
9
9
  (plus Hepco GFX rail variants) in 3D. Drop a single `<XtsViewer3D>` into a
@@ -108,8 +108,8 @@ reflections, ACES tone mapping and anisotropic textures are on by default.
108
108
  - **Stations, Areas, Dimensions, InfoBars** — full 2D feature parity, plus
109
109
  camera-facing mm-value labels, intermediate ticks, and a 7-shape stop-marker
110
110
  palette (Diamond / Tick / Sphere / Cone / Cube / Cylinder / None) settable
111
- per-station. **Areas** are stop-position-free zone overlays (Reinraum,
112
- Sicherheitskreis, manueller Zugriff) — text + colour, multi-part.
111
+ per-station. **Areas** are stop-position-free zone overlays (cleanroom,
112
+ safety loop, manual access) — text + colour, multi-part.
113
113
  Stop-position values can be track-relative (default) or station-relative.
114
114
  - **Stop-position ghost movers** — `display.showStopPositionMovers` renders a
115
115
  static, semi-transparent mover GLB at every active stop, tinted to the
@@ -151,7 +151,7 @@ reflections, ACES tone mapping and anisotropic textures are on by default.
151
151
 
152
152
  | | |
153
153
  |---|---|
154
- | ![Multi-track](https://cdn.jsdelivr.net/npm/beckhoff-xts-viewer-3d/docs/screenshots/02-multi-track.png)<br>**Multi-track placement** — two independent XTS lines composed via `trackTransform`. | ![Stations + Areas](https://cdn.jsdelivr.net/npm/beckhoff-xts-viewer-3d/docs/screenshots/03-stations-areas.png)<br>**Stations + Areas** — Reinraum / Sicherheitsbereich zone overlays, station tubes with stop markers. |
154
+ | ![Multi-track](https://cdn.jsdelivr.net/npm/beckhoff-xts-viewer-3d/docs/screenshots/02-multi-track.png)<br>**Multi-track placement** — two independent XTS lines composed via `trackTransform`. | ![Stations + Areas](https://cdn.jsdelivr.net/npm/beckhoff-xts-viewer-3d/docs/screenshots/03-stations-areas.png)<br>**Stations + Areas** — cleanroom / safety-area zone overlays, station tubes with stop markers. |
155
155
  | ![Stator heatmap](https://cdn.jsdelivr.net/npm/beckhoff-xts-viewer-3d/docs/screenshots/04-stator-heatmap.png)<br>**Stator heatmap** — vertex-colour gradient along the centerline, fed from your live drive currents. | ![Collision detection](https://cdn.jsdelivr.net/npm/beckhoff-xts-viewer-3d/docs/screenshots/05-collision.png)<br>**Sub-mm collision detection** — continuous monitor with banner; pair-wise 1D arc-length test on the shared chain. |
156
156
  | ![Drive status](https://cdn.jsdelivr.net/npm/beckhoff-xts-viewer-3d/docs/screenshots/06-drive-status.png)<br>**Drive status** — emissive blink at 1 Hz on the GLB itself + camera-facing 3D icons (▲ warning, ⊙ error). | ![Perf stress](https://cdn.jsdelivr.net/npm/beckhoff-xts-viewer-3d/docs/screenshots/07-perf-stress.png)<br>**Perf stress** — 750 movers animated at 60 Hz with zero React commits in steady state. |
157
157
  | ![Shadows + IBL](https://cdn.jsdelivr.net/npm/beckhoff-xts-viewer-3d/docs/screenshots/08-shadows.png)<br>**PCF-soft shadows + IBL** — opt-in shadows on a transparent canvas; image-based lighting on by default. | ![Top-down export](https://cdn.jsdelivr.net/npm/beckhoff-xts-viewer-3d/docs/screenshots/09-screenshot-export.png)<br>**`exportScreenshot('top-down')`** — orthographic, AABB-fit, mirrors the 2D viewer convention. |
@@ -374,7 +374,7 @@ running at full speed, no `preserveDrawingBuffer` perf cost.
374
374
  ### 7. Mark zones with Areas
375
375
 
376
376
  Areas are stop-position-free range overlays — like Stations, but with no
377
- markers. Use them for Reinraum / Sicherheitsbereich / manueller-Zugriff
377
+ markers. Use them for cleanroom / safety-area / manual-access
378
378
  zones that don't drive any mover behaviour:
379
379
 
380
380
  ```tsx
@@ -384,7 +384,7 @@ zones that don't drive any mover behaviour:
384
384
  areas: [
385
385
  {
386
386
  areaId: 1,
387
- description: 'Reinraum',
387
+ description: 'Cleanroom',
388
388
  isEnabled: true,
389
389
  partOids: [0],
390
390
  startPositionOnPart: 250,
@@ -548,12 +548,14 @@ change.
548
548
 
549
549
  ## Development setup
550
550
 
551
- Clone the repo, then:
551
+ This repo is a pnpm workspace — `pnpm-lock.yaml` is the source of
552
+ truth and `npm ci` / `npm install` will not work. Get pnpm via
553
+ `npm install -g pnpm@10` (or any other installer), then:
552
554
 
553
555
  ```bash
554
- npm install
555
- npm test # 166 unit + property tests
556
- npm run typecheck
556
+ pnpm install
557
+ pnpm test # 310 unit + property tests
558
+ pnpm typecheck
557
559
  ```
558
560
 
559
561
  ### Run the playground
@@ -563,7 +565,7 @@ feature — selection, calibration, composer, multi-track, shadows, ViewCube,
563
565
  drive-status icons, the perf stress test, IBL toggle, intensity slider.
564
566
 
565
567
  ```bash
566
- npm run dev # http://127.0.0.1:5173
568
+ pnpm dev # http://127.0.0.1:5173
567
569
  ```
568
570
 
569
571
  Sidebar controls let you switch demos, animate movers, toggle shadows /
@@ -573,8 +575,8 @@ and live-edit calibration overrides.
573
575
  ### Build the library
574
576
 
575
577
  ```bash
576
- npm run build # → dist/
577
- npm run playground:build
578
+ pnpm build # → dist/
579
+ pnpm playground:build
578
580
  ```
579
581
 
580
582
  ### Asset pipeline
@@ -583,10 +585,10 @@ CAD source files (`stepfiles/*.stp`) are converted to runtime-ready GLBs
583
585
  and per-asset JSON sidecars. To regenerate after touching a STP:
584
586
 
585
587
  ```bash
586
- npm run assets:convert # STP → GLB via occt-import-js
587
- npm run assets:inspect # refresh docs/spec/data/glb-inspection.json
588
- npm run assets:generate-sidecars # module .meta.json (origin-correction)
589
- npm run assets:generate-mover-sidecars
588
+ pnpm assets:convert # STP → GLB via occt-import-js
589
+ pnpm assets:inspect # refresh docs/data/glb-inspection.json
590
+ pnpm assets:generate-sidecars # module .meta.json (origin-correction)
591
+ pnpm assets:generate-mover-sidecars
590
592
  ```
591
593
 
592
594
  The sidecar generators are idempotent: existing files are skipped so they
@@ -620,8 +622,8 @@ type registration, sidecar generation, calibration workflow — follow
620
622
  │ ├── ADDING-A-MODULE.md How to register a new module / mover / tool
621
623
  │ ├── RELEASING.md How to publish a new release
622
624
  │ ├── screenshots/ README + docs gallery
623
- │ └── spec/ Full specification (path math, frames, asset rules)
624
- ├── .github/workflows/ build.yml + release.yml
625
+ │ └── data/ GLB AABB inspection JSON
626
+ ├── .github/workflows/ release.yml + release-assets.yml + deploy-docs.yml
625
627
  └── README.md
626
628
  ```
627
629
 
@@ -632,7 +634,7 @@ selection logic, asset URL composition, the composer reducer, dimension
632
634
  ticks, and the multi-track transform composition. Run focused:
633
635
 
634
636
  ```bash
635
- npx vitest run src/geometry/__tests__/ChainBuilder.test.ts
637
+ pnpm vitest run src/geometry/__tests__/ChainBuilder.test.ts
636
638
  ```
637
639
 
638
640
  ---
@@ -669,7 +671,7 @@ calibration values can never be overwritten by the pipeline.
669
671
  Preview the next release locally:
670
672
 
671
673
  ```bash
672
- npm run release:dry-run
674
+ pnpm release:dry-run
673
675
  ```
674
676
 
675
677
  See **[docs/RELEASING.md](docs/RELEASING.md)** for the full guide: