MBOM fabryczny

Referencja schematu

Dokument scalarcut.factory_bom.v1.1 pole po polu: nagłówek, elementy, typy cięć, przepisy, zaokrąglanie opakowań, materiały eksploatacyjne, sumy i stabilne identyfikatory.

Dokument Factory MBOM jest wersjonowany przez najwyższego poziomu ciąg schema. Obecna wersja to scalarcut.factory_bom.v1.1. Traktuj pole schema jako kontrakt: jeśli zmienia się stała lub znaczenie pola, wersja jest podbijana.

Ten schemat opisuje rzeczywiste MBOM projektów — dokument pobierany przyciskiem Factory MBOM w planerze i zwracany przez API dla własnych projektów przedsiębiorstwa. Publiczna próbka „garażu" używana w dokumentacji i w panelu Try MBOM API jest zgodna z tą samą wersją scalarcut.factory_bom.v1.1.

Podwójne jednostki, jedna prawda

Wewnętrzna siatka planera jest w metrach, ale eksportowany dokument jest w milimetrach:

  • Rozmiary cięć i pola eksportu to całkowite milimetry (round(m × 1000)).
  • Dokument podaje unit_system: "metric" i lattice_unit: "mm".
  • Kanoniczne rozmiary elementów to zawsze w_mm / h_mm.
  • Wyświetlanie w calach/stopach w planerze konwertuje z siatki milimetrów i nigdy nie jest zapisywane z powrotem do kluczy cięć. Ten eksport nie zawiera kolumn w calach.

Nagłówek dokumentu

Pole Znaczenie
schema scalarcut.factory_bom.v1.1
scene_id Id sceny planera lub null, jeśli nie zapisano
project_id W tej rundzie to samo co scene_id (jedna scena płytek = jeden klucz ERP)
title Wyświetlana etykieta sceny
unit_system / lattice_unit / unit_policy metric / mm / ciąg polityki
rates Zamrożone stałe materiałów eksploatacyjnych (poniżej)
totals Zestawienie pomieszczenia po powierzchniach
surfaces / pieces / recipes Zestawienie po powierzchni, lista cięć i przepisy CRE

Elementy

Element opisuje grupę cięć — rozmiar powtórzony qty razy. Kluczowe pola:

Pole Znaczenie
surface_id wall-a … wall-d lub floor
letter Litera legendy zgodna z listą cięć PDF (A, B, …)
group_id Stabilny identyfikator grupy wyliczony z położenia + rozmiaru
sku SKU z katalogu lub puste w planerze własnym
w_mm / h_mm Kanoniczny rozmiar w milimetrach
cut_type Klasa cięcia dla tego elementu
qty Liczba identycznych elementów
fragile True, gdy cięcie jest poniżej progu kruchości 50 mm
cre_recycled True, gdy element jest przetworzony przez Cut Recycling Engine
cre_parent Klucz rozmiaru płytki źródłowej (tileW×tileH mm) przy recyklingu, inaczej puste
is_l_cut True dla cięć w kształcie L

Typy cięć

cut_type klasyfikuje, jak element jest wytwarzany. Integrator może uzależnić od niego zachowanie stołu cięcia. Kruche elementy są oznaczane osobno, aby można je było skierować do specjalnej obsługi zamiast na maszynę, która je pokruszy.

Cięcia w L

Elementy w kształcie L są oznaczone is_l_cut i niosą wymiary ramion w geometrii elementu. Zagnieżdżanie CRE nadal traktuje każdy element jako jego prostokąt ograniczający w_mm × h_mm.

Opcjonalny wielokąt odpadu (geometry)

Element może zawierać addytywny obiekt geometry:

"geometry": {
  "frame": "tile_local_mm",
  "vertices_mm": [[0, 0], [180, 0], [180, 600], [0, 600]]
}
  • frame to milimetry wyrównane do ściany, przesunięte tak, aby minimum AABB nominalnej nieprzyciętej płytki wynosiło (0, 0).
  • Obecny, gdy odpad jest pojedynczym wypukłym/prostym pierścieniem (fragment po przekątnej 45° lub jodełce albo prostokątny odpad równoległy do osi).
  • Pomijany dla cięć w L, odpadów wielofragmentowych i grup ilości, których członkowie nie dzielą tego samego pierścienia.
  • Nie jest ścieżką CNC i nie wprowadza dowolnych kątów ostrza — CRE nadal zagnieżdża prostokąty w_mm × h_mm.
  • Nieznane pola są addytywne: ERP ignorujący geometry zachowuje w_mm / h_mm / cut_type / is_l_cut.

Zaokrąglanie opakowań

Gdy znana jest całkowita liczba elementów (totalPieces):

  1. orderPieces = ceil(totalPieces × (1 + wastage) − 1e-12)
  2. Przy ilości w opakowaniu (pack_qty, płytek w kartonie) równej 1 lub więcej:
    • fullBoxes = floor(orderPieces / pack_qty)
    • looseTiles = orderPieces % pack_qty
    • boxes_to_order = fullBoxes — pozostałe płytki nie są zaokrąglane do dodatkowego kartonu.
    • pack_mode = "full_boxes_plus_loose"
  3. Bez ilości w opakowaniu: pack_mode = "pack_unset", boxes_to_order = null; pozycja płytek nadal wynosi orderPieces.

Gdy totalPieces jest nieznane: pack_mode = "area_ceil_boxes", boxes_to_order = ceil(grossTileAreaSqm / sqmPerBox − 1e-12).

Pola pakowania powierzchni: pack_qty, pack_mode, order_pieces, full_boxes, loose_tiles, boxes_to_order i przestarzały alias boxes (równy boxes_to_order).

Materiały eksploatacyjne (zamrożone stawki)

Materiały eksploatacyjne są wysyłane jako wersja formuły rates oraz jako kg/L po powierzchni i w totals. Te stałe są zamrożone ze schematem; jeśli zmieniają się między kompilacjami, kontrakt się zmienił i schemat jest podbijany.

Stała Wartość Zastosowanie
adhesive_kg_per_sqm 4.5 adhesiveKg = grossTileAreaSqm × 4.5
adhesive_bag_kg 25 adhesiveBags = ceil(adhesiveKg / 25 − 1e-12)
primer_l_per_sqm 0.2 primerL = grossTileAreaSqm × 0.2
grout_density_kg_m3 1200 masa fugi CAD
grout_compaction_factor 1.05 masa fugi CAD

Masa fugi jest obliczana z geometrii wzoru z gęstością × zagęszczeniem. Zaokrąglanie wyświetlania (kroki 0.1) dotyczy tylko arkuszy dla ludzi; fabryczny JSON przechowuje wartość silnika przed zaokrągleniem wyświetlania.

Zestawienie sum

totals sumuje pola zestawienia powierzchni, plus:

  • cut_qty — suma qty elementów (musi zgadzać się z nagłówkiem listy cięć planu przy weryfikacji).
  • boxes_to_order (i przestarzały boxes) — suma liczby kartonów po powierzchniach, gdzie ustawione.

Stabilne identyfikatory

  • Powierzchnie: wall-a, wall-b, wall-c, wall-d, floor.
  • Grupy cięć: group_id z klucza położenia + rozmiaru (w×h mm lub klucz ramienia L).
  • Litery legendy: A, B, … według kolejności tablicy grup, identycznie z listą cięć PDF.

Ta sama siatka zawsze daje te same group_id i litery przy ponownym eksporcie.

SKU

  • Pusty sku jest dozwolony w planerze własnym (demo, bez katalogu).
  • Osadzenie katalogu/widgetu musi wypełniać sku dla rzeczywistego zasilania fabryki.
  • Pusty SKU nie blokuje eksportu.

Lista elementów CSV

CSV to tylko lista elementów (te same kolumny co v1). Pakowanie, identyfikatory, stawki, sumy i opcjonalna geometry żyją w JSON.

Kolumny: surface_id, letter, group_id, sku, w_mm, h_mm, cut_type, qty, fragile, cre_recycled, cre_parent, is_l_cut.