📋 概述
本檔案是一款高階的公用軟體,專為計算棧板 (PL) 上的最佳裝載模式,並估算儲存所需的棧板數量所設計。它能根據紙箱尺寸與棧板的有效空間,自動計算出最佳的裝載配置方式。
主要用途:
- 紙箱的棧板裝載模式最佳化計算
- 多種裝載模式(P1、P2、P1&P2、P2&P1)的比較
- 考量裝填率後,自動選定最佳模式
- 計算儲存所需的棧板總數
- 裝載示意圖的視覺化呈現(2D圖形繪製)
- 支援多種棧板尺寸
何謂棧板裝載: 在物流作業中,將貨物(紙箱)高效率地排列放置在棧板上的動作。裝載模式的不同,會對運輸與儲存效率產生巨大影響。
🔧 依賴關係
Imports System.Runtime.InteropServices
Imports Microsoft.Office.Interop
Imports OfficeOpenXml
Imports Microsoft.Office.Interop
Imports OfficeOpenXml
使用技術:
- Runtime.InteropServices: COM 互通性
- Office.Interop: Office 整合應用
- EPPlus: Excel 檔案操作(讀寫 .xlsx)
- Graphics: 2D圖形繪製(產生裝載示意圖)
🎯 主要功能
1. 棧板裝載計算
- 自動計算 4 種裝載模式(P1、P2、P1&P2、P2&P1)
- 計算各模式的平面裝填率
- 自動選定最佳模式
- 計算層數與總裝載數量
2. 裝載模式
- P1 模式: 紙箱長邊與棧板寬度方向平行配置
- P2 模式: 紙箱短邊與棧板寬度方向平行配置
- P1&P2 模式: P1 與 P2 的組合(交錯配置)
- P2&P1 模式: P2 與 P1 的組合(交錯配置)
3. 儲存棧板數計算
- 從紙箱總數計算所需的棧板數量
- 計算平均裝填率
- 支援儲存空間規劃
4. 視覺化功能
- 繪製裝載模式的 2D 圖形
- 顯示棧板有效範圍
- 視覺化確認紙箱配置狀態
- 以顏色區分裝填率顯示
📦 裝載模式詳細說明
P1 模式(直放)
配置方式:
紙箱的長邊(長度)與棧板寬度平行,短邊(寬度)與深度平行
計算公式:
寬度方向個數 = INT(有效寬度 / 紙箱長度)
深度方向個數 = INT(有效深度 / 紙箱寬度)
單層數量 = 寬度方向個數 × 深度方向個數
紙箱的長邊(長度)與棧板寬度平行,短邊(寬度)與深度平行
計算公式:
寬度方向個數 = INT(有效寬度 / 紙箱長度)
深度方向個數 = INT(有效深度 / 紙箱寬度)
單層數量 = 寬度方向個數 × 深度方向個數
P2 模式(橫放)
配置方式:
紙箱的短邊(寬度)與棧板寬度平行,長邊(長度)與深度平行
計算公式:
寬度方向個數 = INT(有效寬度 / 紙箱寬度)
深度方向個數 = INT(有效深度 / 紙箱長度)
單層數量 = 寬度方向個數 × 深度方向個數
紙箱的短邊(寬度)與棧板寬度平行,長邊(長度)與深度平行
計算公式:
寬度方向個數 = INT(有效寬度 / 紙箱寬度)
深度方向個數 = INT(有效深度 / 紙箱長度)
單層數量 = 寬度方向個數 × 深度方向個數
P1&P2 模式(組合1)
配置方式:
P1 模式與 P2 模式交錯配置
以 P1 為基準,剩餘空間用 P2 填滿
特色:
最小化無效空間(Dead space),提升裝填率
P1 模式與 P2 模式交錯配置
以 P1 為基準,剩餘空間用 P2 填滿
特色:
最小化無效空間(Dead space),提升裝填率
P2&P1 模式(組合2)
配置方式:
P2 模式與 P1 模式交錯配置
以 P2 為基準,剩餘空間用 P1 填滿
特色:
與 P1&P2 相反的配置方式,實現另一種最佳化
P2 模式與 P1 模式交錯配置
以 P2 為基準,剩餘空間用 P1 填滿
特色:
與 P1&P2 相反的配置方式,實現另一種最佳化
🔍 主要方法詳細說明
1. 表單載入處理
Private Sub 棧板裝載計算From_Load(sender As Object, e As EventArgs)
初始化處理:
- 顯示使用期限與版權
- 確認必要檔案是否存在
- 設定 Excel 檔案路徑
MyExcel1 = Dat儲存Path & "\PL裝載計算\PL裝載計算.xlsx"
MyE1_Sheet1 = "PL規格與包裝型態"
MyE1_Sheet2 = "紙箱數與尺寸" - 讀取 PL (棧板) 資訊
- 將項目寫入 ComboBox 下拉選單
- 讀取紙箱資訊
- 執行 PL 裝載計算
2. 執行 PL 裝載計算
Private Sub PL裝載計算執行()
處理流程:
- 初始化紙箱計算完畢的旗標
- 執行 PL 裝載計算
- 裝載計算結果 Gv 的顯示設定
- 將奇數列的背景色設為黃綠色(GreenYellow)
- 偶數列設為淺藍色(Aquamarine)
- 提供視覺回饋
- 執行全 PL 彙總
背景顏色的交替變換: 每次執行計算時,背景色都會切換,讓使用者能直觀地確認已完成重新計算。
3. PL 裝載計算
Private Sub PL裝載計算()
計算步驟:
- P1 模式計算
- 計算寬度與深度方向的可裝載數
- 算出單層數量與堆疊層數
- 計算總裝載數
- P2 模式計算
- 進行與 P1 相同的計算(配置方向相反)
- P1&P2 模式計算
- 計算配置 P1 後的剩餘空間
- 將 P2 配置在剩餘空間內
- 算出合計單層數量
- P2&P1 模式計算
- 計算配置 P2 後的剩餘空間
- 將 P1 配置在剩餘空間內
- 算出合計單層數量
- 選定最佳模式
- 比較各模式的裝填率
- 推薦裝填率最高的模式
4. 讀取 PL 資訊
Private Sub PL資訊讀取()
讀取資料:
- PLID(棧板識別碼)
- PL名稱
- PL寬度(mm)
- PL深度(mm)
- PL高度(mm)
- 有效寬度(mm)
- 有效深度(mm)
- 有效高度(mm)
- 最大載重量(kg)
何謂有效尺寸: 從棧板的實際外觀尺寸中,扣除面板厚度或支架突出部分後,實際能夠用來裝載紙箱的可用範圍。
5. 讀取紙箱資訊
Private Sub 紙箱資訊讀取()
讀取資料:
- 紙箱No
- 紙箱名稱
- 紙箱寬度(mm)
- 紙箱長度(mm)
- 紙箱高度(mm)
- 紙箱重量(kg)
- 儲存所需的紙箱數
6. 選擇 PLID
Private Sub PLID選擇()
處理內容:
- 取得與所選 PLID 相對應的棧板資訊
- 將 PL 尺寸存入變數中
- 設定有效尺寸
- 設定最大載重量
- 為重新計算做準備
📊 計算公式詳細說明
單層數量的計算
單層數量 = 寬度方向個數 × 深度方向個數
層數的計算
層數 = INT(有效高度 / 紙箱高度)
總裝載數的計算
總裝載數 = 單層數量 × 層數
裝填率的計算
平面裝填率 (%) = (單層數量 × 紙箱面積) / (有效寬度 × 有效深度) × 100
所需 PL 數的計算
所需 PL 數 = CEILING(總紙箱數 / 總裝載數)
※ 使用 CEILING 函數無條件進位(為防止棧板短缺)
平均裝填率的計算
平均裝填率 (%) = (總紙箱數 / (所需 PL 數 × 單層數量)) × 100
🖼️ 裝載示意圖繪製功能
繪圖方法列表
| 方法名稱 | 說明 |
|---|---|
| 裝載示意圖P1() | 繪製 P1 模式的裝載圖 |
| 裝載示意圖P2() | 繪製 P2 模式的裝載圖 |
| 裝載示意圖P1P2() | 繪製 P1&P2 模式的裝載圖 |
| 裝載示意圖P2P1() | 繪製 P2&P1 模式的裝載圖 |
繪圖的基本結構
- 建立 Bitmap 物件
Dim img As New Bitmap(W + 10, H + 10)
Dim g As Graphics = Graphics.FromImage(img) - 繪製棧板外框
g.FillRectangle(Brushes.Bisque, x1, y1, x2, y2) ' 填入米黃色
g.DrawRectangle(Pens.Black, x1, y1, x2, y2) ' 黑色外框線 - 繪製有效範圍
g.DrawRectangle(Pens.Black, x1, y1, x2, y2) ' 黑色外框線
- 繪製紙箱配置
g.FillRectangle(Brushes.Azure, x1, y1, x2, y2) ' 填入淺藍色
g.DrawRectangle(Pens.Black, x1, y1, x2, y2) ' 黑色外框線 - 繪製剩餘空間
g.FillRectangle(Brushes.Thistle, x1, y1, x2, y2) ' 填入淺紫色
- 顯示圖片
裝載示意圖Pb.SizeMode = PictureBoxSizeMode.Zoom
裝載示意圖Pb.Image = img
顏色的運用
| 顏色 | 用途 | 代表意義 |
|---|---|---|
| Bisque (米黃色) | 棧板本體 | 棧板的物理範圍 |
| Black (黑線) | 外框・有效範圍 | 邊界線 |
| Azure (淺藍色) | 裝載的紙箱 | 被有效利用的空間 |
| Thistle (淺紫色) | 剩餘空間 | 無效空間 (Dead space) |
| White (白色) | 背景 | 棧板外部的空間 |
📈 全 PL 彙總功能
全 PL 彙總
Private Sub 全PL彙總()
彙總內容:
- 全紙箱總數彙總
- 各模式的平均裝填率
- 選定推薦模式
- 計算總所需棧板數量
最佳模式顯示 Dgv
Private Sub 最佳PL包裝計算DataGridView顯示()
顯示項目:
| 欄位 | 內容 |
|---|---|
| 估算試算流水號 | 計算模式的識別號碼 |
| PLID | 使用棧板的識別碼 |
| 紙箱No | 紙箱的識別號碼 |
| 裝載模式 | P1、P2、P1&P2、P2&P1 |
| 單層數量 | 每一層的紙箱數 |
| 層數 | 可堆疊的層數 |
| 總裝載數 | 每一棧板的總紙箱數 |
| 所需PL數 | 儲存所有紙箱所需的棧板數 |
| 估算平均裝填率 | 實際的裝填率 |
🎨 UI 元件
輸入控制項
| 控制項 | 說明 |
|---|---|
| PLID選擇Cb | 用來選擇棧板 ID 的 ComboBox |
| 儲存PathTb | 顯示 Excel 檔案路徑 |
DataGridView 列表
- PL資訊Gv: 棧板規格主檔資料
- 紙箱資訊Gv: 紙箱尺寸・數量資料
- 裝載計算結果Gv: 各模式的計算結果
- 最佳PL包裝計算DataGridView: 最佳模式清單
顯示用 TextBox
| 控制項 | 顯示內容 |
|---|---|
| 儲存所需PL數Tb | 總所需棧板數量 |
按鈕
- PL裝載計算執行Bt: 執行計算處理
- 變更PL尺寸Bt: 切換至 PL 資訊維護畫面
- 結束程式: 關閉表單
RadioButton(排序功能)
- 估算試算流水號遞增RadioButton: 依流水號排序
- 所需PL數遞增RadioButton: 依所需 PL 數排序
- 估算平均裝填率遞減RadioButton: 依裝填率由高至低排序
PictureBox
- 裝載示意圖Pb: 裝載模式的 2D 圖形顯示
TabControl
- 裝載條件計算詳細Tp: 主計算畫面
- PL資訊維護畫面Tp: 棧板資訊編輯畫面
Label
- 操作說明L: 顯示操作指引
- 顏色: Blue(等待操作)、Green(計算準備完成)
- 動態指引操作步驟
🎯 視覺回饋
變更背景顏色
執行計算時,多個控制項的背景色會同時發生變化:
| 狀態 | 背景顏色 | 目標控制項 |
|---|---|---|
| 初次計算 | GreenYellow (黃綠色) |
・裝載計算結果Gv(奇數列) ・儲存所需PL數Tb ・裝載示意圖Pb |
| 重新計算 | Aquamarine (淺藍色) |
・裝載計算結果Gv(奇數列) ・儲存所需PL數Tb ・裝載示意圖Pb |
操作說明標籤的顏色變化
- Blue(藍色): 需要進行操作的狀態
"點擊第3個儲存格,顯示平面裝載示意圖"
- Green(綠色): 計算準備完成
"點擊「PL裝載計算(再)」,開始重新計算"
🔄 處理流程全圖
┌─────────────────────────────────────┐
│ 表單載入 │
└──────────┬──────────────────────────┘
│
├→ 顯示期限・版權
├→ 確認檔案是否存在
├→ 設定 Excel 路徑
├→ 讀取 PL 資訊
│ └→ 取得棧板規格主檔資料
├→ 將項目寫入 ComboBox
├→ 讀取紙箱資訊
│ └→ 取得紙箱尺寸・數量資料
└→ 執行 PL 裝載計算
│
▼
┌─────────────────────────────────────┐
│ 選擇 PLID │
└──────────┬──────────────────────────┘
│
└→ 取得所選 PL 的資訊
│
▼
┌─────────────────────────────────────┐
│ 點擊 PL 裝載計算執行按鈕 │
└──────────┬──────────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ PL 裝載計算 │
└──────────┬──────────────────────────┘
│
├─ P1 模式計算
│ ├→ 算出寬度方向個數
│ ├→ 算出深度方向個數
│ ├→ 單層數量 = 寬度 × 深度
│ ├→ 算出層數
│ └→ 總裝載數 = 單層數量 × 層數
│
├─ P2 模式計算
│ └→ (與 P1 相同,配置方向相反)
│
├─ P1&P2 模式計算
│ ├→ 配置 P1
│ ├→ 計算剩餘空間
│ └→ 將 P2 配置於剩餘空間
│
├─ P2&P1 模式計算
│ ├→ 配置 P2
│ ├→ 計算剩餘空間
│ └→ 將 P1 配置於剩餘空間
│
├─ 計算各模式裝填率
└─ 選定最佳模式
│
▼
┌─────────────────────────────────────┐
│ 繪製裝載示意圖 │
└──────────┬──────────────────────────┘
│
├─ 繪製棧板外框
├─ 繪製有效範圍
├─ 繪製紙箱配置
└─ 繪製剩餘空間
│
▼
┌─────────────────────────────────────┐
│ 全 PL 彙總 │
└──────────┬──────────────────────────┘
│
├─ 算出所需 PL 數
├─ 計算平均裝填率
└─ 顯示結果・視覺回饋
💡 應用場景
1. 新商品物流設計
- 確認新紙箱尺寸的棧板裝載效率
- 決定最佳紙箱尺寸
- 挑選適合的棧板尺寸
2. 倉庫空間規劃
- 計算所需棧板數量
- 估算儲存空間
- 決定料架層數
3. 提升運輸效率
- 提高卡車裝載效率
- 棧板裝載標準化
- 改善作業效率
4. 降低成本
- 將無效空間降至最低
- 減少所需的棧板數量
- 最佳化運輸成本
5. 模擬測試
- 比較多種棧板尺寸
- 紙箱尺寸變更的影響分析
- 探索最佳解
📊 DataGridView 設定
共通設定
- RowHeadersVisible = False: 隱藏列標題
- ColumnHeadersVisible = True: 顯示行標題
- AllowUserToAddRows = False: 停用使用者新增資料列
- ReadOnly = True: 唯讀模式
- MultiSelect = False: 停用複選
- SelectionMode = FullRowSelect: 採用整列選取模式
特殊設定(裝載計算結果 Gv)
.AlternatingRowsDefaultCellStyle.BackColor = Color.GreenYellow
' 或
.AlternatingRowsDefaultCellStyle.BackColor = Color.Aquamarine
' 或
.AlternatingRowsDefaultCellStyle.BackColor = Color.Aquamarine
設定奇數列的背景色,每次執行計算時顏色皆會切換。
⚠️ 注意事項與限制
計算上的限制
- 整數運算: 小數部分無條件捨去(會產生無效空間)
- 重量限制: 注意不可超過最大載重量
- 高度限制: 在有效高度內計算層數
- 穩定性: 實際裝載時也必須考量堆疊穩定性
實務上的注意事項
- 保留彈性: 計算值為理論值。實務上需保留約 10% 的彈性空間
- 防止倒塌: 若層數較多,請考量使用固定器具(如棧板膜)
- 重量平衡: 將較重的紙箱配置在下層
- 預留通道: 需將堆高機的作業空間列入考量
資料輸入注意事項
- 單位全數統一為 mm(公釐)
- 重量請輸入 kg(公斤)
- 必須滿足「有效尺寸 ≤ PL 尺寸」
- 請精確測量紙箱尺寸
🔗 相關模組
本公用軟體與以下 Tera 計算系統進行整合:
- T3_2 包裝物量計算: 提供紙箱數量資料來源
- T3_4 出貨空間: 活用所需棧板數量
- 儲存空間計算: 倉庫佈局設計
💾 檔案・資料結構
Excel 檔案
檔案路徑: Dat儲存Path & "\PL裝載計算\PL裝載計算.xlsx"
工作表1: PL規格與包裝型態
- 棧板規格主檔資料
工作表2: 紙箱數與尺寸
- 紙箱尺寸・數量資料
工作表1: PL規格與包裝型態
- 棧板規格主檔資料
工作表2: 紙箱數與尺寸
- 紙箱尺寸・數量資料
資料連線
Provider=Microsoft.ACE.OLEDB.12.0
Data source=[檔案路徑]
Extended properties="Excel 8.0;HDR=YES;IMEX=1"
Data source=[檔案路徑]
Extended properties="Excel 8.0;HDR=YES;IMEX=1"
🎓 裝載的基礎知識
裝載模式的選擇方法
- P1 模式: 當紙箱為長方形,且長邊大約是短邊的 2 倍時最為有效
- P2 模式: 當 P1 的裝填率偏低時的替代方案
- P1&P2 模式: 欲將無效空間降至最低時
- P2&P1 模式: 當 P1&P2 裝填率偏低時的替代方案
裝填率參考指標
| 裝填率 | 評分 |
|---|---|
| 90%以上 | 非常良好 |
| 80~90% | 良好 |
| 70~80% | 標準 |
| 60~70% | 偏低(應考慮改善) |
| 60%未滿 | 太低(需改善) |
改善要點
- 重新檢視紙箱尺寸(配合棧板尺寸調整)
- 考慮使用不同的棧板尺寸
- 活用組合模式(P1&P2、P2&P1)
- 評估多種 SKU 混裝的可能性
📚 總結
T3_Uty3棧板裝載與儲存規模.vb 是一款能支援棧板裝載最佳化與儲存規劃的高階計算工具。
主要特色
- ✅ 自動計算 4 種裝載模式(P1、P2、P1&P2、P2&P1)
- ✅ 考量裝填率並自動選定最佳模式
- ✅ 透過 2D 圖形實現裝載示意圖的視覺化
- ✅ 精確計算儲存所需的棧板數量
- ✅ 支援多種棧板尺寸
- ✅ 透過 Excel 整合提供靈活的資料管理
- ✅ 具備排序功能支援多角度分析
適用領域
- 開發新商品時的物流設計
- 倉庫空間規劃・佈局設計
- 提升運輸效率・降低成本
- 推動棧板標準化
- 改善物流 KPI
提升計算精確度的要點
- 精確測量紙箱尺寸(區分內徑・外徑)
- 精確設定有效尺寸(考慮面板厚度等)
- 遵守最大載重量限制
- 實際運作時的驗證與回饋
實務上的重要提醒: 計算結果為理論值。實際營運時,考量到安全性、穩定性與作業便利性,建議規劃約 10% 的安全彈性空間。
📞 支援資訊
文件建立日期: 自動產生
目標檔案: T3_Uty3棧板裝載與儲存規模.vb
語言: Visual Basic .NET (VB.NET)
總行數: 2609行
核心技術: Windows Forms, EPPlus, Graphics繪圖, 最佳化計算