视觉画布设计
canvas-design
基于设计原则创作静态视觉作品,用于海报与品牌图形。
solidworks-automation【文档与办公】SolidWorks CAD 自动化技能,可通过 Python COM 接口与 OpenClaw / Codex / Claude 协作控制 Windows 上运行的 SolidWorks,用于零件建模、装配体、工程图、钣金、焊件、仿真、文件导出、自定义属性、设计表、配置管理,以及 OBJ/STL/STEP 等外来模型导入;当用户提到 SolidWorks、SW、OpenClaw、龙虾、3D 建模、CAD、零件、装配、工程图、钣金、焊件、导出 STEP/STL/PDF、BOM、设计表、公开三维模型、网格参考模型、原版外观复刻或高还原产品外观时使用。
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
pywin32 / comtypesmcp / pydantictrimesh / pygltflib / numpy / Pillow~/.openclaw/skills/solidworks-automation/ 或 ~/.agents/skills/solidworks-automation/所有代理在执行 SolidWorks 自动化前,先运行技能自检:
python SKILL_DIR/scripts/sw_preflight.py
规则:
comtypes / win32com / pythoncom 时,向用户弹出友好确认:
检测到当前 Python 环境缺少 comtypes / win32com 库,是否授权 AI 自动为您配置本地环境?[Y/N]Y / yes 后,代理可在本地 shell 中自动执行 python -m pip install "pywin32>=305" "comtypes>=1.2.0" 补齐依赖;用户拒绝时停止并给出手动安装命令。按任务最小化安装依赖,不要在普通零件建模时强制安装网格转换库:
# 核心 SolidWorks COM 自动化依赖
python -m pip install -r SKILL_DIR\requirements.txt
# 仅在需要 GLB/GLTF/OBJ/STL 网格检查、缩放或转换时安装
python -m pip install -r SKILL_DIR\requirements-mesh.txt
执行涉及 GLB/GLTF/FBX/BLEND 转 OBJ/STL 的任务前,先用 importlib.util.find_spec() 检查
trimesh、pygltflib、PIL 是否可用;缺失时先提示用户需要安装哪些库和用途,再安装或给出手动命令。
import sys; sys.path.insert(0, r"SKILL_DIR/scripts")
from sw_connect import mm
from sw_part import sketch, sketch_circle, extrude_boss
from sw_session import SolidWorksSession
session = SolidWorksSession()
model = session.new_part()
with sketch(model, "Front Plane") as sketch_name:
sketch_circle(model, 0, 0, mm(25))
extrude_boss(model, sketch_name, mm(50))
session.save(model, r"C:\temp\cylinder.sldprt")
session.export(model, r"C:\temp\cylinder.step")
将
SKILL_DIR替换为此技能的实际安装路径。
根据用户需求选择对应模块:
| 需求 | 脚本 | 参考文档 |
|---|---|---|
| 入口自检与依赖补齐 | scripts/sw_preflight.py | references/troubleshooting.md |
| 高级能力/类型库探测 | scripts/sw_capability_probe.py | references/complex-mechanical-routing.md |
| 多模型宏生成防护 | scripts/sw_macro_guard.py | references/openclaw.md |
| 友好会话 API | scripts/sw_session.py | - |
| 连接与文档管理 | scripts/sw_connect.py | - |
| 外观与材质 | scripts/sw_appearance.py | references/appearance.md |
| 零件建模(草图+特征) | scripts/sw_part.py | references/part-modeling.md |
| 盲孔/沉孔/沉头孔/半圆端槽与孔位验收 | scripts/sw_hole_features.py、scripts/sw_review.py | references/complex-hole-features.md、references/review.md |
| 自然语言到参数化设计计划 / VibeCAD | subskills/solidworks-vibecad/scripts/plan_from_brief.py | subskills/solidworks-vibecad/SKILL.md |
| 多圆角/倒角 CNC 机加工件 | subskills/solidworks-fillet-chamfer-cnc/scripts/create_cnc_mount_template.py | subskills/solidworks-fillet-chamfer-cnc/SKILL.md、subskills/solidworks-fillet-chamfer-cnc/references/cnc-fillet-chamfer-lessons.md |
| 螺丝孔/螺纹孔、攻丝底孔 | subskills/solidworks-threaded-holes/scripts/create_threaded_hole_template.py | subskills/solidworks-threaded-holes/SKILL.md、subskills/solidworks-threaded-holes/references/threaded-hole-lessons.md |
| AutoCAD DWG/DXF 二维绘图、线稿转 CAD、批量改图 | subskills/autocad-automation/scripts/acad_draw.py、subskills/autocad-automation/scripts/acad_review.py | subskills/autocad-automation/SKILL.md、subskills/autocad-automation/references/troubleshooting.md |
| 装配体操作、齿轮/铰链/可拖动运动配合 | scripts/sw_assembly.py | references/assembly.md |
| Motion Study 运动算例、旋转马达与结果审计 | scripts/sw_motion.py | references/motion-study.md、references/complex-mechanical-routing.md |
| 工程图出图 | scripts/sw_drawing.py | references/drawing.md |
| 文件导出 | scripts/sw_export.py | references/export.md |
| OBJ/STL 高还原网格参考导入 | scripts/sw_import_mesh_reference.py | references/mesh-reference-import.md |
| 结果自审查 | scripts/sw_review.py | references/review.md |
| 本地 MCP Server | mcp-server/server.py | references/mcp-server.md |
| MCP 协议验证 | scripts/validate_mcp.py | references/mcp-server.md |
| 未封装 API 查证 | - | references/api-lookup.md |
| OpenClaw 控制 SolidWorks | - | references/openclaw.md |
| 钣金/焊件/仿真/属性 | - | references/advanced.md |
| 常见错误排查 | - | references/troubleshooting.md |
{baseDir}/scripts 下已有模块,不要重复手写 COM 连接逻辑。exec / shell 能力中执行短小、一次性的 Python 脚本,最小导入集如下:import sys
sys.path.insert(0, r"{baseDir}/scripts")
from sw_connect import connect_solidworks, mm, deg, new_document
None、保存/导出是否成功、输出文件是否落盘。references/openclaw.md。sw_preflight.py:缺依赖则请求用户授权自动安装;缺 SolidWorks 则停止并提示手动安装。SolidWorksSession() 管理连接、打开、新建、保存、导出。sw_connect.py、sw_part.py 等函数。subskills/solidworks-vibecad/SKILL.md,生成 design_plan.json 和执行摘要。subskills/solidworks-fillet-chamfer-cnc/SKILL.md,按“基础体 -> 外轮廓圆角/倒角 -> 孔槽切除 -> 孔口倒角 -> 审查”的稳定顺序执行。subskills/solidworks-threaded-holes/SKILL.md;默认按“攻丝底孔 -> 尝试 Thread/CosmeticThread -> 可见 3D 螺旋线兜底 -> 孔口倒角 -> 属性和审查”的稳定路线执行。references/complex-hole-features.md 并优先调用 scripts/sw_hole_features.py;创建参数证据必须再与 collect_geometry_measurements()、validate_hole_positions() 和剖视图交叉复核。subskills/autocad-automation/SKILL.md。机械/3D 打印开孔交付必须按可制造图纸处理:所有孔、槽、接口、水口、螺丝孔和螺丝柱同时给出规格、数量和定位尺寸;图面拥挤时用孔表/槽表,不得用长引线替代关键尺寸。普通“照图画 CAD”只保留原图矢量化线条,最终审查必须确认没有手工猜测的外围轮廓、五官辅助线、Logo 几何、水波线、替代文字或图内审查说明。references/mesh-reference-import.md:公开网格/蓝图参考优先,不要在低保真手搓底稿上反复精修;需要导入 OBJ/STL 时优先用 scripts/sw_import_mesh_reference.py。sw_macro_guard.py 做模型分流、代码校验、重试和本地模板兜底。session.export() 或 sw_export.py 保存/导出文件。sw_review.py 导出预览图并自审查;如果有 GUI/桌面截图能力,打开 SolidWorks 视图截图复核。sw_capability_probe.py 并读取 references/complex-mechanical-routing.md;reference_only/not_implemented 能力不能假装已自动化完成。以后凡是本技能参与 CAD/机械结构/3D 打印项目,都默认执行这些底线:
当用户要求汽车、消费电子、雕塑等真实对象外观高还原时,先区分“视觉参考模型”和“工程可制造参数模型”:
.glb/.gltf/.fbx/.blend 先转换为 .obj/.stl;OBJ 优先保留材质,STL 作为无材质兜底。requirements-mesh.txt 中的可选依赖可用;缺失时说明用途并提示安装。sw_import_mesh_reference.py;关键写法是 LoadFile4(path, "r", create_empty_dispatch_variant(), errors),不要用 OpenDoc6() 或把 None 传给 LoadFile4()。当模型包含车身、玻璃、灯组、轮胎、轮毂或其他多种颜色时:
references/appearance.md,统一使用 sw_appearance.py,禁止把普通 Python list 直接传给 COM 材质属性。verify_appearance() 或 apply_component_palette() 回读 RGB;只检查 setter 返回值不算通过。model.ClearSelection2(True);sw_review.save_preview() 已内置该清理。verify_appearance() 回读 RGB 并生成预览,再决定是否重建用户模型。当用户要求“让 SolidWorks 支持 MCP”“接入 Codex/Claude Desktop 工具调用”“不要每次生成一大段 Python 脚本”时:
references/mcp-server.md。.mcp.json 启动本地 stdio server;手动诊断时运行 python mcp-server/server.py。solidworks_health_check、solidworks_create_basic_part、solidworks_create_hole_feature、solidworks_inspect_hole_features、solidworks_add_component、solidworks_add_coincident_mate、solidworks_add_distance_mate、solidworks_add_concentric_mate、solidworks_set_component_fixed、solidworks_export_active、solidworks_review_active、solidworks_add_rotary_motor、solidworks_inspect_motion_studies、solidworks_validate_motion_study。scripts/sw_*.py 中已验证封装。examples/08_mini_fan_motion_assembly.py;它验证自动建模、装配、Mate 和 Motion Study,不承诺圆角/倒角外观完美。当用户要求“能动起来”“在 SolidWorks 里拖动”“铰链”“齿轮联动”“真实机械配合”时:
references/assembly.md 的运动型装配工作流;如果用户明确要求 Motion Study / 运动算例 / 马达,再读取 references/motion-study.md。sw_assembly.py 中的 resolve_component()、get_assembly_entity()、find_largest_cylinder_face()、add_mate5_checked()、add_concentric_mate_by_cylinders()、add_gear_mate_by_cylinders()。lock_rotation=False,不要用三基准面把轴、齿轮、上盖完全锁死。collect_mate_feature_summary() 或特征树遍历验证 MateGroup 下存在 MateConcentric、MateGearDim 等真实 Mate 特征。sw_motion.create_motion_study()、add_constant_speed_rotary_motor_by_cylinders()、calculate_and_play() 创建 Motion Study 和马达。sw_motion.validate_motion_studies() 或 MCP solidworks_validate_motion_study,检查类型、时长、马达数量、结果存在性和 results_out_of_date=False;只看到时间轴、动画或 Calculate=True 不算验收通过。当代理需要让大模型生成 VBA 宏时,必须通过 scripts/sw_macro_guard.py:
SldWorks、ModelDoc2、Sub、End Sub,通过后才允许交给 SolidWorks;不通过则重试。30s 超时;解析失败自动重试 1~2 次,重试 Prompt 追加更强格式指令。示例:
from sw_macro_guard import build_prompt, fallback_macro_for_request, validate_vba_macro
prompt = build_prompt("画一个 50mm 圆柱", model_name="claude")
macro = fallback_macro_for_request("画一个 50mm 圆柱")
result = validate_vba_macro(macro)
assert result.ok, result.issues
当任务需要调用 scripts/ 中尚未封装的 SolidWorks API 时:
references/api-lookup.md,再查询 SolidWorks 官方 API 文档,或本地 SolidWorks SDK / 参考资料,确认方法签名、参数含义、枚举值、返回值和版本差异。VARIANT / by-ref 参数、枚举值、选择标记和 SaveAs 类接口。None / False 检查。sw_review.py 生成预览图与审查报告。references/troubleshooting.md 或对应模块参考文档;常用逻辑再沉淀进 scripts/。每次生成、修改、导入或导出 CAD 后都要做自审查,除非用户明确说不需要:
model.ForceRebuild3(False)、model.ViewZoomtofit2() 刷新模型。scripts/sw_review.py 的 run_review() 导出 isometric/front/top/right 预览图并写入 *_review_report.json。evaluation.status、evaluation.issues、checks 和预览图;通过截图或导出的 BMP 检查:主体是否存在、比例/方位是否合理、关键部件是否缺失、是否明显重叠或悬空、文件名和输出路径是否正确。示例:
from sw_review import run_review
model.ForceRebuild3(False)
report, report_path = run_review(
model,
r"C:\temp\review",
basename="car",
expected_outputs=[r"C:\temp\car.sldprt", r"C:\temp\car.step"],
)
print(report_path)
print(report["evaluation"])
mm(50) 转换 50mm 为 0.05m,用 deg(90) 转换角度SldWorks.Application 自动连接,兼容所有版本Select2();基准面可用 SelectByID2("PLANE"),草图不要只依赖 SelectByID2("SKETCH")with sketch(model, "Front Plane") as sketch_name: 自动进入/退出草图;sw_part.py 会缓存草图对象引用,避免 SW2024 中文版按名称选择草图失败sw_assembly.add_component();SW2024 中文版下 AddComponent4 可能返回 None,封装会用 AddComponent5、静默打开零件、重新激活装配体后重试SAFEARRAY(double) 编组,并回读 RGB 验证VARIANT(pythoncom.VT_BYREF | pythoncom.VT_I4, 0) 包装start_sketch() 会自动兼容英文版 "Front/Top/Right Plane" 与中文版 "前视/上视/右视基准面"GetCorresponding() 用于把零件内面/特征映射到装配体上下文;同心 Mate 默认不锁旋转swmotionstudy.tlb 需加载;pywin32 下 CreateMotionStudy / Activate / Calculate 可能表现为属性,优先用 sw_motion.motion_member() 兼容