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"ilattice_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]]
}
frameto 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
geometryzachowujew_mm/h_mm/cut_type/is_l_cut.
Zaokrąglanie opakowań
Gdy znana jest całkowita liczba elementów (totalPieces):
orderPieces = ceil(totalPieces × (1 + wastage) − 1e-12)- 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_qtyboxes_to_order = fullBoxes— pozostałe płytki nie są zaokrąglane do dodatkowego kartonu.pack_mode = "full_boxes_plus_loose"
- Bez ilości w opakowaniu:
pack_mode = "pack_unset",boxes_to_order = null; pozycja płytek nadal wynosiorderPieces.
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— sumaqtyelementów (musi zgadzać się z nagłówkiem listy cięć planu przy weryfikacji).boxes_to_order(i przestarzałyboxes) — suma liczby kartonów po powierzchniach, gdzie ustawione.
Stabilne identyfikatory
- Powierzchnie:
wall-a,wall-b,wall-c,wall-d,floor. - Grupy cięć:
group_idz klucza położenia + rozmiaru (w×hmm 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
skujest dozwolony w planerze własnym (demo, bez katalogu). - Osadzenie katalogu/widgetu musi wypełniać
skudla 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.