T3_5_紙箱自動倉儲.vb 詳細說明書

1. 概述

本檔案是一款專為進行紙箱型自動倉儲(瓦楞紙箱自動倉儲)設計計算所開發的 Windows 表單應用程式。 其主要職責在於,針對存放多種不同尺寸紙箱的自動倉儲,根據尺寸、層數、列數等輸入參數, 自動計算出整座倉庫所需的尺寸(寬度、長度、高度)、所需面積及各樓層的儲存配置,進而提供佈局設計所需的基礎資料。

紙箱型自動倉儲是一種直接存放瓦楞紙箱的倉儲系統,被廣泛應用於電子商務物流中心、批發中心、以及製造工廠的成品倉庫等。

本系統的特色功能:

  • 支援混裝存放: 能夠混合存放 4 種不同尺寸紙箱的設計
  • 設定紙箱數量比例: 可指定各尺寸紙箱的數量比例(%)
  • 自動層數配置: 依據紙箱高度自動將各層的配置最佳化
  • 管理每格存放數量: 根據紙箱寬度自動設定每格的存放數量(6、5、4、3個)
  • 顯示詳細儲存狀態: 詳細顯示各樓層存放了哪些紙箱及其數量
  • 計算貨架高度: 累加各樓層高度以自動算出整體高度

標準紙箱尺寸分類

紙箱No 紙箱寬度範圍 紙箱長度(固定) 每格存放數
1 150~300mm 600mm 6個/格
2 301~400mm 600mm 5個/格
3 401~500mm 600mm 4個/格
4 501~600mm 600mm 3個/格

2. 主要類別/模組

2.1. 紙箱自動倉儲計算F 類別

目的

用來執行紙箱型自動倉儲設計計算的主表單類別。 可支援多種尺寸混裝存放,並最佳化各樓層的儲存配置。

主要屬性

此類別繼承自 System.Windows.Forms.Form,並保留了 DataGridView、文字方塊、標籤、按鈕等 UI 控制項。 主要的變數與控制項如下所示:

  • 需求紙箱數Dgv: DataGridView - 用以輸入及顯示紙箱規格與需求數量
  • 儲存明細Dgv: DataGridView - 詳細顯示各樓層的儲存紙箱數
  • 貨架高度Dgv: DataGridView - 顯示各樓層的高度資訊
  • 基本結構: 列數, 每列格數, 層數, 前提紙箱數
  • 紙箱資訊: 紙箱No1~4的比例、數量、所需格數、所需層數
  • 計算結果: 所需寬度, 所需長度, 所需高度, 所需面積
  • 圖片路徑: MyJpgPath(用於顯示圖面,目前被註解掉)

主要方法/函式

  • 紙箱自動倉儲計算_Load - 表單初始化與啟動主程式
  • 取得啟動程式所在資料夾之路徑 - 取得圖片路徑
  • 紙箱自動倉儲計算_初始設定 - DataGridView 的初始化與設定預設值
  • 貨架數計算 - 關於紙箱數、層數配置、格數計算的主要邏輯
  • 儲存明細 - 計算各樓層詳細的紙箱儲存配置
  • Dgv彙總 - DataGridView 的彙總處理
  • 佈局_計算 - 計算倉庫整體的尺寸與面積
  • 佈局重新計算Bt_Click - 點擊重新計算按鈕時的處理程序
  • Dgv格式 - DataGridView 的格式設定

3. 主要函式/副程式詳細說明

3.1. 紙箱自動倉儲計算_Load

功能說明

表單載入時執行的事件處理常式。負責設定版權顯示、有效期間顯示、取得圖片路徑、初始設定,並依序執行計算。

參數

參數名稱 型別 說明
sender Object 觸發事件的物件
e EventArgs 事件參數

回傳值

型別: 無 (Sub)
說明: 因屬事件處理常式,故無回傳值

處理流程

  1. 設定版權標籤與有效期間標籤的文字
  2. 呼叫 取得啟動程式所在資料夾之路徑() 來設定圖片路徑
  3. 透過 紙箱自動倉儲計算_初始設定() 來初始化 DataGridView
  4. 透過 貨架數計算() 執行紙箱配置計算
  5. 透過 佈局_計算() 算出倉庫尺寸與面積
特別注意事項:
藉由依序執行 3 個計算方法,系統能完成從紙箱規格到整體倉庫設計的連貫計算。

3.2. 紙箱自動倉儲計算_初始設定

功能說明

初始化「需求紙箱數 DataGridView」,並設定預設的紙箱規格與比例。 包含新增欄位、建立資料列、將儲存格設為唯讀,以及輸入預設值等作業。

參數

無

回傳值

型別: 無 (Sub)
說明: 僅進行 DataGridView 的初始化

處理流程

  1. 清除 DataGridView 中的所有欄位
  2. 新增 11 個欄位:
    • 紙箱高度排名
    • 紙箱No(1~4)
    • 紙箱寬度(顯示範圍)
    • 紙箱長度(固定 600mm)
    • 紙箱高度(使用者可輸入)
    • 紙箱數量比例%(使用者可輸入)
    • 需求紙箱數(自動計算)
    • 每格存放數(6, 5, 4, 3)
    • 所需格數(自動計算)
    • 格數A(每列格數×2)
    • 所需層數(自動計算)
  3. 新增 4 個資料列(對應紙箱No1~4)
  4. 設定固定值(紙箱No、紙箱寬度範圍、紙箱長度、每格存放數)
  5. 設定預設的紙箱高度(300, 400, 450, 500mm)
  6. 設定預設的紙箱數量比例(20%, 40%, 35%, 5%)
  7. 將可編輯儲存格(紙箱高度、紙箱數量比例)的背景色設為 PeachPuff
  8. 呼叫 貨架數計算() 執行初始計算
特別注意事項:
使用者能變更的項目僅有「紙箱高度」與「紙箱數量比例」。 其他項目皆為自動計算或固定值。 紙箱數量比例的總和必須為 100%。

3.3. 貨架數計算

功能說明

此為紙箱型自動倉儲的核心計算處理程序。 會根據前提紙箱數與紙箱數量比例,計算出各個紙箱的需求數量,並算出所需的格數與層數。接著會依據紙箱高度進行排序,以決定各層配置的優先順序。

參數

無(從表單上的控制項取得數值)

回傳值

型別: 無 (Sub)
說明: 計算結果會顯示於 DataGridView 中

處理流程

  1. 取得基本數值與計算:
    • 總格數 = 列數 × 每列格數 × 層數
    • 取得前提紙箱數
    • 格數A = 列數 × 每列格數
  2. 計算紙箱數量:
    • 依紙箱No進行排序(遞增)
    • 取得各紙箱的比例
    • 紙箱No1~3: 利用 Int(前提紙箱數 × 比例 / 100 + 0.99999) 進行無條件進位
    • 紙箱No4: 剩餘數量 = 前提紙箱數 - (紙箱No1~3的總和)
    • 將需求紙箱數顯示於 DataGridView 中
  3. 計算所需格數:
    • 紙箱No1: Int(需求數 / 6 + 0.9999)
    • 紙箱No2: Int(需求數 / 5 + 0.9999)
    • 紙箱No3: Int(需求數 / 4 + 0.9999)
    • 紙箱No4: Int(需求數 / 3 + 0.9999)
    • 算出所需格數總計
  4. 設定格數A:
    • 針對所有紙箱,設定 格數A = 每列格數 × 2
  5. 計算所需層數:
    • 各紙箱所需層數 = 所需格數 / 格數A
    • 算出所需層數總計
    • 若所需層數總計 > 指定層數,則顯示警告並結束程序 (Exit Sub)
  6. 依紙箱高度排序:
    • 以紙箱高度進行遞減排序(從高的紙箱開始配置)
    • 設定紙箱高度排名(1~4)
  7. 呼叫後續處理:
    • Dgv格式(需求紙箱數Dgv)
    • 儲存明細()
    • Dgv彙總()
    • 佈局_計算()
特別注意事項:
透過依據紙箱高度排序,可將較高的紙箱配置在較低層,實現最佳化配置。 透過無條件進位(+0.9999),可確保所需格數與層數充足,不至於發生缺少 1 個空間的情況。

3.4. 儲存明細

功能說明

詳細計算各樓層分別存放了哪些紙箱及其數量,並顯示於「儲存明細 DataGridView」中。程式實作了複雜的邏輯:會先從高度最高的層級開始填滿,並將剩餘的空格用下一個紙箱填補。

參數

無

回傳值

型別: 無 (Sub)
說明: 將結果顯示於儲存明細 DataGridView

處理流程

  1. DataGridView的初始化:
    • 清除所有欄位後,加入基本欄位(紙箱高度排名、紙箱No、紙箱寬度、紙箱長度、紙箱高度、所需格數)
    • 動態加入與層數相對應的欄位(第01層、第02層、...)
    • 加入 4 個資料列(對應紙箱No1~4)
  2. 配置紙箱高度排名第 1 名(最高的紙箱):
    • 取得所需格數
    • 計算層數 = Int(所需格數 / 格數A + 0.999)
    • 剩餘格數 = (計算層數 × 格數A) - 所需格數
    • 從 start 層到 end 層,每一層皆配置格數 A
    • 在最終層配置 (格數A - 剩餘格數)
    • 將剩餘格數保留給下一個紙箱使用
  3. 配置紙箱高度排名第 2 名:
    • 考量前一個紙箱留下的剩餘格數
    • 所需格數 = 需求所需格數 - 剩餘格數
    • 以相同方式計算樓層配置
    • 算出新的剩餘格數
  4. 配置紙箱高度排名第 3 名:
    • 以相同邏輯進行配置
  5. 配置紙箱高度排名第 4 名:
    • 將其配置於所有剩餘的空格中
    • 若有未使用的空格則顯示出來
特別注意事項:
這個函式是視覺化呈現各層儲存配置的關鍵功能。 透過「填補空隙」邏輯,將剩餘空格用於存放下一個紙箱,能有效運用倉庫空間,不造成浪費。

3.5. 佈局_計算

功能說明

計算倉庫整體的尺寸(寬度・長度・高度)與所需面積。 同時將各樓層的高度資訊輸出至「貨架高度 DataGridView」中。

參數

無(從表單上的控制項取得數值)

回傳值

型別: 無 (Sub)
說明: 計算結果會顯示於文字方塊與 DataGridView 中

處理流程

  1. 所需寬度的計算:
    • 貨架通道寬度 = 格寬 + 堆垛機通道寬度(供行駛使用)
    • 所需寬度 = 貨架通道寬度 × 列數 + 相鄰間距C × 2 + 列間距C × (列數 - 1)
  2. 所需長度的計算:
    • 行距 = 格長 + 支柱寬度 + 貨架間距C
    • 貨架總長 = 行距 × 行數 + 支柱寬度
    • 所需長度 = 貨架總長 + 進出貨輸送帶長 + 作業區域長 + 防護柱 + 檢查通道
  3. 所需高度的計算:
    • 從儲存明細中取得「貨架高度 DataGridView」各層的高度
    • 逐層計算 (紙箱高度 + 插入高度C + 橫樑厚度)
    • 將所有層的合計 + 最底層位移量 + 天花板安全間距C 加總以算出所需高度
  4. 所需面積的計算:
    • 所需面積 = (所需寬度 × 所需長度) / 1000² [m²]
特別注意事項:
由於每層的紙箱高度不同,系統會分別計算每一層的高度後再進行累加。 藉此可實現專為混裝儲存最佳化的高度設計。

3.6. 佈局重新計算Bt_Click

功能說明

點擊「佈局重新計算」按鈕時執行的事件處理常式。 會檢查紙箱數量比例的總和是否為 100%,並執行重新計算。

參數

參數名稱 型別 說明
sender Object 觸發事件的按鈕
e EventArgs 事件參數

回傳值

型別: 無 (Sub)
說明: 因屬事件處理常式,故無回傳值

處理流程

  1. 計算紙箱數量比例的總和(透過迴圈將 4 列相加)
  2. 若總和不等於 100,則顯示錯誤訊息並結束處理 (Exit Sub)
  3. 若總和為 100,則執行 貨架數計算()
  4. 切換所需尺寸標籤頁的背景色(LightYellow ⇔ PowderBlue)
特別注意事項:
若紙箱數量比例總和並非 100%,將會發生錯誤。 這是為了確保能正確分配紙箱數量的關鍵驗證機制。

3.7. Dgv彙總 / Dgv格式

功能說明

負責在 DataGridView 中新增合計列及設定格式的公用方法。

主要功能

  • Dgv彙總: 在各 DataGridView 底部新增合計列
  • Dgv格式: 設定儲存格的格式(如文字大小、對齊方式、顏色等)
特別注意事項:
這是一組讓 DataGridView 畫面更加美觀、更容易閱讀的公用函式群。

4. 依賴關係

  • System.Windows.Forms - Windows 表單應用程式的基本功能
  • System.Drawing - 用於 UI 顏色設定(Color 型別)
  • System - 用於基本型別與字串處理
  • System.ComponentModel - 為了使用 DataGridView 排序功能
  • 全域變數模組(推測) - 參照公司名稱、版權、試用版有效期限等全域變數
注意:
程式碼中參照的變數(公司、版權、試用版有效期限、計算開始_Chk2、MyJpgPath 等),推測是定義在其他模組或共通設定檔中。

5. 修訂歷史

修訂日期 版本 修訂內容 負責人
2025年 1.0 初次建立詳細說明文件 -

6. 計算邏輯摘要

紙箱數量分配計算

  • 紙箱No1~3: Int(前提紙箱數 × 比例% / 100 + 0.99999) ※無條件進位
  • 紙箱No4: 前提紙箱數 - (紙箱No1 + 紙箱No2 + 紙箱No3) ※剩餘數量
  • 總計 = 前提紙箱數(確保兩者相符)

所需格數計算

  • 紙箱No1(寬度 150~300mm): Int(需求紙箱數 / 6 + 0.9999) ※6個/格
  • 紙箱No2(寬度 301~400mm): Int(需求紙箱數 / 5 + 0.9999) ※5個/格
  • 紙箱No3(寬度 401~500mm): Int(需求紙箱數 / 4 + 0.9999) ※4個/格
  • 紙箱No4(寬度 501~600mm): Int(需求紙箱數 / 3 + 0.9999) ※3個/格

所需層數計算

  • 格數A = 每列格數 × 2(因採用雙列架構)
  • 所需層數 = 所需格數 / 格數A
  • 所需層數總和 = 紙箱No1~4 的所需層數加總
  • 所需層數總和 ≦ 指定層數(若超過則顯示錯誤)

層數配置演算法

按紙箱高度排列規則

  1. 將需求紙箱數 DataGridView 依紙箱高度進行遞減排序(由高至低)
  2. 從最高的紙箱(排名1)開始,由最底層往上配置
  3. 各個紙箱的配置方式:
    • 計算層數 = Int(所需格數 / 格數A + 0.999)
    • 除最終層外: 每一層配置「格數A」個
    • 最終層: 配置 (格數A - 剩餘格數) 個
    • 將剩餘格數保留給下一個順位的紙箱使用
  4. 下一順位的紙箱,將會利用前一次保留的剩餘格數開始配置
  5. 最後將所有格數填滿至排名最末的紙箱

此演算法的優點:
將較高的紙箱配置在較低樓層能增加結構穩定性,而將較低的紙箱配置在上層則可降低對天花板高度的需求。 此外,透過保留剩餘格數給下一個紙箱使用的機制,可避免浪費空間,實現極高的空間利用率。

倉庫尺寸計算

  • 所需寬度: 貨架通道寬度 × 列數 + 相鄰間距C × 2 + 列間距C × (列數 - 1)
  • 所需長度: (行距 × 行數 + 支柱寬度) + 進出貨輸送帶長 + 作業區域 + 防護柱 + 檢查通道
  • 所需高度: Σ(各樓層的(紙箱高度 + 插入高度C + 橫樑厚度)) + 最底層位移量 + 天花板安全間距C
  • 所需面積: (所需寬度 × 所需長度) / 1000² [m²]
關於單位的注意:
輸入值通常以 mm 為單位進行處理,在計算面積時會除以 1000² 將其轉換為 m²。

7. 使用方法與設計指南

輸入項目

  1. 倉庫基本結構:
    • 列數: 倉庫的列數(通常為 1~4 列)
    • 每列格數: 1 列所包含的格數(通常為 3~5 格)
    • 層數: 倉庫的層數(通常為 10~20 層)
    • 前提紙箱數: 欲儲存的紙箱總數
  2. 紙箱規格(DataGridView):
    • 紙箱高度: 各個紙箱的高度(mm)
    • 紙箱數量比例: 各紙箱佔的比例(%,總和需為 100%)
  3. 尺寸參數:
    • 格寬、格長、支柱寬度、貨架間距C、堆垛機通道寬度
    • 列間距C、相鄰間距C、進出貨輸送帶長度、作業區域、防護柱、檢查通道
    • 插入高度C、橫樑厚度、最底層位移量、天花板安全間距C

輸出結果解讀方式

  • 需求紙箱數 DataGridView:
    • 會顯示各紙箱的需求數、所需格數以及所需層數
    • 會賦予紙箱高度排名,方便辨識層數配置的優先順序
  • 儲存明細 DataGridView:
    • 會詳細顯示各層(第01層~n層)分別存放了多少數量的紙箱
    • 可透過視覺化方式確認每一層的紙箱配置狀態
  • 貨架高度 DataGridView:
    • 顯示每一層的高度(紙箱高度 + 插入高度C + 橫樑厚度)
    • 可確認整體高度的累加數值
  • 所需尺寸:
    • 顯示所需寬度、所需長度、所需高度及所需面積

設計的重點

  1. 設定紙箱數量比例:
    • 請根據實際庫存結構來設定比例
    • 所有比例的總和必須恰好為 100%
  2. 決定層數:
    • 請進行調整,確保「所需層數總和」不會超過指定的層數
    • 若超出限制,請增加列數或層數
  3. 設定紙箱高度:
    • 請精確輸入紙箱的實際尺寸
    • 較高的紙箱會被優先配置在較低樓層
  4. 確認層數配置:
    • 請在「儲存明細 DataGridView」中確認各層的配置情況
    • 若有未使用的空格,即表示存在空間浪費
實務上的建議:
本工具所算出的尺寸僅為倉庫本體的尺寸,在實際進行廠房設計時,還需額外考量辦公室、設備空間、未來擴充的預留空間,以及消防設備等。
此外,在混裝儲存的情況下,若紙箱尺寸頻繁變動,此種營運模式可能較不適用。 本系統最適合用於紙箱規格固定的營運模式(例如存放常態性商品)。

8. 紙箱倉庫與料盒倉庫的差異

項目 紙箱倉庫 料盒倉庫
存放對象 瓦楞紙箱 塑膠料盒
尺寸範圍 150~600mm(寬度可變) 300~600mm(固定規格)
支援混裝 可混合 4 種尺寸 標準 4 型號+自訂尺寸
配置演算法 依紙箱高度最佳化各層配置 以固定層高進行配置
每格存放數 依尺寸而定(6, 5, 4, 3個) 依料盒型號而定
用途 電子商務物流、配送中心 零件倉庫、藥品庫

紙箱倉庫的特色

  • 能應對每層高度各異的紙箱
  • 用下一個紙箱填補剩餘空格的高效率配置
  • 可透過紙箱數量比例靈活調整庫存結構
  • 透過儲存明細讓各層的配置一目瞭然