Zum Hauptinhalt springen

SpeamPlan — Brandschutz-Grundrissplanung

Zweck

SpeamPlan ist das Planungsmodul für Brandmeldeanlagen. Es wird als eigenes Modul angeboten, ist aber direkt in SpeamCore integriert — der Errichter plant im selben System, in dem er Kunden, Standorte, Anlagen und Aufträge führt.

Der Ablauf: einen Grundriss (DWG/DXF/PDF) je Etage hochladen, die Räume erkennen lassen, den Maßstab kalibrieren, die erforderlichen Melder normgerecht berechnen (nach DIN 14675 / DIN VDE 0833-2 / VdS 2095) und die Melder platzieren. Das Ergebnis wird strukturiert gespeichert (Etagen, Räume, Melder).

Die direkte Übernahme eines fertigen Plans in ein **Angebot**, einen **Auftrag** oder eine **Anlage** (z. B. Melder-Stückliste → [Verkaufsbeleg](/sales-documents)) ist das erklärte Ziel der Integration, aber **noch nicht umgesetzt**. Datenseitig ist ein Plan bereits mit **Kunde**, **Standort** und **Projekt** verknüpfbar, und je Melder ist ein `productCode` vorgesehen — die automatische Erzeugung von Belegen/Artikeln folgt in einer späteren Ausbaustufe.

Voraussetzungen

- SpeamPlan-Modul ist für den Mandanten freigeschaltet. - Berechtigung `view:Plan` (Liste/Editor öffnen), `create:Plan` (Plan anlegen). - Für die CAD-Verarbeitung: ein hochladbarer Grundriss (DWG, DXF oder PDF/Bild).

Berechtigungen (CASL)

Frontend-Page-Guard (requiredAbility in routes.tsx):

RouteGuard
/plans (Liste)view Plan
/plans/:id (Editor)view Plan

Datenzugriff (caslMiddleware): je Aktion view/create/update/delete auf die Subjects Plan, PlanFloor, PlanRoom, PlanDetector. Die Norm-Berechnung (POST /plans/calculate) erfordert view Plan.

Ablauf

1. Plan anlegen

Unter SpeamPlan (/plans) → + Neu: Name, optional Kunde, Standort und Projekt, dazu die Aufnahme-Angaben Gebäudetyp (buildingType) und Schutzkategorie (protectionCategory). Optional lässt sich schon beim Anlegen ein Grundriss hochladen.

2. Grundriss je Etage hochladen

Ein Plan hat mehrere Etagen (PlanFloor). Pro Etage wird eine Datei hochgeladen (POST /plan-floors/:id/upload): DWG, DXF oder PDF/Bild. PDFs/Bilder werden gerendert (PNG in doppelter Auflösung für die KI-Erkennung), CAD-Dateien für die Vektor-Auswertung vorbereitet.

3. Räume erkennen

Drei Wege, je nach Datenlage:

MethodeEndpointGrundlage
GeometrischPOST /plan-floors/:id/detect-roomsgeschlossene Wandzüge aus der DXF-Vektorgeometrie (Türöffnungen werden überbrückt)
KI-VisionPOST /plan-floors/:id/detect-rooms-aiAnalyse des gerenderten Grundriss-Bildes durch die KI (erkennt Raumgrenzen, Name, Typ)
Aus Viewer-GeometriePOST /plan-floors/:id/detect-rooms-from-wallsWand-Segmente aus dem geladenen APS/Forge-Modell (robust bei komplexen DWGs mit Blöcken/Xrefs)

Erkannte Räume werden als PlanRoom gespeichert (Polygon, Fläche, Typ, Höhe, ZMA-Stufe).

Die KI-Vision-Erkennung liefert einen **Vorschlag** für Raumgrenzen und -typen. Die fachliche **Kontrolle** — und damit die normrelevante Bewertung — bleibt beim Planer: Räume, Flächen, Höhen und ZMA-Angaben sind im Editor prüf- und korrigierbar, bevor gerechnet wird.

4. Maßstab kalibrieren

Über eine Referenzstrecke wird der Maßstab (Pixel ↔ Meter) gesetzt; POST /plan-floors/:id/scale rechnet Geometrie, Räume und Melder konsistent um.

5. Norm-Berechnung

POST /plans/calculate berechnet zustandslos (ohne Persistenz) je Raum die erforderlichen Melder nach DIN 14675 / DIN VDE 0833-2 / VdS 2095. Eingang je Raum: Länge, Breite, Höhe, optional Dachschräge/Wölbung, ZMA-Stufe (none/zma30/zma50), Türen ins Freie und Fluchtweglänge. Ergebnis (RoomCalcResult):

  • RM (Rauchmelder) und WM (Wärmemelder): Melder-Anzahl, Überwachungsfläche je Melder, Raster (Spalten × Zeilen), Abstände, Radius, Positionen.
  • HFM (Handfeuermelder): Anzahl aus Türen/Fluchtweg.
  • Warnungen bei Sonderfällen (z. B. sehr große Flächen, Höhen über Norm-Maximum).

Die Engine ist gegen einen Satz Referenzfälle aus der Ingenieurs-Tabelle abgesichert.

6. Melder platzieren und speichern

Im Editor werden die berechneten Melder automatisch ins Raster gesetzt oder manuell verschoben/ergänzt und als PlanDetector gespeichert (Typ rm/wm/manual_call_point/siren, Position, Radius, productCode).

Editor (/plans/:id)

Der Plan-Editor bietet:

  • Multi-Etagen — Umschalter zwischen den PlanFloors.
  • Zwei Ansichten: ein Autodesk-APS/Forge-Viewer (native DWG-2D/3D-Darstellung, Layer-Auswahl, Wand-Extraktion) und ein Fallback-Canvas mit parametrischem Wand-Editieren (wallEditing.ts).
  • Raum-Panel — Länge/Breite/Höhe, ZMA, Türen/Fluchtweg je Raum.
  • Live-Berechnung — Melderzahlen aktualisieren sich mit den Raumdaten.

Datenmodell

ModellWichtige FelderRelation
Planname, customerId, locationId, projectId, status (draft/active/archived), buildingType, protectionCategory
PlanFloorplanId, name, order, fileType (dxf/dwg/pdf), status (created/processing/roomsDetected/ready/failed), geometry (JSON, Wände in Metern), scale, floorHeightCmN:1 Plan
PlanRoomplanFloorId, name, type (general_room/hallway/staircase_elevator/technical/wet/unmatched), outerBoundary (Polygon), areaSqm, heightCm, zma, doorsToOutside, escapeRouteM, ignoredN:1 PlanFloor
PlanDetectorplanFloorId, planRoomId, kind (rm/wm/manual_call_point/siren), position {x,y}, radiusM, source (auto/manual), productCode, labelN:1 PlanFloor

Grundriss-Verarbeitung (DWG/DXF)

  • Konvertierung: DWG → DXF über den ODA File Converter (produktiv) bzw. LibreDWG (dwg2dxf, Fallback). Aus dem DXF werden Wände (Polylinien), Türen (Blöcke) und Beschriftungen (Text) extrahiert; die Einheit wird aus $INSUNITS mit Plausibilitätsprüfung abgeleitet.
  • Autodesk Platform Services (APS/Forge): Für die native Darstellung wird die Datei zu APS übersetzt (POST /plan-floors/:id/translate, Model Derivative → SVF) und mit einem kurzlebigen Viewer-Token (GET /plan-floors/:id/viewer-token) im Editor geladen. Aus dem geladenen Modell lassen sich Wand-Segmente vollständig extrahieren.
  • Wand-Layer: POST /plan-floors/:id/wall-layer wählt den relevanten CAD-Layer und parst die Geometrie neu.

Verknüpfungen zu anderen Modulen

Wiederverwendbare Konzepte

API/Schnittstellen (Auswahl)

MethodeEndpointZweckCASL
POST/api/plans/calculatezustandslose Norm-Berechnung je Raumview Plan
GET/POST/api/plansPläne lesen/anlegenview/create Plan
PATCH/DELETE/api/plans/:idändern/löschenupdate/delete Plan
POST/api/plan-floors/:id/uploadGrundriss hochladenupdate PlanFloor
POST/api/plan-floors/:id/detect-rooms · /detect-rooms-aiRaumerkennung (geometrisch / KI)update PlanFloor
POST/api/plan-floors/:id/scaleMaßstab setzen + umrechnenupdate PlanFloor
GET/api/plan-floors/:id/viewer-tokenAPS-Viewer-Tokenview PlanFloor
GET/POST/PATCH/api/plan-rooms, /api/plan-detectorsRäume und Melder pflegenje PlanRoom/PlanDetector

Versionshinweise

  • 2026-07-06: Initiale Veröffentlichung — SpeamPlan-Integration in SpeamCore dokumentiert: Grundriss-Upload (DWG/DXF/PDF), Raumerkennung (geometrisch, KI-Vision, APS), Maßstab-Kalibrierung, Norm-Berechnung nach DIN 14675 (POST /plans/calculate, RM/WM/HFM), Multi-Etagen-Editor mit Melder-Platzierung. Weiterverarbeitung (Plan → Angebot/Auftrag) als in Entwicklung gekennzeichnet (im Code noch nicht umgesetzt — verifiziert). Verifiziert an plan.model.ts, planFloor.model.ts, planRoom.model.ts, planDetector.model.ts, plan.router.ts, planFloor.router.ts, planCalc/engine.ts, PlanListPage.tsx, PlanEditorPage.tsx, routes.tsx, casl.ts.