算法艺术创作
algorithmic-art
通过代码和可调参数创作生成艺术与交互式视觉效果。
cad-designer【设计与创意】CAD设计狮——融合四大IMA CAD知识库的专业设计指导skill。专注CAD制图规范(国标)、参数化设计、图层管理系统、标注标准、批量出图策略、性能优化、AI+CAD趋势与设计检查清单。cad-automation负责写代码画图,CAD设计狮负责告诉AI"怎么设计才对"。
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
本skill提供CAD设计的专业指导,涵盖制图规范(国标)、参数化设计、图层管理系统、标注标准、批量出图策略、性能优化、AI+CAD趋势与设计检查清单。
配合使用:
cad-automationskill 负责写代码自动化画图,CAD设计狮负责告诉AI"怎么设计才对"。
本 skill 的职责是先给出“画什么才对”,再交给 cad-automation 生成图形。遇到机械、模具、夹具、钣金、装配图时,必须先完成以下判断:
ATTRIBUTION.md。当用户要求绘制冲压模具时,优先按“模架总图 + 工作零件 + 导向定位 + 技术要求”组织图纸。
| 模块 | 内容 | 检查点 |
|---|---|---|
| 模架 | 上模座、下模座、凹模板、卸料板 | 外形尺寸、中心基准、板厚说明 |
| 工作部分 | 凸模、凹模刃口、冲裁轮廓、冲孔 | 间隙方向、闭合轮廓、孔中心距 |
| 导向 | 导柱、导套、中心线 | 四角对称、避开工作区 |
| 定位紧固 | 螺钉、销钉、沉孔 | 不干涉刃口和导向件 |
| 标注 | 外形、孔径、导柱距、工作轮廓 | 不封闭尺寸链、不重复标注 |
| 技术要求 | 材料、热处理、间隙、研磨、倒角 | 未知参数标“待复核”,不能编造精度 |
如果用户只说“画一个冲压模具”,默认画“小型冲孔/落料模平面示意图”,而不是直接画可加工全套图。必须在输出中说明:该图用于方案表达和自动化能力测试,真实生产前需要按材料、吨位、闭合高度、压力中心、强度和安全规范复核。
| 幅面 | 尺寸(mm) | 适用场景 |
|---|---|---|
| A0 | 841×1189 | 总图、大型工程 |
| A1 | 594×841 | 总平面、系统图 |
| A2 | 420×594 | 平面图、装配图 |
| A3 | 297×420 | 零件图(最常用) |
| A4 | 210×297 | 简单零件、明细表 |
装订边: A0-A3留25mm,A4留20mm;其余边距均为5-10mm。
| 类型 | 推荐比例 |
|---|---|
| 原值 | 1:1(优先选用) |
| 放大 | 2:1, 5:1, 10:1 |
| 缩小 | 1:2, 1:5, 1:10, 1:50, 1:100 |
原则: 优先1:1,必须在标题栏注明比例。
| 线型 | 线宽 | 用途 |
|---|---|---|
| 粗实线 | 0.5-0.7mm | 可见轮廓 |
| 细实线 | 0.18-0.25mm | 尺寸线、剖面线 |
| 虚线 | 0.25-0.35mm | 不可见轮廓 |
| 点划线 | 0.25-0.35mm | 轴线、对称线 |
| 双点划线 | 0.25-0.35mm | 假想轮廓 |
线宽比: 粗:中:细 = 4:2:1
来自"AutoCAD知识库"和工程实战的最佳实践:
命名格式: 专业码_主组_次组_状态
示例: A-WALL-PRIM-D (建筑-墙体-承重-拆除)
M-DUCT-SUPN-N (暖通-风管-送风-新建)
S-STRU-COLN-E (结构-柱-混凝土-现有)
| 图层 | 色号 | 线型 | 说明 |
|---|---|---|---|
| 粗实线(WALL) | 7(白/黑) | Continuous | 可见轮廓 |
| 细实线(DIM) | 1(红) | Continuous | 尺寸标注 |
| 中心线(CEN) | 2(黄) | CENTER/CENTER2 | 轴线/中心线 |
| 虚线(HID) | 3(绿) | HIDDEN/HIDDEN2 | 隐藏线 |
| 剖面线(HAT) | 4(青) | Continuous | 填充图案 |
| 文字(TXT) | 5(蓝) | Continuous | 文字注释 |
| 辅助线(AUX) | 8(灰) | Continuous | 构造线 |
| 图框(TB) | 7(白) | Continuous | 图框/标题栏 |
# 一键创建国标图层模板
def create_gb_layers(acad):
layers_cfg = {
"WALL": (7, "Continuous"),
"DIM": (1, "Continuous"),
"CEN": (2, "CENTER"),
"HID": (3, "HIDDEN"),
"HAT": (4, "Continuous"),
"TXT": (5, "Continuous"),
"AUX": (8, "Continuous"),
"TB": (7, "Continuous"),
}
for name, (color, ltype) in layers_cfg.items():
if name not in [l.Name for l in acad.doc.Layers]:
layer = acad.doc.Layers.Add(name)
layer.Color = color
linetypes = [lt.Name for lt in acad.doc.Linetypes]
if ltype in linetypes:
layer.Linetype = ltype
_LAYERSTATE保存/恢复图层状态快照总体尺寸 → 定位尺寸 → 定型尺寸 → 公差 → 形位公差 → 粗糙度 → 技术要求
标注三不原则:
| 幅面 | 尺寸字高 | 标题字高 | 技术要求字高 |
|---|---|---|---|
| A0/A1 | 5mm | 7mm | 5mm |
| A2/A3 | 3.5mm | 5mm | 3.5mm |
| A4 | 2.5mm | 3.5mm | 2.5mm |
线性公差: 50±0.1 → 50%%p0.1
极限偏差: 50+0.05/-0.02 → 50%+0.05%%-0.02
基孔制: φ50H7 → %%c50H7
基轴制: φ50f6 → %%c50f6
| 符号 | 名称 | 符号 | 名称 |
|---|---|---|---|
| — | 直线度 | ◎ | 同轴度 |
| □ | 平面度 | ≡ | 对称度 |
| ○ | 圆度 | ⊕ | 位置度 |
| ⌒ | 圆柱度 | ↗ | 圆跳动 |
| ⊥ | 垂直度 | ↗↗ | 全跳动 |
| ∥ | 平行度 | ∠ | 倾斜度 |
Ra 3.2 → 一般加工面(最常用)
Ra 6.3 → 粗加工面
Ra 1.6 → 精加工面
Ra 0.8 → 研磨面
项目前缀_类别_名称_规格
示例: GB_BOLT_M16x50 (国标螺栓)
PROJ_VALVE_GATE_DN100 (项目阀门)
SYM_DOOR_SINGLE_900 (符号单开门)
;; 创建带属性的标题栏块
(defun c:make_titleblock ()
(setq blk (vla-add (vla-get-Blocks *doc*) (vlax-3d-point '(0 0)) "TB_A3"))
;; 添加矩形边框
(vla-AddLightWeightPolyline blk ...)
;; 添加属性
(vla-AddAttribute blk 5.0 acAttributeModeVerify
"请输入图纸名称:" (vlax-3d-point '(100 270)) "DWG_NAME" "图纸名称")
(vla-AddAttribute blk 3.5 acAttributeModeVerify
"请输入比例:" (vlax-3d-point '(350 270)) "SCALE" "1:1")
)
一个完整的DWT模板至少包含:
# Python方式加载模板
acad.app.Documents.Add("D:/Templates/GB_A3.dwt")
# 或
acad.doc.SendCommand('_NEW "D:/Templates/GB_A3.dwt"\n')
来自CAD学习知识库的实战思路——将重复的模板创建过程脚本化:
(defun c:init_project (/ layers dims texts)
;; 创建图层
(foreach lyr '("WALL" "DIM" "CEN" "HID" "TXT" "TB")
(entmake (list '(0 . "LAYER") '(100 . "AcDbLayerTableRecord")
(cons 2 lyr) '(70 . 0) '(62 . 7) '(6 . "Continuous")))
)
;; 设置标注样式
(command "_DIMSTYLE" "S" "GB_DIM" "_Y")
;; 加载图框
(command "_INSERT" "TB_A3" "0,0" "1" "1" "0")
(princ "\n项目初始化完成!")
)
| 参数 | 推荐值 | 说明 |
|---|---|---|
| 绘图仪 | DWG To PDF.pc3 | 最通用 |
| 图纸尺寸 | ISO A3 (420×297) | 按实际选择 |
| 打印比例 | 布满图纸/1:1 | 生产图纸用1:1 |
| 打印范围 | 窗口/范围 | 精确控制 |
| 打印样式表 | monochrome.ctb | 黑白打印 |
| 图形方向 | 横向/纵向 | 按图纸 |
def batch_print(folder, output_folder):
"""批量打印DWG到PDF"""
import os
from pyautocad import Autocad
acad = Autocad(create_if_not_exists=True)
for f in os.listdir(folder):
if f.endswith('.dwg'):
pdf = os.path.join(output_folder, f.replace('.dwg', '.pdf'))
doc = acad.app.Documents.Open(os.path.join(folder, f))
# 设置布局
acad.doc.ActiveLayout.ConfigName = "DWG To PDF.pc3"
# 打印到文件
acad.doc.Plot.PlotToFile(pdf)
doc.Close(False) # 不保存
| 症状 | 原因 | 解决 |
|---|---|---|
| 打开慢 | 过多DGN线型/字体/注册程序 | PURGE清理+清理DGN |
| 操作卡 | 大量填充图案 | 关闭填充图层或简化图案 |
| 缩放卡 | 过多节点(样条/多段线) | 简化曲线精度 |
| 保存慢 | 过多未使用的图层/样式 | 定期PURGE |
| 崩溃 | 文件过大(>50MB) | 拆分为外部参照 |
_PURGE All * N → 清理所有未引用对象
_AUDIT Y → 审计修复文件错误
_OVERKILL → 删除重复/重叠对象
_-SCALELISTEDIT R Y → 重置标注比例列表
_WBLOCK * → 导出为纯净DWG
CAD学习知识库中的实战工具——用正则批量处理文本标注:
;; 批量清理文字中的多余空格
(defun c:clean_text (/ ss i en str new)
(setq ss (ssget '((0 . "TEXT,MTEXT"))))
(setq i 0)
(repeat (sslength ss)
(setq en (ssname ss i))
(setq str (cdr (assoc 1 (entget en))))
;; 替换多个空格为单个
(while (vl-string-search " " str)
(setq str (vl-string-subst " " " " str)))
;; 去除首尾空格
(setq str (vl-string-trim " " str))
;; 更新文字
(vla-put-TextString (vlax-ename->vla-object en) str)
(setq i (1+ i))
)
(princ "\n文字清理完成!")
)
来自AI+CAD知识库的核心分析:
| 层级 | 功能 | 典型应用 |
|---|---|---|
| L1 特征识别 | AI看懂图纸 | Smart Blocks, 智能标注, 图元分类 |
| L2 辅助生成 | AI辅助绘图 | Text-to-CAD, 参数推荐, 自动布局 |
| L3 自主设计 | AI独立设计 | MecAgent, Omega, 装配体生成 |
[工程师意图] → [LLM解析] → [设计方案] → [代码生成] → [CAD执行] → [验证反馈]
↑ |
└──────────────── 迭代优化 ←───────────────────────────────────┘
关键原则: AI生成代码→人工审查→CAD执行→结果验证→修正提示→重新生成
| 工具 | 能力 | 成熟度 |
|---|---|---|
| CADAM | 自然语言→参数化3D模型 | ⭐⭐⭐ |
| Pointer-CAD | LLM→B-Rep实体 | ⭐⭐⭐⭐ |
| text-to-cad | 自然语言→可编辑CAD | ⭐⭐⭐ |
| Leo AI | 文本→零件+装配体 | ⭐⭐⭐ |
| MecAgent | 技术规格→CAD模型 | ⭐⭐⭐ |
| VideoCAD | 视频学习→CAD操作 | ⭐⭐ |
| WHUCAD | 开源CAD智能核心 | ⭐⭐⭐ |
[角色] 你是一个AutoCAD自动化专家
[任务] 根据以下工程参数生成DWG图纸
[参数] 矩形: 500×300mm, 壁厚5mm, 圆角R10, 四角M6螺孔
[格式] 生成Python pyautocad代码
[约束] 图层: 轮廓→WALL层(白色), 中心线→CEN层(黄色), 标注→DIM层(红色)
[标注] 国标格式, 字高3.5mm, 标注样式GB_DIM
配合使用: cad-automation skill — 本skill提供设计方法论,cad-automation提供代码实现。
本章从 sw-designer v2.5.0 的 L1-L4 验证层级体系移植,针对 CAD 场景适配。 sw-designer 第十五章定义了 "返回值→特征数→实体物理测量→视觉QA" 的四级信任层。
从最弱到最强:
| 层级 | 验证方式 | CAD 等效 | 可信度 | 假阳性风险 |
|---|---|---|---|---|
| L1 | API返回值 != null | pyautocad 方法返回值 | ⭐ | 极高——AddCircle返回对象但可能画在错误图层 |
| L2 | ModelSpace.Count 增长 | 实体数量变化 | ⭐⭐ | 高——空文字/辅助线也算实体 |
| L3 | 选择集遍历 + PURGE审计 | 对象类型/图层/颜色验证 | ⭐⭐⭐ | 中——能抓到类型错误,抓不到坐标错误 |
| L4 | 多视口 VLM 视觉审查 | 截图→多模态交叉审查 | ⭐⭐⭐⭐⭐ | 极低——能发现"标高写错了"这种纯数据抓不到的错 |
问题: "Python代码没报错 + AutoCAD执行了" ≠ "图纸画对了"
原因:
- COM 调用返回成功只表示 AutoCAD 接收了命令
- 对象可能画在错误图层/错误坐标系/错误位置
- 标注可能在图纸空间而非模型空间
- 多段线可能开口而非闭合
解决: 设计验证必须到达 L3(对象审计),L4(视觉交叉审查)是工业级的进阶要求。
| SW 设计铁律 | CAD 对应 | 说明 |
|---|---|---|
| 启动环境净化 | 清理孤儿选择集 + PURGE | 每次运行前假设环境是"脏"的 |
| 实体数 > 特征数 | 有效对象数 > ModelSpace 总数 | 排除辅助线/空文字等"假实体" |
| 基准面 > 实体面 | WCS > UCS | 永远在世界坐标系中描述几何 |
| 双向贯穿 > 特定深度 | 全图审计 > 局部检查 | AUDIT Y + PURGE A 全图清理 |
| 三级降级 | Python → SendCommand → LISP | 设计时考虑实现路径的可用性 |
| # | 设计铁律 | 违反后果 |
|---|---|---|
| 1 | 启动即清理:关闭孤儿文档 + 清除所有选择集 | SelectionSet 同名冲突导致 COM 异常 |
| 2 | WCS 锁定:每次 SendCommand 前 _UCS _W | UCS 旋转导致所有坐标错位 |
| 3 | 捕捉关闭:自动绘图前 _NON 关闭对象捕捉 | 端点吸附导致点选位置偏移 |
| 4 | 用完即删:选择集操作后必须 Delete() | 同名选择集累积导致程序中断 |
| 5 | 审计验证:每次保存前 AUDIT + PURGE | 垃圾实体导致文件膨胀/打开缓慢 |
| 6 | 英文命令:SendCommand 用 _LINE 而非 直线 | 中文版/英文版命令名不一致 |
| 7 | 0层禁忌:0层仅用于块定义,不绘图 | 块插入后颜色/线型失控 |
sw-designer 第十五章定义了 "内环编译→外环几何视觉→迭代" 的双重嵌套纠错环。 CAD 场景下无编译过程,但执行→审查→修改的迭代循环同样适用。
┌──────────────────────────────────────────┐
│ CAD 设计-验证 迭代环 │
├──────────────────────────────────────────┤
│ │
│ [生成代码] → [COM执行] → [AUDIT审计] │
│ ↑ │ │
│ │ ┌─────────┴──────┐ │
│ │ ▼ ▼ │
│ │ L3对象审计通过 L3对象审计失败 │
│ │ │ │ │
│ │ L4视觉QA 错误数据 │
│ │ │ │ │
│ │ ┌───────┴───────┐ │ │
│ │ ▼ ▼ │ │
│ │ [视觉PASS] [视觉FAIL] │ │
│ │ │ │ │ │
│ │ ✅完成 修改意见 │ │
│ │ │ │ │
│ └──────────────────────┘ │ │
│ 合并反馈 → 修改代码 │ │
│ 迭代直到全部 PASS │ │
└──────────────────────────────────────────┘
| 决策点 | 规则 | 设计理由 |
|---|---|---|
| 最大迭代 | 简单图≤3轮 / 中等图≤5轮 / 复杂图≤8轮 | 超出范围说明设计意图有根本性错误 |
| 同类型错误 | 3次 → 熔断 | 不是参数微调能解决的 |
| L3优先于L4 | 先修对象错误再修视觉错误 | 对象数量/类型是"硬"标准 |
| 坐标系错误 | 1次即停 | 坐标系问题必须人工介入 |
基于 sw-designer 第十四章的检查清单模式:
CAD 自动化出图前检查清单:
☐ 启动时清理了所有孤儿选择集
☐ UCS 已锁定为世界坐标系 (_UCS _W)
☐ 对象捕捉已临时关闭 (_NON)
☐ 所有 SendCommand 使用英文命令+下划线前缀
☐ 块定义都在 0 层创建
☐ 选择集操作后已 Delete()
☐ 保存前已执行 AUDIT + PURGE
☐ 图纸空间输出:模型空间为1:1,图纸空间为输出比例
| 版本 | 日期 | 核心变更 | 来源 |
|---|---|---|---|
| v1.1.0 | 2026-06-01 | 新增第十一章(设计验证层级 L1-L4) + 第十二章(设计验证迭代环 + 七铁律速查) | 架构优化 |
| v1.0.0 | 2026-05-24 | 初始版本,含10大章节:制图规范/图层/标注/块/模板/打印/性能/AI+CAD/行业模板/检查清单 | 知识体系构建 |