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 +23 -21
- package/dist/index.cjs +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +102 -125
- package/dist/index.d.ts +102 -125
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/docs/screenshots/README.md +1 -1
- package/package.json +2 -3
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
[](https://www.npmjs.com/package/beckhoff-xts-viewer-3d)
|
|
4
4
|
[](https://www.npmjs.com/package/beckhoff-xts-viewer-3d-assets)
|
|
5
5
|
[](LICENSE)
|
|
6
|
-
[](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 (
|
|
112
|
-
|
|
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
|
-
| <br>**Multi-track placement** — two independent XTS lines composed via `trackTransform`. | <br>**Stations + Areas** —
|
|
154
|
+
| <br>**Multi-track placement** — two independent XTS lines composed via `trackTransform`. | <br>**Stations + Areas** — cleanroom / safety-area zone overlays, station tubes with stop markers. |
|
|
155
155
|
| <br>**Stator heatmap** — vertex-colour gradient along the centerline, fed from your live drive currents. | <br>**Sub-mm collision detection** — continuous monitor with banner; pair-wise 1D arc-length test on the shared chain. |
|
|
156
156
|
| <br>**Drive status** — emissive blink at 1 Hz on the GLB itself + camera-facing 3D icons (▲ warning, ⊙ error). | <br>**Perf stress** — 750 movers animated at 60 Hz with zero React commits in steady state. |
|
|
157
157
|
| <br>**PCF-soft shadows + IBL** — opt-in shadows on a transparent canvas; image-based lighting on by default. | <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
|
|
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: '
|
|
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
|
-
|
|
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
|
-
|
|
555
|
-
|
|
556
|
-
|
|
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
|
-
|
|
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
|
-
|
|
577
|
-
|
|
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
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
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
|
-
│ └──
|
|
624
|
-
├── .github/workflows/
|
|
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
|
-
|
|
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
|
-
|
|
674
|
+
pnpm release:dry-run
|
|
673
675
|
```
|
|
674
676
|
|
|
675
677
|
See **[docs/RELEASING.md](docs/RELEASING.md)** for the full guide:
|