关于 dimensional-drawing
用于将单个 UI 组件或实体产品绘制成单色标注尺寸图,并输出独立 HTML 文件的技能。它涵盖源资料测量、变量尺寸、图纸布局和渲染检查。
主要功能
- 01单色标注图纸
- 02变量编码与公式表
- 03用 UI 占位槽替代示例文案
- 04SVG 绘图工具包与布局指南
- 05源资料测量和渲染检查
适用场景
- 01记录 UI 卡片或对话框尺寸
- 02依据已发布尺寸绘制产品图
- 03从源资料测量组件几何尺寸
- 04将渲染图作为 HTML 文件交付
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ enesozturk/ dimensional-drawing --skill dimensional-drawing安装后在 Claude Code 中输入/dimensional-drawing确认已加载。
附带文件examples/card-sheet.htmlexamples/dialog-sheet.html
详细介绍
尺寸图
像 Apple 配件尺寸图(developer.apple.com/accessories/dimensional-drawings)那样绘制一个主体:所有内容放在一张图纸上,注释放在左上角,视图分布在图纸上,并附带较小的细节视图;将表格放在其所对应视图的旁边。输出为一个独立的 HTML 文件(在 claude.ai 上,请将其发布为 Artifact)。示例:此文件旁边的 examples/dialog-sheet.html 和 examples/card-sheet.html——请直接复制其中的绘图工具包,不要从零开始。
基本规则
- 单色。 白纸上的黑色线条,只使用灰色。任何地方都不得使用强调色。通过线宽、虚线样式、剖面线和浅灰色填充来区分元素。按设计仅提供浅色主题(
color-scheme: light,明确指定每种颜色)。 - 架构,不是内容。 对于 UI,只绘制槽位,不要放入实际文案:带 X 的主区域框、
TITLE SLOT · FLEX、TRAIL/ACTION(HUG)、CONTENT SLOT · FILL、META SLOT · FLEX · WRAPS、LABEL SLOT、VALUE SLOT。不要标注文本宽度尺寸。尺寸术语:HUG(按内容确定大小)、FLEX(占用剩余空间)、FILL(填满父级宽度)。 - 变量,不是数字。 图纸上的每个尺寸都必须是代码;表格列出代码、变量名称和值。派生值使用公式并注明结果:
H1 header-min = 2·S1+H3 = 64、R2 r-inner = R1−B−S6 = 11、E1 = BL+SP−Y、E2 = BL+SP、E3 = BL+SP+Y。 - 不带品牌。 除非用户要求,否则图纸、标题栏或页脚中不得出现产品或公司名称、徽标或文字标识。使用中性名称(
UI-CARD-001、“UI 组件参考”)。 - 绝不编造数值。 源材料中没有的信息均标为
[TBD](例如视口边距、溢出行为、未公布的物理尺寸),并以按比例绘制的示意图表示。
代码系统
| 前缀 | 含义 | 示例 |
|---|---|---|
| S# | 间距 | S1 容器内边距,S2 内部内边距,S3 堆叠间距,S4 FLEX↔HUG 最小间距,S5 主区域间距,S6 内部缩进 |
| H# / Z# / I# | 高度 / 正方形尺寸 / 图标尺寸 | H1 header-min,H2 footer-h,H3 action-h,H5 input-h,Z1 主区域,I1 图标 |
| B、W | 边框、宽度(范围或固定值) | W = 420–680 |
| R# | 圆角半径 | R1 容器,R2 内部(派生值),R3 控件,R4 胶囊形 = h ÷ 2 |
| Y、BL、SP、E# | 阴影偏移 / 模糊 / 扩散,包络 | E1 顶部,E2 侧边,E3 底部 |
| T1、V1、MH | 触控最小尺寸、视口边距、最大高度 | MH = 100vh − 2·V1 |
页面结构
- 标题栏(HTML,顶部)。 样式与图纸一致:1.2 px 黑色边框、16 圆角、0.8 px 黑色单元格分隔线、普通大写字母(Arimo/Helvetica)、9.5 px 标签、大写值。单元格包括:大标题(细体大写、字距加宽)+ 一行范围说明、DWG NO.、REV、SHEETS、UNITS、SCALE、SOURCE。接着是
NOTES: (UNLESS OTHERWISE SPECIFIED)通用注释,分为左右对齐的两列(不可按比例测量;单位;槽位为占位符;代码与公式;HUG/FLEX/FILL;[TBD];灰度)。然后是一行 6–7 个关键变量(W · card-w 420–680、H1 · header-min 2·S1 + H3……),公式使用小写。 - 图纸。 每张图纸使用一个 SVG,
viewBox="0 0 1700 1060",在overflow-x:auto框架内设置width:100%; min-width:1100px。使用圆角图纸边框。图纸上不放标题栏(会占用空间);图纸标识放在图纸下方的页脚行:左侧DATE | UI COMPONENT REFERENCE,右侧NAME, ARCHITECTURE | n。 - 优先使用一张图纸。只有一张图纸无法清晰容纳时才添加新图纸;每张附加图纸都保持相同结构,并在注释中交叉引用(
SEE SHEET 2)。
工作表布局(单张工作表)
- 注释位于左上角:方框编号
[1],这些编号也会出现在图中对应特征旁;未编号的行用于一般规则。 - 平面视图位于顶部中央,比例为 0.9–1.1:1:带插槽的线框图;顶部和底部标注坐标尺寸链(代码、FLEX/HUG 字样、带范围标签的总宽 W);左侧标注区域尺寸链(H1 / HUG / H2、总尺寸
(REF n));右侧标注内部尺寸链(S1 / H3 / S1 / S2 / S3 …);半径引出线、点划中心线、方框注释编号,以及带标签(DETAIL C)并指向其他位置放大绘制特征的虚线细节圆。 - **注释下方:**阴影包络(卡片轮廓、剖线占地轮廓、点划包络线、E1/E2/E3)。
- **左侧/左下角:**图层堆栈的分解轴测图,标签和引出线位于左侧(画布 → [遮罩] → 阴影 → 容器 → 内嵌表面 → 插槽和控件)。
- **底部一行:**嵌套圆角细节(共用圆心、B 和 S6,
R2 = R1 − B − S6)、半径细节(每种半径一个四分之一圆弧,比例为 2–2.4:1)、约 0.65:1 的内部/主体细节,以及组件专属细节。 - **右侧栏:**变量表(Spacing、Size、Radius、Shadow;适用时另含 Viewport / Keep-out)。
组件专属视图(按需选择)
- 卡片/列表行:主体凹槽内边距、堆叠间距、弹性/固定高度页脚、触控目标。
- 对话框/面板/弹出层:视口中的位置(双轴居中、全屏遮罩、MH 框、V1 [TBD]、视口内的包络);分解视图中的遮罩图层;页眉控件(前导 R4、关闭 Z2,居中图标
(Z2−I1)÷2);字段细节(标签 → S4 → 输入框 H5,内边距 S9,R3);页脚操作(末端对齐、次要胶囊按钮、间距 S7、主要 R3、每个按钮的内边距)。 - 按钮/标签/输入框:比例为 2–4:1 的细节图;并排展示不同状态;触控区域与绘制高度的对比。
- 导航/页面布局:每个断点对应一张平面图、列网格、安全区域。
- **实体产品:**第三角法的顶视图/正视图/右视图 + 剖面 A–A(剖切实体填充剖线);位置页区域(收纳状态、展开状态、拆下部件)和按比例绘制的尺寸范围条;单位为 mm;仅列已发布的规格并注明来源;冲突标记为
CONFLICT,其余均标记为 [TBD];不使用徽标或表面纹理。
测量 UI 组件
读取真实源文件(仓库文件、Storybook 故事、设计画布文件、工件、URL)。去除缩放和模板孔,在 Playwright 中渲染,等待字体加载,然后遍历盒模型树(getBoundingClientRect + getComputedStyle:内边距、间距、圆角、边框、最小高度、flex-shrink、最小宽度)。使用 grep 统计检查每个实例,确保变量反映整个系统,而非单个示例。
绘图工具包(SVG,内联 JS)
每张工作表使用一个 begin(svgId),创建含有唯一箭头标记和 45° 剖线图案 ID 的 <defs>,并绘制工作表边框。所有辅助函数均使用工作表单位:
dimH(x1,x2,y,ext1Y,ext2Y,label,{below,dx,dy,c}) // horizontal dim; <28px span → arrows outside
dimV(y1,y2,x,ext1X,ext2X,label,{side:'l'|'r'}) // vertical dim; no side → rotated label
callout(px,py,ex,ey,label,dir) // dot + leader + shoulder + text
rad(cornerX,cornerY,r,'tl'|'tr'|'bl'|'br',label,len)
nb(x,y,n) // boxed note number
detailRef(cx,cy,r,label,lx,ly) // dashed circle + leader
table(x,y,title,[[code,variable,value]…]) // widths 40/88/96, returns next y
notes([[n,text]…]) // n=0 → unnumbered
约定:对象轮廓 1.6 px;尺寸线 0.7 px;延长线 0.55 px,与特征相距 3 px,超出 5 px;实心箭头 7 px;尺寸文字 11 px,使用白色 paint-order: stroke 遮挡背景;插槽标签使用 9 px 大写字母并增加字间距;视图标题使用 12 px 大写字母并增加字间距,副标题为 9.5 px(SCALE 0.9:1 · …)。插槽使用虚线 4 3;hug 元素使用浅灰填充;内嵌表面使用更浅的灰色;虚影/区域线使用长虚线;包络线使用点划线;禁入区使用剖线填充。
注意事项:CSS 的 fill 规则若作用于某个类,会覆盖 fill="url(#hatch)" 属性,因此剖线形状所用的类不能设置 fill。在经过变换的组(分解视图)内使用 vector-effect: non-scaling-stroke,并通过 style 而非属性设置 CSS 变量填充。尺寸链紧密时,用 dx/dy 错开标签。分解投影:matrix(.94s, .17s, −.34s, .47s, tx, ty−z)。
发布前
- 绘图中的每个代码都存在于表格中;每个公式都能闭合(表头 = 2·S1 + H3,总计 = 各区域之和)。
- 不含品牌文字;不含颜色(在灰色标记之外搜索十六进制值);不使用依赖内容的宽度。
- 使用 Playwright 在 1800 px 宽度下渲染一次,检查截图中是否有标签重叠或元素越过图纸边界,集中修复一轮,然后交付(在 claude.ai 上发布为 Artifact,或保存为 .html)。
要为完成的图纸添加动画,请使用 dimensional-drawing-motion 技能。
用一到两句话回复:绘制了什么,以及团队需要确定的任何 [TBD] 值。