RelGeo

Bagian aktif Presentation

25. Views and Sheets

Status dokumen: Normative

Views dan Sheets adalah dua section top-level yang bekerja bersama untuk mengatur presentasi gambar tanpa memengaruhi model geometry.

Dalam kontrak aktif v0.5, section ini sah dan normatif.

Namun secara konseptual, views dan terutama sheets lebih tepat dibaca sebagai surface presentasi/domain-facing daripada sebagai kapabilitas inti bahasa RelGeo.


25.1 View

View mendefinisikan “jendela” ke satu object target beserta skala dan filter role-nya.

views:
  front:
    target: panel
    scale: "1:2"
    filter:
      roles: ["final", "centerline", "hidden"]

Fields

FieldWajibTipeDefaultKeterangan
targetstring (object ID)ID object yang menjadi subjek view
scalestring / number"1:1"Format "A:B" misal "1:2" (scale factor 0.5) atau "2:1" (scale factor 2). Nilai desimal juga diterima
filter.rolesarray of stringRole yang diikutsertakan. Jika tidak ada, semua role diikutsertakan
metaobjectMetadata tambahan

Semantics

  • View tidak mengubah model geometry - hanya snapshot read-only dari subset objects
  • Scope view dimulai dari target lalu meliputi seluruh children-nya secara rekursif
  • Bounding box view = bounding box objek dalam scope × scaleFactor
  • Role "construction", "guide", "centerline", "hidden" selalu diabaikan saat menghitung bounding box (terlepas dari filter.roles)

25.2 Sheet

Sheet mendefinisikan ukuran kertas dan menempatkan satu atau lebih view di atasnya.

sheets:
  drawing1:
    size: A4
    orientation: landscape
    views:
      - use: front
        place:
          topLeft: [20mm, 20mm]

Fields

FieldWajibTipeDefaultKeterangan
sizestring / [expr, expr]Ukuran kertas. Wajib ada
orientation"landscape" / "portrait"landscapeJika portrait, width dan height ditukar
viewsarray of placementDaftar view yang ditempatkan di sheet
metaobjectMetadata tambahan

Standard Sheet Sizes

Nilai size yang didukung (orientasi default landscape):

NilaiUkuran (mm)
"A0"1189 × 841
"A1"841 × 594
"A2"594 × 420
"A3"420 × 297
"A4"297 × 210

Untuk ukuran kustom, gunakan array ekspresi panjang (dapat merujuk parameters):

sheets:
  customSheet:
    size: ["500mm", "400mm"]

25.3 View Placement

Setiap item dalam sheets.<id>.views menempatkan sebuah view di posisi tertentu pada sheet.

sheets:
  drawing1:
    size: A3
    views:
      - use: front
        place:
          topLeft: [20, 20]
      - use: detail
        place:
          center: [300, 150]

Fields

FieldKeterangan
useWajib. Nama view yang digunakan. Harus merujuk ke view yang terdefinisi di views
place.topLeftPosisi sudut kiri-atas view di koordinat sheet. Format: [x, y]
place.centerPosisi titik tengah view di koordinat sheet. Format: [x, y]

Jika place tidak ditentukan, view ditempatkan di koordinat [0, 0].

Hanya satu anchor (topLeft atau center) yang boleh digunakan per placement.


25.4 Rendering Behavior

Saat sheet di-render (misal ke SVG dengan opsi sheetId):

  • Background: latar abu-abu muda sebagai representasi halaman
  • Sheet border: garis tepi sesuai scene.padding sebagai batas area gambar
  • Setiap view:
    • Dirender di posisi place dengan transform: translate(x, y) scale(scaleFactor) translate(-viewBbox.x, -viewBbox.y)
    • Batas view ditampilkan sebagai dashed rectangle
    • Label nama view + skala ditampilkan di bawah batas view
  • Title block: di pojok kanan-bawah, berisi nama sheet, versi RelGeo, tanggal, ukuran kertas

Untuk me-render sheet tertentu, gunakan opsi sheetId pada renderer:

renderToSVG(scene, { sheetId: "drawing1" });

[!NOTE] Sheet bersifat murni composition/render layer. Ia tidak mengubah model geometry, tidak menciptakan objects baru, dan tidak memengaruhi dependency graph.


25.5 Error Codes

ErrorKondisi
MISSING_REQUIRED_FIELDsize tidak ada pada sheet
INVALID_VALUEsize bukan string atau [expr, expr]; orientation bukan "portrait"/"landscape"; views bukan array; topLeft/center bukan [x, y]
UNKNOWN_REFERENCEtarget pada view tidak ditemukan di objects; use pada placement tidak ditemukan di views

← 24. Drawing Roles  |  ↑ Index  |  26. Metadata →