Spaces:
Sleeping
Sleeping
Download packages/shared/src/generated/raummodell.ts from Bryan-HSLU/FP_POC: direct link, hf CLI and curl.
- Browser
- Download file 3.82 kB
-
https://huggingface.co/spaces/Bryan-HSLU/FP_POC/resolve/main/packages/shared/src/generated/raummodell.ts
- Command line
-
hf download hf://spaces/Bryan-HSLU/FP_POC/packages/shared/src/generated/raummodell.ts
-
curl -L -o raummodell.ts https://huggingface.co/spaces/Bryan-HSLU/FP_POC/resolve/main/packages/shared/src/generated/raummodell.ts
3.82 kB
| /* AUTOGENERIERT aus packages/shared/schemas – nicht von Hand ändern (pnpm codegen). */ | |
| export type Uuid = string; | |
| export type Semver = string; | |
| export type RoomType = "bad" | "kueche" | "wohnen" | "schlafen" | "essen" | "flur" | "sonstig"; | |
| /** | |
| * [x, z] in Metern (Grundriss-Ebene). | |
| * | |
| * @minItems 2 | |
| * @maxItems 2 | |
| */ | |
| export type Vec2 = [number, number]; | |
| export type AnschlussTyp = | |
| | "wasser" | |
| | "abwasser" | |
| | "elektro" | |
| | "starkstrom" | |
| | "lueftung" | |
| | "heizung"; | |
| /** | |
| * Vertrag 1: Output Raum-Engine → Input Solver/Viewer. y-up, rechtshändig, Meter; Grundriss in der x/z-Ebene. Quelle: Brain → Domaenenmodell-Schema-Spezifikation. | |
| */ | |
| export interface Raummodell { | |
| id: Uuid; | |
| schemaVersion: Semver; | |
| name: string; | |
| roomType: RoomType; | |
| source: "scan" | "video" | "plan-import" | "sample" | "manuell"; | |
| units: "m"; | |
| shell: { | |
| /** | |
| * Wand-SEGMENTE (kein Polygon): nur Segmente tragen kind massiv/offen/virtuell je Kante (Grossraum). Validator: Hülle geschlossen. | |
| * | |
| * @minItems 3 | |
| */ | |
| walls: [ | |
| { | |
| id: Uuid; | |
| start: Vec2; | |
| end: Vec2; | |
| height: number; | |
| thickness: number; | |
| kind: "massiv" | "offen" | "virtuell"; | |
| openings?: Uuid[]; | |
| }, | |
| { | |
| id: Uuid; | |
| start: Vec2; | |
| end: Vec2; | |
| height: number; | |
| thickness: number; | |
| kind: "massiv" | "offen" | "virtuell"; | |
| openings?: Uuid[]; | |
| }, | |
| { | |
| id: Uuid; | |
| start: Vec2; | |
| end: Vec2; | |
| height: number; | |
| thickness: number; | |
| kind: "massiv" | "offen" | "virtuell"; | |
| openings?: Uuid[]; | |
| }, | |
| ...{ | |
| id: Uuid; | |
| start: Vec2; | |
| end: Vec2; | |
| height: number; | |
| thickness: number; | |
| kind: "massiv" | "offen" | "virtuell"; | |
| openings?: Uuid[]; | |
| }[], | |
| ]; | |
| /** | |
| * Wird aus den Wand-Segmenten ABGELEITET/validiert, nicht doppelt gepflegt. | |
| */ | |
| floor: { | |
| /** | |
| * @minItems 3 | |
| */ | |
| polygon: [Vec2, Vec2, Vec2, ...Vec2[]]; | |
| area?: number; | |
| }; | |
| ceiling: { | |
| height: number; | |
| }; | |
| }; | |
| openings: { | |
| id: Uuid; | |
| type: "door" | "window"; | |
| hostWall: Uuid; | |
| /** | |
| * Abstand des Öffnungs-Anfangs vom Wand-Start entlang der Wand (m). | |
| */ | |
| offset: number; | |
| width: number; | |
| height: number; | |
| /** | |
| * Brüstungshöhe; Türen: 0. | |
| */ | |
| sill: number; | |
| }[]; | |
| /** | |
| * Funktionsbereiche innerhalb einer Hülle (Grossraum). Regeln gelten pro Zone. | |
| */ | |
| zones: { | |
| id: Uuid; | |
| name: string; | |
| roomType: RoomType; | |
| /** | |
| * @minItems 3 | |
| */ | |
| polygon: [Vec2, Vec2, Vec2, ...Vec2[]]; | |
| }[]; | |
| /** | |
| * Anschlüsse – die Brücke zu den harten connection-Regeln. Standort genügt. | |
| */ | |
| fixpoints: { | |
| id: Uuid; | |
| type: AnschlussTyp; | |
| position: Vec2; | |
| wall?: Uuid; | |
| heightFromFloor?: number; | |
| mount: "wand" | "boden"; | |
| origin: "bestand" | "vorwand" | "manuell"; | |
| zone?: Uuid | null; | |
| }[]; | |
| /** | |
| * Erkannte Bestandsobjekte (für Umbau ggf. entfernen/behalten). | |
| */ | |
| objects: { | |
| id: Uuid; | |
| label: string; | |
| geometry: { | |
| repr: "bbox" | "mesh-simpl" | "voxel"; | |
| bbox: Masse; | |
| meshRef?: string; | |
| }; | |
| pose: Pose; | |
| movable: boolean; | |
| confidence: number; | |
| needsReview?: boolean; | |
| }[]; | |
| meta: { | |
| captureMethod: "ar" | "sfm" | "plan" | "sample" | "manuell"; | |
| coverageScore?: number; | |
| estimatedError_cm: number; | |
| /** | |
| * Nutzer hat Masse bestätigt → Unsicherheits-Marge der Konfidenz-Ampel wird 0. | |
| */ | |
| geometryConfirmed: boolean; | |
| geometryRef?: string; | |
| }; | |
| } | |
| export interface Masse { | |
| w: number; | |
| d: number; | |
| h: number; | |
| } | |
| export interface Pose { | |
| pos: Vec2; | |
| /** | |
| * Rotation um y in Grad (POC: 2D-Top-Down). | |
| */ | |
| yawDeg: number; | |
| } | |