Agent Skills › ghbalf/freecad-ai › enclosure

enclosure

GitHub

根据用户提供的长宽高、壁厚等参数,自动生成带有底座和盖子的参数化电子外壳3D模型。支持螺丝盖、卡扣盖等多种盖子类型及详细构建步骤。

skills/enclosure/SKILL.md ghbalf/freecad-ai

触发场景

生成电子外壳 创建参数化3D模型 设计PCB保护壳

安装

npx skills add ghbalf/freecad-ai --skill enclosure -g -y
更多选项

不安装直接使用

npx skills use ghbalf/freecad-ai@enclosure

指定 Agent (Claude Code)

npx skills add ghbalf/freecad-ai --skill enclosure -a claude-code -g -y

安装 repo 全部 skill

npx skills add ghbalf/freecad-ai --all -g -y

预览 repo 内 skill

npx skills add ghbalf/freecad-ai --list

SKILL.md

Frontmatter
{
    "name": "enclosure",
    "description": "Generate a parametric electronics enclosure with a base and lid."
}

Enclosure Generator

Generate a parametric electronics enclosure with a base and lid.

Parameters to extract from user request

  • L, W, H: outer length, width, height in mm
  • T: wall thickness (default 2mm)
  • Lid type: "screw" (default), "press-fit" (lip only), or "snap-fit" (lip + ridge + snap tabs)
  • Post radius: screw post outer radius (default 3mm) — only for screw lid
  • Screw size: M3 by default (hole r=1.5mm, clearance r=1.75mm) — only for screw lid

Construction steps (use these exact dimensions)

Variables: L=length, W=width, H=height, T=wall_thickness, PR=post_radius (3mm)

1. Base body

  • create_body label="EnclosureBase"

2. Outer shell

  • create_sketch on XY, body_name="EnclosureBase": rectangle x=0, y=0, width=L, height=W
  • pad_sketch length=H, body_name="EnclosureBase"

3. Interior pocket (from the TOP face)

  • create_sketch on XY, offset=H, body_name="EnclosureBase": rectangle x=T, y=T, width=L-2T, height=W-2T
  • pocket_sketch length=H-T, body_name="EnclosureBase"
  • This creates the hollow from z=T to z=H (floor thickness=T at bottom, open at top)

4–5. Screw posts and holes (SCREW LID ONLY — skip for snap-fit)

Post centers must be far enough from walls so they don't protrude:

  • Center X positions: T+PR (left), L-T-PR (right)
  • Center Y positions: T+PR (front), W-T-PR (back)

Step 4: Screw posts (start from top of floor, not bottom)

  • create_sketch on XY, offset=T, body_name="EnclosureBase": 4 circles at those positions, radius=PR
  • pad_sketch length=H-T, body_name="EnclosureBase"

Step 5: Screw holes in posts — MUST complete BEFORE moving to step 6!

  • create_sketch on XY, offset=H, body_name="EnclosureBase": 4 circles at same centers, radius=1.5 (M3)
  • pocket_sketch length=H-T, body_name="EnclosureBase"
  • The holes go H-T deep (through the posts only, NOT through the floor)

6. Lid body

For SCREW lid:

  • create_body label="EnclosureLid"
  • create_sketch on XY, body_name="EnclosureLid": rectangle x=0, y=0, width=L, height=W
  • pad_sketch length=T, body_name="EnclosureLid"

For PRESS-FIT lid (build lip first, then slab on top so lip points downward):

  • create_body label="EnclosureLid"
  • create_sketch on XY, body_name="EnclosureLid": rectangle x=T+0.2, y=T+0.2, width=L-2T-0.4, height=W-2T-0.4
  • pad_sketch length=3 (3mm lip), body_name="EnclosureLid"
  • create_sketch on XY, offset=3, body_name="EnclosureLid": rectangle x=0, y=0, width=L, height=W
  • pad_sketch length=T, body_name="EnclosureLid"
  • The 0.2mm gap on each side provides clearance for a friction fit.

For SNAP-FIT lid (same structure, but 1mm clearance so snap tabs have room):

  • create_body label="EnclosureLid"
  • create_sketch on XY, body_name="EnclosureLid": rectangle x=T+1, y=T+1, width=L-2T-2, height=W-2T-2
  • pad_sketch length=3 (3mm lip), body_name="EnclosureLid"
  • create_sketch on XY, offset=3, body_name="EnclosureLid": rectangle x=0, y=0, width=L, height=W
  • pad_sketch length=T, body_name="EnclosureLid"
  • The 1mm gap on each side provides room for the snap tabs (0.5mm protrusion).

For both: Lip: z=0→3, Slab: z=3→3+T. After positioning, the lip hangs into the base.

7. Lid holes (SCREW LID ONLY — skip for press-fit and snap-fit)

  • create_sketch on XY, body_name="EnclosureLid": 4 circles at same post centers, radius=1.75
  • pocket_sketch through_all=true, body_name="EnclosureLid"

8. Position lid (BEFORE snap tabs so the shape is in the right place)

  • Screw lid: transform_object EnclosureLid, translate_z=H
  • Press-fit lid: transform_object EnclosureLid, translate_z=H-3
  • Snap-fit lid: transform_object EnclosureLid, translate_z=H-3

9. Snap-fit ridge and tabs (SNAP-FIT ONLY — skip for screw and press-fit)

Add a ridge on the base interior and snap tabs on the lid lip. The snap tabs tool copies the lid's shape (including its position), so the lid MUST be positioned first in step 8.

  • create_inner_ridge body_name="EnclosureBase", length=L, width=W, wall_thickness=T, ridge_width=0.8, ridge_height=0.5, z_position=H-2
  • create_snap_tabs body_name="EnclosureLid", length=L, width=W, wall_thickness=T, clearance=1.0, lip_height=3

10. Hide sketches

Use execute_code to hide all sketches at once:

for obj in App.ActiveDocument.Objects:
    if obj.TypeId == "Sketcher::SketchObject":
        obj.Visibility = False

Critical rules

  • ALWAYS pass explicit length to pad_sketch — never rely on the 10mm default
  • ALWAYS pass body_name to pad_sketch and pocket_sketch — this ensures features go into the correct body
  • Screw posts go INSIDE the enclosure at positions (T+PR, T+PR) from each corner — never at the wall edge
  • All sketches on XY plane, attached to the correct body_name
  • The base height is H, pocket depth is H-T, post height is H-T
  • Use offset=H for the pocket sketch so it is placed at the top face (creates correct floor-at-bottom orientation)
  • Complete ALL steps for the base (1–5) before starting the lid (step 6). Each create_sketch MUST be followed by its pad_sketch or pocket_sketch before creating the next sketch.
  • Screw lid (default): do steps 4, 5, 7. Skip step 9. Use screw lid variant in step 6.
  • Press-fit lid: skip steps 4, 5, 7, 9. Use press-fit/snap-fit lid variant in step 6 (lip only, no tabs).
  • Snap-fit lid: skip steps 4, 5, 7. Use press-fit/snap-fit lid variant in step 6, then do step 9 (ridge + tabs).
  • After completing ALL construction steps (including positioning), call the report_skill_params tool (NOT execute_code) with params={"L": value, "W": value, "H": value, "T": value, "PR": value, "lid_type": "screw/press-fit/snap-fit"}.

版本历史

  • 08d637d 当前 2026-10-18 20:51

同 Skill 集合

skills/create-validation/SKILL.md
skills/fastener-hole/SKILL.md
skills/gear/SKILL.md
skills/lattice/SKILL.md
skills/optimize-skill/SKILL.md
skills/sketch-from-image/SKILL.md
skills/skill-creator/SKILL.md
skills/thread-insert/SKILL.md

元信息

文件数
0
版本
08d637d
Hash
1f5e4caf
收录时间
2026-10-18 20:51

首页 - Wiki
Copyright © 2011-2026 iteam. Current version is 2.156.0. UTC+08:00, 2026-11-05 10:15
浙ICP备14020137号-1