縫紉版型產生器
以參數化方式(版型繪製規則,非圖像生成)繪製縫紉版型,檢查其可車縫性,並產生列印檔案、排料圖、布料用量與縫紉說明。所有產生的檔案均為英文。請以使用者使用的語言回覆。
僅限自有版型:絕不重建或複製受保護的商業版型。當使用者展示設計師服裝時,請為私人用途繪製類似風格的原始版型。
設定(僅一次)
pip install -r requirements.txt # numpy scipy shapely opencv-contrib-python-headless reportlab matplotlib pillow pypdf
所有腳本位於 scripts/ 目錄下,並從該目錄或使用其路徑呼叫。
工作流程
1. 理解需求
選出:服裝與變體、尺寸或測量值、布料與彈性、合身度、輸出格式。有照片?→ 步驟 3。
2. 提問:僅一次,只問真正缺少的資訊
將缺少的點整合在一則簡短訊息中提問,每個點附帶一個預設值(「如果您未特別說明,我將使用……)。典型的遺漏點:
- 服裝與變體(口袋、袖口、長度、帽子……)
- 尺寸(兒童 86–176、女裝 34–56、男裝 44–60)或身體測量值(身高、胸圍、腰圍、臀圍、內側腿長、側長、臂長、頭圍)
- 布料(梭織 / 針織 / 含彈性纖維的針織 / 互鎖針織 / 棉絨 / 刷毛布)與彈性百分比
- 合身度(合身 / 正常 / 寬鬆 / 超寬鬆;褲子還有哈倫褲)
- 輸出:捲筒(寬度以 mm 為單位,預設 610)、A0、A1、A4 或需拼接的美國信紙
- 機器: 使用者使用的縫紉機:縫紉機(之字縫?彈性縫?或僅直線縫)、雙針、拷克/包縫機、蓋縫機。若 workshop 檔案中已有這些資訊(
python scripts/profiles.py machines show)或使用者之前已提供,則跳過此問題。如果使用者未說明,預設為家用縫紉機(具之字縫功能)。 - 縫份僅在對使用者重要時才詢問(預設為 1 cm,下擺為 2–2.5 cm;在針織布料上使用包縫機時自動設為 7.5 mm,在僅直線縫機器上梭織布料為 1.5 cm,或設為「無」以便使用者自行描繪與添加)
之後不再追問;任何不明確之處皆以合理的預設值解決,並在結果中說明。
娃娃衣服(布偶、填充玩具、時尚娃娃;身高 20–100 cm):改為詢問娃娃的身高(頭到腳),以及用軟尺或繩子繞娃娃測量的:胸圍、腰圍、臀圍、頭圍、臂長(肩到手腕)、內側腿長與側長(腰到腳底)。僅身高為必填;缺少的值將遵循典型的布偶比例。接著執行 generate.py --doll --garment dress --measures '{"height": 45, "chest": 30, …}'(規格 "doll": true)。支援:dress、skirt、pants_basic、tshirt_basic。娃娃預設值(均可覆蓋):縫份 6 mm(身高 30 cm 以下為 5 mm)、下擺 10 mm、梭織布料、寬鬆合身、上衣與洋裝背面全開(魔鬼氈/釦子,因為填充頭部通常無法穿過領口)搭配斜布條領口、褲子使用窄鬆緊帶、無口袋/袖口。建議使用薄棉布、短針距與防綻劑。娃娃使用 profiles.py save rosa --measures '{…}' --kind doll 建立個人檔案。詳細資訊:scripts/doll.py、references/size_tables.md(「娃娃衣服」)。
機器: 使用 --machines sewing,overlocker,coverstitch 傳遞(鍵值:sewing = 直線縫 + 之字縫、straight_only、stretch_stitch、twin_needle、overlocker、coverstitch;德文名稱如 Overlock、Coverlock、Zwillingsnadel 也可;規格欄位為 machines)。機器屬於縫紉者個人,因此當他們首次提供時,請儲存一次以供未來所有版型使用:python scripts/profiles.py machines set sewing,overlocker(workshop 檔案 profiles/_machines.json;測量值個人檔案可攜帶自己的 --machines,且 --machines 優先於上述兩者)。影響:在包縫機上處理的針織布縫份為 7.5 mm(刀片會修剪)、在僅直線縫機器上梭織布料的縫份為 15 mm 以製作法式縫份(明確的 --seam-allowance 始終優先;娃娃衣服保留其 6 mm);每個縫合與下擺步驟皆會標明機器與線跡;說明書會包含「您的機器」表格(針對各步驟類別的線跡、寬度/長度、車針)以及針對缺少機器的提示(例如使用雙針代替蓋縫機)。若無包縫機,則無缺失:針織布縫合使用窄之字縫/彈性縫。在僅直線縫機器上車縫針織布雖可行但較脆弱:建議改用梭織布料或使用說明書中描述的雙排長直線縫。完全沒有縫紉機(僅有包縫機):--machines overlocker,hand(或 overlocker_only;hand 若未搭配任何縫紉機鍵值,表示「沒有縫紉機」)。此時每個縫合都使用包縫機(縫份 7.5 mm,梭織布料亦同),所有直線縫步驟都改為手縫:表面裝飾縫 → 回針縫、下擺/鬆緊帶套 → 藏針縫、疏縫 → 疏縫針跡、手工打結、鬆緊帶末端 → 一系列手縫針法;步驟中會添加包縫機提示(車針在刀片前移出、曲線處放慢、線環)。在回覆中,用一行說明版型如何根據他們的機器進行調整。
測量值個人檔案: 當使用者提供某人的身體測量值時,提議儲存一次(python scripts/profiles.py save lena --measures '{…}' --kind child)。後續如「幫 Lena 做褲子」的請求則無需再問尺寸:generate.py --profile lena …(若兒童的測量值超過 6 個月會發出警告;請參閱 references/size_tables.md)。
3. 照片(選用)
首先決定適用模式(詳細資訊:references/photo_guide.md):
模式 A:靈感照片(穿著照、目錄、Pinterest)。觀察照片並填入特徵 JSON(結構請見 scripts/photo_analyze.py,每個特徵包含 value 與 confidence 0–1)。接著:
python scripts/photo_analyze.py features.json # 確認文字 + 模組/選項 + 「未涵蓋」
python scripts/photo_analyze.py --image flatlay.jpg # 褲子輪廓自動化(僅比例)
顯示含信心的特徵列表,並請使用者確認(「我可以看到……是否正確?」)。明確指出未涵蓋的特徵,並提供腳本列印的替代方案;請勿自行編造。身體測量值始終由使用者提供,絕不來自靈感照片。
模式 B:複製衣物(平放、從正上方拍攝、使用參考卡 assets/reference-card.pdf 或折疊尺):逆向工程。
cd scripts && python -m reverse.pipeline photo.jpg --type pants --out project/
結果:overlay_measurement.png(偵測到的輪廓與測量值;顯示給使用者確認)、reverse_report.md(裁片/縫合線圖、目標/實際/偏差報告、可車縫性檢查)以及 project.json(保留它以便「像上次一樣,大兩號」→ reverse.pipeline.regrade("project.json", 2))。使用者的軟尺測量值優先:photo_measure.measure(..., tape={"inseam": 48})。若無參考卡,技能會明確說明該怎麼做。缺少的照片(例如褲襠曲線)由 reverse.decompose.missing_photos 列出。公差:長度 ± 1 cm,寬度 ± 2%。接著產生列印檔案:
python scripts/generate.py --project project/project.json --format roll610,a4 --out out/copy
也可以複製娃娃衣服:加上 --doll(reverse.pipeline.run(..., doll=True));結果將包含娃娃縫份與後背開口,並可透過 generate.py --project 列印。娃娃上衣以長袖測量效果最佳(非常短、寬的娃娃袖子:使用軟尺測量袖寬)。模式 B 適用於褲子(--type pants)與 T-shirt / 插肩袖上衣(--type top,模組 tshirt_basic)。上衣的測量值包含:照片中的胸寬與下擺寬、長度、腋下深度、前領口(寬度與深度)、後領深、肩點、袖山線、上臂寬、袖長與袖口;圓裝袖或插肩袖根據領口偵測(插肩袖的領口會留下尖角)並顯示在疊加圖上供使用者確認(base_options={"sleeve_style": "raglan"} 可覆蓋)。合身度會繪製候選版型、以虛擬方式平鋪(flatlay.py:前片 ∪ 後片,袖子沿袖山線折疊)並透過最小平方法匹配每個照片特徵。比例來自 10 cm 參考卡;對於寬度 1.5 m 的衣物(長袖展開),輕微的相機傾斜可能導致高達 2% 的誤差:如果使用者方便,請他們用軟尺平量胸寬並以 tape={"chest_flat": 37.2}(cm)傳遞:所有照片值都將據此重新縮放。
4. 測量值
measurements.complete_measures(given_cm, size) 從尺寸表或身高填入缺少的測量值,並報告合理性警告。給定的測量值優先於尺寸表。表格與來源:references/size_tables.md。
如果使用者有來自版型 CAD 軟體的 XML 測量值檔案(.smis / .vit),請使用 --measures-file 傳遞;明確的 --measures 值會覆蓋它。使用 --export-measures 時,所使用的測量值將儲存為 body_measurements.smis,這是保留個人測量值以便下次使用的好方法。
5. 繪製、驗證、排版、渲染:一次呼叫
python scripts/generate.py --garment pants_basic --style harem --size 122 \
--fabric sweat --format roll610,a4 --out out/harem122
# 更多範例
python scripts/generate.py --garment tshirt_basic --size 140 --options '{"sleeve_style":"raglan","sleeve_length":"long"}' --format a4
python scripts/generate.py --garment hoodie --size w38 --fabric sweat --format roll914,a0
python scripts/generate.py --garment skirt --size 128 --style circle --format a1
python scripts/generate.py --spec order.json # 全部以 JSON 格式(請參閱 generate.py 的標頭)
尺寸:兒童以數字表示(122)、女裝為 w38、男裝為 m52;美/英尺寸:us8(美國女裝)、uk12(英國女裝)、us3t(美國學步兒)、usk8(美國兒童),請參閱 references/size_tables.md。
一次多個尺寸(巢狀): --size 98,110,122(或兒童尺寸步進範圍 98-122)會繪製並驗證每個尺寸,並將它們疊加在一個共享的建構點上,每個尺寸使用各自的顏色/線條、PDF 圖層(可在 Acrobat 的圖層面板中切換尺寸開關)和 SVG 群組。適用於兄弟姊妹或尺寸混合;所有尺寸共享相同的選項。
英制使用者:--units imperial(測量值以英吋為單位,報告以英吋/碼為單位)。
德文輸出: --lang de(規格 "language": "de")會以德文撰寫所有輸出:裁片標籤、縫紉步驟、小冊子、排料圖、報告與圖表,並使用德文檔案名稱(naehanleitung.pdf、pruefbericht.md、zuschnittplan.png、schnitt.json、…_master_1zu1.svg、…_a4_kleben.pdf)、十進位逗號與「Gr. 122」。所有文字都透過一個字串表(scripts/i18n.py,德文條目在 scripts/i18n_de.py);新的輸出文字需要在其中加入德文條目。選項名稱與建構值鍵值保持英文。
模組與主要選項:
| 模組 | 款式/選項 |
|---|---|
pants_basic | 款式: jogger, harem, leggings, trousers · 合身度 · 布料 · 彈性 · 長度 (long, 7/8, knee, short) · 腰頭 (casing, rib, yoga, tunnel) · 袖口 · 口袋 ([side] = 斜插前口袋含口袋布, [back_patch], [cargo]) · 褲管形狀 (straight, tapered, bootcut, flare + flare_cm; 長褲無反折) · 反折 (cm, shorts/knee length) · 假門襟 (true 或 {offset_mm, length_frac_R, radius_mm, side}) · 後口袋 (1, 2) + 後口袋側邊 (right, left; 以穿著方向為準) · 下擺處理 (plain, elastic_casing + hem_elastic_mm, hem_elastic_len_cm) · 口袋布布料 (cotton, jersey, lining, main) |
tshirt_basic | 合身度 · 布料 · 袖型 (set_in, raglan) · 袖長 (short, 3/4, long) · 領口 (round, v) · 衣長 (normal, tunic) · 袖口 · 下擺羅紋 |
hoodie | 如 T-shirt + 帽子、帽子內裡、袋鼠口袋(預設:sweat、寬鬆、羅紋袖口)· 前片 (closed, zip: 拉鍊開襟外套,含前開設計、側口袋、拉鍊檔布,拉鍊長度寫於備註中) · 拉鍊檔布 |
skirt | 款式: gathered, a_line, circle · 長度 (mini, knee, midi, maxi) · 摺量 · 展開角度 |
dress | 款式: waist_seam (T-shirt 上身 + 裙子: gathered, a_line, circle; 摺量 1.0–2.5; 腰部鬆緊帶; 側縫口袋), shirt_dress (A 線 T-shirt 洋裝, 展開 cm) · 長度 (mini, knee, midi, maxi) · 所有 T-shirt 袖子/領口選項 |
beanie | 帽緣、垮帽 |
loop | 圈數 (1 = 單圈, 2 = 對折雙層)、高度 |
布料:woven, corduroy, velvet, jersey, jersey_elastane, interlock, sweat, fleece, rib。燈芯絨與天鵝絨有絨毛方向(選項 nap,其他布料也可設定 nap: true):所有主布料裁片皆以頂端朝向同一布料端裁剪,且熨燙備註會說明從反面熨燙。
所有模組:title(例如「Kordhose」)會取代裁片、說明書與檔案名稱中的服裝名稱。
合身度:slim, normal, wide, oversized, harem。
縫份(所有模組):--seam-allowance 7.5(mm,所有縫合處)、--hem-allowance 30(反折下擺)、--seam-allowance none(不含縫份的版型:僅繪製縫合線,每個裁片列出需要添加的份量)。規格選項:seam_allowance_mm、hem_allowance_mm、seam_allowance: "none"。摺邊保持為 0;鬆緊帶套、貼邊與窄圓裙下擺則保留其結構性縫份。
格式:rollNNN(頁面寬度 = 捲筒寬 − 10 mm,縱向;比捲筒寬的裁片會自動分割成帶有黏貼標記的長條)、a0、a1(裁片完整,超大片無法容納者進行拼接)、a4、letter(拼接區塊,含 10 mm 重疊與概覽頁面)、dxf / dxf14(用於裁剪機與 CAD 的 DXF,AAMA 圖層,請參閱 references/print_specs.md)、projector / projector_dark(單頁 1:1 用於投影機縫紉,附 10 cm 校準格線,粗線條)。
同時必定產生:SVG 主檔 1:1、PNG 預覽、排料圖 PNG、縫紉說明(PDF:圖解小冊子:包含最終服裝的封面頁
…(省略後續內容)