Communitygithub.com

JRuiter/sewing-pattern-generator

根据自由描述、尺寸或身体测量值及/或服装照片,生成可缝制、真实尺寸、可打印的缝纫纸样(1:1 矢量 PDF)。可用于“制作/起草/生成缝纫纸样”、“根据我的尺寸制作纸样”、“根据照片制作纸样”、“复制我最喜欢的裤子”、“拓印服装”、绘图仪/卷纸打印、A0/A1 或 A4 纸张拼接。也支持德语请求,如“Schnittmuster erstellen/konstruieren”、“Nähmuster nach Maßen”、“Schnitt nach...”。

sewing-pattern-generator 是什么?

该技能是一个全面的缝纫纸样生成器,专为需要根据用户输入(包括自由文本描述、身体测量数据、照片或现有服装)创建定制、可打印且1:1比例纸样的开发者或缝纫爱好者设计。它不依赖图像生成,而是使用参数化制版规则,确保纸样可缝制。主要功能包括:从照片提取特征的 **模式A**(灵感照片)和 **模式B**(复制服装,需参考卡或卷尺);处理详细的测量数据,支持从标准尺码或身体测量值进行补全;支持超过15种服装类型(如裤子、T恤、卫衣、裙子、连衣裙等),并有丰富的可定制选项(如版型、口袋、袖型)。输出格式包括用于拼接的A4/Letter、用于绘图仪的卷纸以及专用格式如DXF(用于裁剪机)和投影仪(1:1投影)。该技能还集成机器配置(如缝纫机、包缝机),以自动调整缝份余量,并提供服装用料计算和分步缝纫说明。它基于Python实现,依赖NumPy、SciPy、Shapely和OpenCV等库,能够生成完整的生产就绪文件包,包括SVG主文件、PNG预览、裁剪布局和缝纫说明PDF。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/JRuiter/sewing-pattern-generator/tree/HEAD

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

缝纫纸样生成器

参数化绘制缝纫纸样(制版规则,非图像生成),检查其可缝性,并生成打印文件、裁剪布局、面料用量和缝纫说明。所有生成文件均为英文。以用户使用的语言回复用户。

仅限原创结构:绝不重建或复制受保护的商业纸样。当用户展示设计师服装时,为其创作一个类似风格的原创纸样,仅供私人使用。

设置(一次性)

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 或 US Letter 拼接
  • 机器: 他们使用的缝纫机(缝纫机:人字缝?弹性缝?或仅直线缝)、双针、包缝机/锁边机、绷缝机。如果工作坊文件中已有这些信息(python scripts/profiles.py machines show)或他们之前已提及,则跳过此问题。如果他们未说明,默认使用带人字缝的家用缝纫机。
  • 缝份仅在用户关心时询问(默认 1 厘米,折边 2–2.5 厘米;使用包缝机缝制针织面料时自动为 7.5 毫米,仅直线缝缝纫机缝制机织面料时为 1.5 厘米,或“无”用于拓印并自行添加)

之后不再询问;对于任何不清楚的地方,使用合理的默认值处理,并在结果中说明。

娃娃衣服(布娃娃、软玩具、时尚娃娃;身高 20–100 厘米):转而询问娃娃的身高(头到脚)以及用软尺或绳子在娃娃身上测量的:胸围、腰围、臀围、头围、臂长(肩到腕)、内缝长和侧长(腰到脚底)。仅身高为必填项;缺失值将遵循典型的布娃娃身体比例。然后 generate.py --doll --garment dress --measures '{"height": 45, "chest": 30, …}'(指定 "doll": true)。支持的款式:dress、skirt、pants_basic、tshirt_basic。娃娃默认值(均可覆盖):缝份 6 毫米(身高 30 厘米以下为 5 毫米),折边 10 毫米,机织面料,宽松版型,上衣和连衣裙背部完全开口(魔术贴/按扣,因为填充头部通常难以穿过领口),领口包边处理,裤子窄橡皮筋腰带,无口袋/袖口。推荐薄棉布、短针距和防脱线剂。娃娃可通过 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(工作坊文件 profiles/_machines.json;测量档案可携带自己的 --machines,且 --machines 优先级最高)。影响:包缝机缝制的针织缝份为 7.5 毫米(刀具修剪),仅直线缝缝纫机缝制的机织缝份为 15 毫米(用于法式接缝)(显式的 --seam-allowance 始终优先;娃娃衣服保持其 6 毫米);每个缝份和折边步骤均注明机器和线迹;说明书中包含“您的机器”表格(线迹、宽度/长度、每种步骤用针)以及针对缺失机器的建议(例如用双针替代绷缝机)。若无包缝机则无缺失:针织缝份使用窄人字缝/弹性缝。仅直线缝缝纫机可缝制针织面料但较脆弱:建议使用机织面料或按说明书中所述的双行长直线缝。完全没有缝纫机(只有包缝机):--machines overlocker,hand(或 overlocker_only;hand 不带任何缝纫机键表示“无缝纫机”)。此时所有缝份均包缝(7.5 毫米缝份,机织面料亦然),所有直线缝步骤由手工完成:明线 → 回针缝,折边/腰带 → 暗缝,疏缝 → 假缝,套结由手工缝制,松紧带末端 → 手工线迹盒;步骤中添加包缝机提示(缝针在刀前取出,曲线处慢速,线环)。在回复中,用一行说明纸样如何根据他们的机器进行了适配。

测量档案: 当用户提供某人的身体测量值时,提供一次保存选项(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 厘米,宽度 ± 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恤/插肩袖上衣(--type top,模块 tshirt_basic)。对于上衣,照片提供胸围和底边宽度、长度、腋下深度、前领口(宽度和深度)、后领深、肩点、袖山线、上臂宽、袖长和袖口;套装袖或插肩袖根据领口检测(插肩袖会在领口留下尖角)并显示在叠加图上供用户确认(base_options={"sleeve_style": "raglan"} 可覆盖)。版型会起草候选纸样,在虚拟平面上平铺(flatlay.py:前片 ∪ 后片,袖子沿袖山线折叠)并通过最小二乘法匹配每个照片特征。比例来自 10 厘米参考卡;对于展开长袖的 1.5 米宽服装,轻微相机倾斜可能导致最多 2% 的误差:如果可能,让用户用卷尺测量平铺胸宽并以 tape={"chest_flat": 37.2}(厘米)传递:所有照片值将据此重新缩放。

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_basicstyle: jogger, harem, leggings, trousers · fit · fabric · stretch · length (long, 7/8, knee, short) · waistband (casing, rib, yoga, tunnel) · cuffs · pockets ([side] = 斜插口袋带袋布, [back_patch], [cargo]) · leg_shape (straight, tapered, bootcut, flare + flare_cm; 长腿无 cuff) · turn_up (cm, shorts/knee length) · fake_fly (true or {offset_mm, length_frac_R, radius_mm, side}) · back_pockets (1, 2) + back_pocket_side (right, left; 穿着时) · hem_finish (plain, elastic_casing + hem_elastic_mm, hem_elastic_len_cm) · pocket_bag_fabric (cotton, jersey, lining, main)
tshirt_basicfit · fabric · sleeve_style (set_in, raglan) · sleeve_length (short, 3/4, long) · neckline (round, v) · length (normal, tunic) · sleeve_cuffs · hem_band
hoodie如 T 恤 + hood, hood_lining, kangaroo (默认: sweat, wide, rib cuffs) · front (closed, zip: 拉链开合夹克,前中开,侧口袋,拉链挡条,拉链长度在备注中) · zip_guard
skirtstyle: gathered, a_line, circle · length (mini, knee, midi, maxi) · gather · flare_deg
dressstyle: waist_seam (T 恤上衣 + 裙子: gathered, a_line, circle; gather 1.0–2.5; waist_elastic; 侧缝口袋), shirt_dress (A 字形 T 恤连衣裙, flare_cm) · length (mini, knee, midi, maxi) · 所有 T 恤袖型/领口选项
beaniebrim, slouch
loopwraps (1 = 单圈, 2 = 双圈佩戴), height

面料: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 毫米,纵向;比卷纸宽的裁片自动拆分为带粘合标记的条带)、a0、a1(整片,超大裁片平铺)、a4、letter(10 毫米重叠平铺,附带概览页)、dxf / dxf14(用于裁剪机和 CAD 的 DXF,AAMA 图层,参见 references/print_specs.md)、projector / projector_dark(1:1 投影缝纫单页,10 厘米校准网格,粗线条)。 始终同时写入:SVG 主文件 1:1、PNG 预览、裁剪布局 PNG、缝纫说明(PDF:插图手册:封面包含服装和最终尺寸、面料及用量、线、缝纫方案;正面缝纫步骤与裁片列表一致,背面每页连续编号且附带裁片图)。format all 生成所有格式。

6. 结果与后续

回复内容顺序:(1) 材料清单和最终尺寸,(2) 它们的机器适配,(3) 指出明确的默认值,(4) 可缝性检查,(5) 报告摘要(输入、警告、用料),(6) 链接到 out/ 下的文件。需要一个目录名→ --out out/unique-name。如果提示“纸样看起来不错——还要做点什么吗?”,用于尺寸变更、添加选项或保存档案。保存档案时的输出名约定:python scripts/profiles.py save lena --measures '{…}' --kind child(参见 scripts/profiles.py)。

7. 变更:用户想要调整

# 重新生成,更大的尺寸——针对相同的规格更改这些:
python scripts/generate.py --size 134,140,146 --style jogger --out out/jogger140
# 或者从规格 JSON:编辑并重新生成
python scripts/generate.py --spec order.json

用户档案

  • 测量档案:python scripts/profiles.py save lena --measures '{…}' --kind child(用户画面的“保存这些测量值供以后使用?”)
  • 机器档案:python scripts/profiles.py machines set sewing,overlocker
  • 显示:python scripts/profiles.py show lena 显示“伦娜 (儿童):[测量值]”(每张照片也会显示档案名称)
  • 列出:python scripts/profiles.py list
  • 删除:python scripts/profiles.py delete lena

档案存储在 profiles/ 下,共享一个 _machines.json。


详细说明

  • references/photo_guide.md:照片模式 A 与 B、覆盖图、参考卡布局
  • references/size_tables.md:所有尺码表 + 娃娃比例
  • references/print_specs.md:打印格式、DXF 图层、SVG 规格
  • scripts/doll.py:娃娃服装机制
  • scripts/i18n.py / scripts/i18n_de.py:翻译
  • scripts/photo_analyze.py:特征评估器
  • scripts/profiles.py:测量值与机器存储
  • tests/:回归测试(pytest tests/)

示例工作流程

  1. 用户:“为我 5 岁女儿做一条 A 字形裙子,77 厘米高,裙子长 37 厘米,腰围柔软。我喜欢照片中的风格。” [附加灵感图]
  2. 技能:提取并显示特征,请求确认领口和袖型,同时要求腰围(如果未给出)。等待回复。
  3. 用户确认并使用 python scripts/generate.py --garment dress --style a_line --size 110 --out out/sunday_dress。
  4. 生成的文件:out/sunday_dress/sunday_dress_svg_master_1zu1.svg、sunday_dress_a4_kleben.pdf、naehanleitung.pdf、zuschnittplan.png。
  5. 回复:包含材料链接和“这是您的连衣裙纸样!”

相关技能