Enter the sheet size, kerf, grain direction and the width, height and quantity of the parts you need (up to 8 kinds of parts; rows with both width and height blank are skipped). The thickness and price per sheet may be left blank.
Table of Contents
-
What you can do on this page
-
What is this calculation used for?
-
How to Use
-
Formulas and figures
-
Symbols and terms
-
Good to know before you start
-
How to calculate it in Excel
-
How to calculate it in Google Sheets
-
How to calculate it in Python
-
How to write it in LaTeX and other math languages (copy and paste)
-
How to have ChatGPT do the calculation
-
DataChef Features
-
Related Features
-
NumberChef Calculators List
What you can do on this page
- Enter the size of the stock sheet (pick 4 × 8 ft, 4 × 10 ft, 4 × 12 ft and more from the list, or type it in) and the width, height and quantity of the parts you need (up to 8 kinds), and see right away how many sheets to buy
- It allows for the kerf (the thickness of the saw blade, 1/8 in by default) and the grain direction (whether parts may be turned 90°). For a single kind of part it counts a grid of "across × down" (also comparing the turned orientation and turned parts in the leftover strip); for several kinds of parts it combines them with shelf packing, filling rows from the tallest part down
- You get a color-coded cutting layout for each sheet, showing what goes where, and a layout table such as "Sheet 1: Top×2+Side×2, offcut 5.83 ft²". It also shows how many sheets combined cutting saves compared with cutting each part from its own sheets
- It shows the offcut area, the yield (total area of the parts ÷ total area of the sheets) and the theoretical minimum number of sheets from area (the lower bound), and whether the layout matches that bound. Enter the price per sheet (optional) to get the estimated cost
- A plain-language explanation of the formulas and copy-and-paste formulas for Excel, Google Sheets and Python are all on this page
What is this calculation used for?
Say you are building a project from 4 × 8 ft plywood (96 × 48 in) with 2 tops of 47 × 24 in, 4 sides of 36 × 21 in and 3 shelves of 30 × 18 in. Buying separately for each part takes 3 sheets, but combined cutting with rows by height needs only 2 (sheet 1: 2 tops + 2 sides; sheet 2: 2 sides + 3 shelves).
Plywood is bulky, hard to fit in a car and a nuisance to store if you buy too much, so deciding the number of sheets and the layout before you shop avoids waste. Use "Keep aligned" for decorative plywood whose grain should line up, and "Doesn't matter" for sheathing or boards you will paint, to save sheets.
A home center's panel saw can only cut straight from one edge of the sheet to the other. Some stores make a few cuts for free and charge per cut after that, and some limit the number of cuts per sheet. The layout figure on this page follows that kind of cut (guillotine cuts), so you can give clear instructions following the figure, such as "first rip the sheet at 24 in from the top edge, then cut the upper strip at 47 in from the left" (the kerf is what the blade removes, so the cut positions are the part sizes themselves).
Counting the cuts beforehand gives you an idea of the fee and tells you whether you are within any limit. Set the kerf to match the store's panel saw blade (1/8 in is common, but you can ask). Some stores will not cut very narrow strips (a couple of inches or less), angles or cuts that stop partway, so if you need many thin parts, check first.
24 × 24 in parts look like they should give 8 from a 4 × 8 sheet with no kerf, but with a 1/8 in kerf you get only \(\lfloor 96.125 \div 24.125 \rfloor = 3\) across and \(\lfloor 48.125 \div 24.125 \rfloor = 1\) down, so 3 pieces. Just changing them to 23 7/8 × 23 7/8 in gives 4 across × 2 down = 8.
Changing a part size slightly at the design stage can make a big difference in the number of sheets. Before you shop, try adjustments such as making the shelves 1/8 in shallower or splitting a top into two pieces with this calculator to save on materials.
In cabinet and furniture shops, millwork shops, sign shops (aluminum composite and acrylic panels) and sheet metal shops, material is a large share of the cost, so how parts are cut from sheets (nesting) and the yield are managed every day. The "yield" on this page, the total area of the parts divided by the total area of the sheets, has the same definition used in industry.
Real shops lay out hundreds of kinds of parts, so they use dedicated nesting software. Shelf packing is a textbook heuristic for 2D rectangle packing and one of the ideas behind such software.
Anything where you cut rectangles from standard-size sheets can be calculated with the same formulas as plywood: acrylic and PVC sheets, drywall (4 × 8, 4 × 10 and 4 × 12 ft), decorative panels, OSB and so on. For materials that you score and snap, such as glass or drywall, set the kerf to 0 (tile too, if you use a manual cutter; if you use a wet saw, enter the blade width), and choose "Doesn't matter" for materials with no grain to reduce the count.
Glass and thin acrylic crack easily, and patterned panels have limits on direction, so adjust the kerf and rotation settings to suit the material.
Formulas and figures
Symbols and terms
Symbols
| \(W\) | W | The width of the stock sheet (in), the side-to-side length of one sheet you buy. It is the first letter of "width", in capitals to tell it apart from the part width \(w\). |
| \(H\) | H | The height of the stock sheet (in), the top-to-bottom length of one sheet. It is the first letter of "height", in capitals to tell it apart from the part height \(h\). If the grain direction doesn't matter, swapping width and height does not change the count (with "Keep aligned", it must match the direction of the parts). |
| \(w\), \(w_i\) | w, w sub i | The width of a part (a piece you want to cut, in). The \(i\) in \(w_i\) numbers the kind of part ("the \(i\)th kind"), since there are several kinds such as tops, sides and shelves. |
| \(h\), \(h_i\) | h, h sub i | The height of a part (in). In the shelf-packing formula, \(h_1,\ h_2,\ \ldots\) also stand for the height of each row (the height of the tallest part in that row). |
| \(k\) | k | The kerf (the thickness of the saw blade, in). Every cut removes this much of the board. It is the first letter of "kerf". |
| \(c\) | c | The number of pieces across the width of the sheet when cutting a single part, found with \(\lfloor (W + k) \div (w + k) \rfloor\). It is the first letter of "column". |
| \(r\) | r | The number of pieces down the height of the sheet when cutting a single part, found with \(\lfloor (H + k) \div (h + k) \rfloor\). It is the first letter of "row". |
| \(m\), \(m_i\) | m, m sub i | The pieces per sheet when cutting a single part: the number across \(c\) times the number down \(r\), \(m = c \times r\). |
| \(q_i\) | q sub i | The quantity of part \(i\) you need, from the first letter of "quantity". |
| \(B_i\) | B sub i | The number of sheets needed for part \(i\) alone, found with \(\lceil q_i \div m_i \rceil\). |
| \(B_{\text{sep}}\) | B sep | The total number of sheets when each part is cut from its own sheets (bought separately): all the \(B_i\) added up. "sep" stands for "separately". |
| \(B\) | B | The number of sheets needed with combined cutting (shelf packing and the like). It is the main answer on this page. |
| \(n\) | n | The number of parts side by side in one row. There are \(n - 1\) kerfs between them, so it appears in the condition for fitting in a row. It is the first letter of "number". |
| \(s\) | s | The number of rows on one sheet. There are \(s - 1\) kerfs between the rows, so it appears in the condition for the rows to fit. It is the first letter of "shelf", since the rows are called shelves in shelf packing. |
| \(A_{\text{off}}\) | A off | The offcut area (in², ft²). It is the total area of the sheets bought minus the total area of the parts, and it includes what turns into sawdust at the kerf. \(A\) is the first letter of "area", and "off" stands for "offcut". |
| \(Y\) | Y | The yield (%), the total area of the parts divided by the total area of the sheets, times 100. It is the first letter of "yield". |
| \(B_{\min}\) | B min | The theoretical minimum number of sheets from area (the lower bound), found with \(\lceil \sum_i q_i (w_i + k)(h_i + k) \div ((W + k)(H + k)) \rceil\). If the sheets with combined cutting \(B\) match it, the layout is optimal. "min" is short for minimum. |
| \(\Delta\) | delta | The number of sheets saved, \(B_{\text{sep}} - B\). The Greek letter delta is often used for a difference (it matches the d of "difference"). |
| \(u\) | u | The price of one stock sheet ($), from "unit price". |
| \(T\) | T | The estimated cost ($), from the first letter of "total". It covers only the sheets, not cutting fees or delivery. |
| \(\lfloor x \rfloor\) | floor of x | The sign for rounding down to a whole number, called the floor function. (Example - \(\lfloor 3.19 \rfloor = 3\), \(\lfloor 2 \rfloor = 2\)) The pieces you can cut drop the part that does not fit, so this sign is used. |
| \(\lceil x \rceil\) | ceiling of x | The sign for rounding up to a whole number, called the ceiling function. (Example - \(\lceil 1.51 \rceil = 2\), \(\lceil 2 \rceil = 2\)) The sheets you buy add one more sheet for any shortfall, so this sign is used. |
| \(\sum\) | sigma | The sign for "add them all up". \(\sum_i q_i w_i h_i\) says: for each kind of part \(i\), work out \(q_i w_i h_i\) (quantity × width × height) and add them all. It is the Greek letter sigma, which matches the S of "sum". |
Terms
| stock sheet | The large board the parts are cut from. It can be any sheet material sold in standard sizes, such as plywood, MDF, decorative panels, acrylic or sheet metal. This page treats it as a rectangle of width \(W\) × height \(H\). |
| cutting layout | Deciding how to cut the parts you need from the stock sheets (also called a cut list or cutting diagram). This page handles 2D cutting, which considers both width and height; 1D cutting by length only, such as boards and pipes, is handled by the "Lumber Cut List Calculator". |
| kerf | The width of material lost at each saw cut, equal to the thickness of the blade. A full-kerf circular saw or table saw blade is typically 1/8 in, and a thin-kerf blade about 3/32 in. If you know your blade's kerf (it is often printed on the blade), enter that. It adds up with every cut, so it matters most when you cut many small parts. |
| grain direction | The direction of the wood fibers, which shows as the pattern on the surface of a board. With decorative plywood or solid wood, parts look odd unless the grain all runs the same way, so the parts sometimes cannot be turned 90°. On this page, choose whether parts may turn with "Grain direction". For sheathing plywood or boards you will paint, "Doesn't matter" is fine. |
| guillotine cut | A cut that runs straight from one edge of the sheet to the other. The pieces are then cut edge to edge again, and so on, until the parts are free. The panel saws used for cutting services at home centers can only make this kind of cut, so this calculator limits its layouts to shapes that can be cut this way (shelf packing). Allowing cuts that stop partway (L-shaped notches) can sometimes pack more tightly, but they are also hard to make with a home circular saw, so they are not used. |
| shelf packing (FFDH) | A layout procedure that sorts the parts from tallest to shortest and fills rows (called shelves) across the sheet from the top down. FFDH stands for First Fit Decreasing Height (tallest first, into the first row that fits), a classic heuristic for 2D rectangle packing. Every cut runs edge to edge, so the layout can go straight to a cutting service. It gives good results for such a simple procedure, but not always the fewest sheets. |
| offcut | Material left over after the parts are cut, such as long thin strips at the edge of the sheet or scraps at the end of a row. The fewer offcuts, the less material is wasted and the higher the yield. Large offcuts can become small shelves or cleats. |
| yield | The share of the material that ends up as products (parts). On this page it is "total area of the parts ÷ total area of the sheets bought", and it gets closer to 100% with fewer offcuts and less kerf. |
| lower bound | A value that can never be beaten, however clever you are. The theoretical minimum number of sheets on this page is a lower bound from area; if the layout uses that many sheets, it is optimal. Even when it does not, the shapes of the parts often keep 2D cutting from reaching the lower bound. |
| optimal solution | The best answer among all possible ways. Here, it is the layout that uses the fewest sheets. If the sheets with combined cutting match the lower bound, it is an optimal solution; if not, this calculator does not search every combination, so it cannot confirm whether the layout is optimal. |
| heuristic | A method that quickly finds a good answer with fixed steps, but with no guarantee of the best answer. In combination problems such as cutting layouts, the number of possible arrangements explodes as parts are added, so not all of them can be tried, and heuristics are widely used in practice. The shelf packing and grid counts on this page are heuristics too. |
| plywood | A board made by gluing thin sheets of wood (veneers) together with the grain of each layer at right angles to the next. It resists warping and can be made in large sheets, so it is widely used for shelves, boxes and subfloors. Types include sheathing plywood, sanded plywood (such as birch or pine) and decorative plywood. Common thicknesses are 1/4, 1/2 and 3/4 in (nominal; the actual thickness is often a little less, such as 23/32 in for 3/4 in). |
| OSB | Oriented strand board, made of wood strands pressed and glued together. It is a common, low-cost sheathing panel for walls, roofs and subfloors, sold in 4 × 8 ft sheets like plywood (longer sheets also exist for walls). Its surface is rough, so it is mostly used where it will be covered. |
| 4×8 sheet | The standard sheet size in the US, 4 ft × 8 ft (48 × 96 in), used for plywood, OSB, MDF, drywall and many other panels. It is the default on this page. MDF is often sold slightly larger, at 49 × 97 in. |
| 4×10 | Longer sheets of 4 × 10 ft (48 × 120 in) and 4 × 12 ft (48 × 144 in). They are used for tall walls and long parts without seams; drywall often comes in these lengths. Check the exact size of the product you buy and enter it. |
| project panel | A smaller precut panel sold at home centers, such as 2 × 4 ft, 4 × 4 ft or 2 × 2 ft. It is easier to carry, but it usually costs more per square foot than a full 4 × 8 sheet. |
Good to know before you start
Here is what helps you use the calculation on this page with real understanding, not just by pressing the button.
| Division with remainders (Grades 3–4) |
|
| Rounding (Grade 4) |
|
| Area of a rectangle (Grades 3–4) |
|
| Ratios and percents (Grade 6) |
|
| Expressions and inequalities with variables (Grades 6–7) |
|
How to calculate it in Excel
| Sheet width (in) | 96 |
| Sheet height (in) | 48 |
| Part width (in) | 30 |
| Part height (in) | 20 |
| Kerf (in) | 0.125 |
| Number across | =INT((B1+B5)/(B3+B5)) |
| Number down | =INT((B2+B5)/(B4+B5)) |
| Pieces per sheet | =B6*B7 |
| Quantity of the part | 8 |
| Pieces per sheet | 6 |
| Sheets needed | =ROUNDUP(B1/B2,0) |
| Number of sheets | 2 |
| Sheet width (in) | 96 |
| Sheet height (in) | 48 |
| Total area of all parts (in²) | 4800 |
| Offcut area (in²) | =B1*B2*B3-B4 |
| Offcut area (ft²) | =B5/144 |
| Yield (%) | =B4/(B1*B2*B3)*100 |
| Sum of (width + kerf) × (height + kerf) for all parts (in²) | 6964.390625 |
| (Sheet width + kerf) × (sheet height + kerf) (in²) | 4626.015625 |
| Theoretical minimum sheets | =ROUNDUP(B1/B2,0) |
| Sheets if bought separately | 3 |
| Sheets with combined cutting | 2 |
| Price per sheet ($) | 45 |
| Sheets saved | =B1-B2 |
| Estimated cost ($) | =B3*B2 |
"INT(value)" rounds down to a whole number (the ⌊ ⌋ in the formulas), and "ROUNDUP(value, 0)" rounds up (the ⌈ ⌉).
B8 in the first table is 6 pieces (3 across × 2 down). B3 in the second table is 2 sheets. In the third table (eight 30 × 20 in parts on two sheets), B6 is about 30.67 ft² and B7 about 52.08%. B3 in the fourth table is 2 sheets, and the fifth table gives 1 sheet saved and a cost of $90.
Shelf packing itself is sorting the parts by height and fitting them into rows from the top, which is manual work. Use the spreadsheet to check the pieces per sheet, the offcut and the lower bound, and make the layout on this page or with the Python code below.
How to calculate it in Google Sheets
| Sheet width (in) | 96 |
| Sheet height (in) | 48 |
| Part width (in) | 30 |
| Part height (in) | 20 |
| Kerf (in) | 0.125 |
| Number across | =INT((B1+B5)/(B3+B5)) |
| Number down | =INT((B2+B5)/(B4+B5)) |
| Pieces per sheet | =B6*B7 |
| Quantity of the part | 8 |
| Pieces per sheet | 6 |
| Sheets needed | =ROUNDUP(B1/B2,0) |
| Number of sheets | 2 |
| Sheet width (in) | 96 |
| Sheet height (in) | 48 |
| Total area of all parts (in²) | 4800 |
| Offcut area (in²) | =B1*B2*B3-B4 |
| Offcut area (ft²) | =B5/144 |
| Yield (%) | =B4/(B1*B2*B3)*100 |
| Sum of (width + kerf) × (height + kerf) for all parts (in²) | 6964.390625 |
| (Sheet width + kerf) × (sheet height + kerf) (in²) | 4626.015625 |
| Theoretical minimum sheets | =ROUNDUP(B1/B2,0) |
| Sheets if bought separately | 3 |
| Sheets with combined cutting | 2 |
| Price per sheet ($) | 45 |
| Sheets saved | =B1-B2 |
| Estimated cost ($) | =B3*B2 |
How to calculate it in Python
import math
sheet_w, sheet_h = 96, 48 # stock sheet width and height (in), a 4 x 8 ft sheet
kerf = 0.125 # kerf (saw blade thickness, in) = 1/8 in
rotate = True # True if grain direction does not matter (parts may be turned 90 degrees)
unit_price = 45.00 # price of one stock sheet ($)
# Parts to cut: (name, width in, height in, quantity)
parts = [("Top", 47, 24, 2), ("Side", 36, 21, 4), ("Shelf", 30, 18, 3)]
# Sheets if each part is bought separately (grid across x down; if rotation is allowed, also try the part turned)
def per_sheet(w, h):
return int((sheet_w + kerf) // (w + kerf)) * int((sheet_h + kerf) // (h + kerf)) # round down (the ⌊ ⌋ in the formulas)
sheets_separate = 0
for name, w, h, qty in parts:
m = max(per_sheet(w, h), per_sheet(h, w) if rotate else 0)
sheets_separate += math.ceil(qty / m) # round up (the ⌈ ⌉ in the formulas)
# Combined cutting: shelf packing (tallest first, into the first row that fits; if rotation is allowed, long side across)
pieces = []
for name, w, h, qty in parts:
pw, ph = (max(w, h), min(w, h)) if rotate else (w, h)
pieces += [(name, pw, ph)] * qty
pieces.sort(key=lambda p: (-p[2], -p[1]))
sheets = [] # for each sheet {"y": where the next row starts, "shelves": [{"y", "h", "x", "parts"}]}
for name, pw, ph in pieces:
for sheet in sheets:
shelf = next((s for s in sheet["shelves"] if ph <= s["h"] and pw <= sheet_w - s["x"]), None)
if shelf is None and ph <= sheet_h - sheet["y"]:
shelf = {"y": sheet["y"], "h": ph, "x": 0, "parts": []}
sheet["shelves"].append(shelf)
sheet["y"] += ph + kerf
if shelf is not None:
shelf["parts"].append((name, shelf["x"], shelf["y"], pw, ph))
shelf["x"] += pw + kerf
break
else:
sheets.append({"y": ph + kerf, "shelves": [{"y": 0, "h": ph, "x": pw + kerf, "parts": [(name, 0, 0, pw, ph)]}]})
# Offcut, yield and the lower bound from area
parts_area = sum(qty * w * h for name, w, h, qty in parts)
total_area = len(sheets) * sheet_w * sheet_h
lower_bound = math.ceil(sum(qty * (w + kerf) * (h + kerf) for name, w, h, qty in parts) / ((sheet_w + kerf) * (sheet_h + kerf)))
print(f"Sheets if each part is bought separately: {sheets_separate}")
print(f"Combined cutting (shelf packing): {len(sheets)} sheets (lower bound from area: {lower_bound})")
for i, sheet in enumerate(sheets, 1):
for shelf in sheet["shelves"]:
print(f" Sheet {i} row (y={shelf['y']}): " + ", ".join(f"{n}@x={x} {pw}x{ph}" for n, x, y, pw, ph in shelf["parts"]))
print(f"Offcut area: {(total_area - parts_area) / 144:.2f} ft² Yield: {parts_area / total_area * 100:.1f} %")
print(f"Estimated cost: ${unit_price * len(sheets):.2f}")
How to write it in LaTeX and other math languages (copy and paste)
c = ⌊(W + k) ÷ (w + k)⌋, r = ⌊(H + k) ÷ (h + k)⌋, m = c × r
c = \left\lfloor \frac{W + k}{w + k} \right\rfloor,\quad r = \left\lfloor \frac{H + k}{h + k} \right\rfloor,\quad m = c \times r
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>c</mi>
<mo>=</mo>
<mo>⌊</mo>
<mfrac>
<mrow><mi>W</mi><mo>+</mo><mi>k</mi></mrow>
<mrow><mi>w</mi><mo>+</mo><mi>k</mi></mrow>
</mfrac>
<mo>⌋</mo>
<mo>,</mo>
<mi>r</mi>
<mo>=</mo>
<mo>⌊</mo>
<mfrac>
<mrow><mi>H</mi><mo>+</mo><mi>k</mi></mrow>
<mrow><mi>h</mi><mo>+</mo><mi>k</mi></mrow>
</mfrac>
<mo>⌋</mo>
<mo>,</mo>
<mi>m</mi>
<mo>=</mo>
<mi>c</mi>
<mo>×</mo>
<mi>r</mi>
</mrow>
</math>
c = |__ (W + k) / (w + k) __|, r = |__ (H + k) / (h + k) __|, m = c * r
c = Floor[(W + k)/(w + k)]; r = Floor[(H + k)/(h + k)]; m = c*r
c := floor((W + k)/(w + k)); r := floor((H + k)/(h + k)); m := c*r;
c = floor((W + k)/(w + k)); r = floor((H + k)/(h + k)); m = c*r;
c = ⌊(W + k)/(w + k)⌋, r = ⌊(H + k)/(h + k)⌋, m = c × r
Bᵢ = ⌈qᵢ ÷ mᵢ⌉, Bsep = B₁ + B₂ + …
B_i = \left\lceil \frac{q_i}{m_i} \right\rceil,\quad B_{\text{sep}} = \sum_i B_i
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub><mi>B</mi><mi>i</mi></msub>
<mo>=</mo>
<mo>⌈</mo>
<mfrac><msub><mi>q</mi><mi>i</mi></msub><msub><mi>m</mi><mi>i</mi></msub></mfrac>
<mo>⌉</mo>
<mo>,</mo>
<msub><mi>B</mi><mtext>sep</mtext></msub>
<mo>=</mo>
<munder><mo>∑</mo><mi>i</mi></munder>
<msub><mi>B</mi><mi>i</mi></msub>
</mrow>
</math>
B_i = |~ q_i / m_i ~|, B_"sep" = sum_i B_i
Total[Ceiling[q/m]]
B := add(ceil(q[i]/m[i]), i = 1 .. n);
B = sum(ceil(q ./ m));
B_i = ⌈q_i/m_i⌉, B_sep = ∑_i B_i
w₁ + w₂ + … + wₙ + (n − 1)k ≤ W, h₁ + h₂ + … + hₛ + (s − 1)k ≤ H
\sum_{j=1}^{n} w_j + (n - 1)k \leq W,\quad \sum_{t=1}^{s} h_t + (s - 1)k \leq H
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<munderover><mo>∑</mo><mrow><mi>j</mi><mo>=</mo><mn>1</mn></mrow><mi>n</mi></munderover>
<msub><mi>w</mi><mi>j</mi></msub>
<mo>+</mo>
<mo>(</mo><mi>n</mi><mo>−</mo><mn>1</mn><mo>)</mo><mi>k</mi>
<mo>≤</mo>
<mi>W</mi>
<mo>,</mo>
<munderover><mo>∑</mo><mrow><mi>t</mi><mo>=</mo><mn>1</mn></mrow><mi>s</mi></munderover>
<msub><mi>h</mi><mi>t</mi></msub>
<mo>+</mo>
<mo>(</mo><mi>s</mi><mo>−</mo><mn>1</mn><mo>)</mo><mi>k</mi>
<mo>≤</mo>
<mi>H</mi>
</mrow>
</math>
sum_(j=1)^n w_j + (n - 1) k <= W, sum_(t=1)^s h_t + (s - 1) k <= H
Total[w] + (Length[w] - 1)*k <= W && Total[h] + (Length[h] - 1)*k <= H
add(w[j], j = 1 .. n) + (n - 1)*k <= W; add(h[t], t = 1 .. s) + (s - 1)*k <= H;
sum(w) + (numel(w) - 1)*k <= W && sum(h) + (numel(h) - 1)*k <= H
∑_(j=1)^n w_j + (n − 1)k ≤ W, ∑_(t=1)^s h_t + (s − 1)k ≤ H
Aoff = B × W × H − Σ qᵢ wᵢ hᵢ, Y = Σ qᵢ wᵢ hᵢ ÷ (B × W × H) × 100
A_{\text{off}} = B\,W\,H - \sum_i q_i w_i h_i,\quad Y = \frac{\sum_i q_i w_i h_i}{B\,W\,H} \times 100
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub><mi>A</mi><mtext>off</mtext></msub>
<mo>=</mo>
<mi>B</mi><mo>⁢</mo><mi>W</mi><mo>⁢</mo><mi>H</mi>
<mo>−</mo>
<munder><mo>∑</mo><mi>i</mi></munder>
<msub><mi>q</mi><mi>i</mi></msub><msub><mi>w</mi><mi>i</mi></msub><msub><mi>h</mi><mi>i</mi></msub>
<mo>,</mo>
<mi>Y</mi>
<mo>=</mo>
<mfrac>
<mrow><munder><mo>∑</mo><mi>i</mi></munder><msub><mi>q</mi><mi>i</mi></msub><msub><mi>w</mi><mi>i</mi></msub><msub><mi>h</mi><mi>i</mi></msub></mrow>
<mrow><mi>B</mi><mo>⁢</mo><mi>W</mi><mo>⁢</mo><mi>H</mi></mrow>
</mfrac>
<mo>×</mo>
<mn>100</mn>
</mrow>
</math>
A_"off" = B W H - sum_i q_i w_i h_i, Y = (sum_i q_i w_i h_i) / (B W H) * 100
{B*W*H - Total[q*w*h], Total[q*w*h]/(B*W*H)*100}
Awaste := B*W*H - add(q[i]*w[i]*h[i], i = 1 .. n); Y := add(q[i]*w[i]*h[i], i = 1 .. n)/(B*W*H)*100;
Awaste = B*W*H - sum(q .* w .* h); Y = sum(q .* w .* h)/(B*W*H)*100;
A_off = BWH − ∑_i q_i w_i h_i, Y = (∑_i q_i w_i h_i)/(BWH) × 100
Bmin = ⌈Σ qᵢ (wᵢ + k)(hᵢ + k) ÷ ((W + k)(H + k))⌉
B_{\min} = \left\lceil \frac{\sum_i q_i (w_i + k)(h_i + k)}{(W + k)(H + k)} \right\rceil
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub><mi>B</mi><mi>min</mi></msub>
<mo>=</mo>
<mo>⌈</mo>
<mfrac>
<mrow><munder><mo>∑</mo><mi>i</mi></munder><msub><mi>q</mi><mi>i</mi></msub><mo>(</mo><msub><mi>w</mi><mi>i</mi></msub><mo>+</mo><mi>k</mi><mo>)</mo><mo>(</mo><msub><mi>h</mi><mi>i</mi></msub><mo>+</mo><mi>k</mi><mo>)</mo></mrow>
<mrow><mo>(</mo><mi>W</mi><mo>+</mo><mi>k</mi><mo>)</mo><mo>(</mo><mi>H</mi><mo>+</mo><mi>k</mi><mo>)</mo></mrow>
</mfrac>
<mo>⌉</mo>
</mrow>
</math>
B_min = |~ (sum_i q_i (w_i + k)(h_i + k)) / ((W + k)(H + k)) ~|
Ceiling[Total[q*(w + k)*(h + k)]/((W + k)*(H + k))]
Bmin := ceil(add(q[i]*(w[i] + k)*(h[i] + k), i = 1 .. n)/((W + k)*(H + k)));
Bmin = ceil(sum(q .* (w + k) .* (h + k))/((W + k)*(H + k)));
B_min = ⌈(∑_i q_i (w_i + k)(h_i + k))/((W + k)(H + k))⌉
Δ = Bsep − B, T = u × B
\Delta = B_{\text{sep}} - B,\quad T = u \times B
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>Δ</mi>
<mo>=</mo>
<msub><mi>B</mi><mtext>sep</mtext></msub>
<mo>−</mo>
<mi>B</mi>
<mo>,</mo>
<mi>T</mi>
<mo>=</mo>
<mi>u</mi>
<mo>×</mo>
<mi>B</mi>
</mrow>
</math>
Delta = B_"sep" - B, T = u * B
{bSep - b, u*b}
Delta := Bsep - B; T := u*B;
Delta = Bsep - B; T = u*B;
Δ = B_sep − B, T = u × B
How to have ChatGPT do the calculation
You are a calculation assistant for plywood cutting layouts (cut lists). Do the following calculation by actually running Python code, and base your answer only on the numbers from the execution result (do not answer by mental math or guessing). From 4 × 8 ft plywood sheets (96 × 48 in), with a 1/8 in (0.125 in) kerf and parts allowed to turn 90 degrees, cut 2 tops of 47 × 24 in, 4 sides of 36 × 21 in and 3 shelves of 30 × 18 in. Find each of the following: 1. For each part, the pieces per sheet when cutting only that part (⌊(96 + 0.125) ÷ (width + 0.125)⌋ × ⌊(48 + 0.125) ÷ (height + 0.125)⌋; also calculate with width and height swapped and use the larger) 2. The total number of sheets if each part is cut from its own sheets (the sum of "quantity ÷ pieces per sheet, rounded up") 3. The number of sheets and the position of each part on each sheet with shelf packing: sort the parts from tallest to shortest and fill rows across the sheet from the top down (First Fit Decreasing Height; within a row each part moves right by width + kerf, and each row moves down by height + kerf) 4. The offcut area (total area of the sheets − total area of the parts, in ft²) and the yield (%) 5. The theoretical minimum number of sheets from area (the sum of (width + 0.125) × (height + 0.125) for all parts, divided by (96 + 0.125) × (48 + 0.125), rounded up) Show the code you used and the numbers from the execution result.
How to Use
-
1Enter your numbersType the numbers you want to calculate with into the input fields
-
2CalculatePress the "Calculate" button
-
3Check the resultThe result appears on the spot. The same page also explains the idea behind the calculation and the formula
DataChef Features
No technical knowledge required.
Intuitive and user-friendly operation.
Can be used without registering personal information.
Automatic file deletion by clicking "download".
and rapid file conversion.
No attribution required.
No need to contact us for commercial use permission.
