Skip to content

[family-assembly] window_cam_lock: AmesburyTruth 17 Series cam lock - #56

Open
sunzhenchuan007 wants to merge 2 commits into
BenchCAD-org:mainfrom
sunzhenchuan007:codex/window-cam-lock-prototype
Open

[family-assembly] window_cam_lock: AmesburyTruth 17 Series cam lock#56
sunzhenchuan007 wants to merge 2 commits into
BenchCAD-org:mainfrom
sunzhenchuan007:codex/window-cam-lock-prototype

Conversation

@sunzhenchuan007

@sunzhenchuan007 sunzhenchuan007 commented Jul 26, 2026

Copy link
Copy Markdown
Collaborator

Family

Reference (issue #55 - AmesburyTruth 17.23 EntryGard / 17.32 Trimline)

17.23 EntryGard 17.32 Trimline with alignment lugs
Product photo AmesburyTruth 17.23 EntryGard product photo AmesburyTruth 17.32 Trimline product photo
Official drawing AmesburyTruth 17.23 EntryGard official drawing AmesburyTruth 17.32 Trimline official drawing

Generated - easy / medium / hard grid

preview

Generated - four benchmark views

preview_views

Extremes - minimum and maximum sampled instances

preview_extremes

Components and assembly

Each panel keeps the full assembly context: the active component is highlighted,
the mating component is ghosted, and the exploded panel shows the spindle
insertion direction.

preview_parts

How it is parameterized - multi-body

A surface-mounted window cam lock with a fixed housing and a rotating
lever/cap/spindle. build_fixed_body() and build_rotating_body() construct
the two physical components independently. build() returns a cq.Assembly
whose stable child names match family.json.components; family.json
declares "solids": 2.

product_row selects one complete official source row: AmesburyTruth
17.23.XX.200 EntryGard or 17.32.XX.200 Trimline. refine() copies all
official dimensions and the alignment-lug state from that row, so dimensions
from the two products cannot be mixed. The handle angle spans 0-90 degrees.

The housing has a shallow asymmetric cavity: one long side is open, while the
opposite long side and both short ends remain closed. The 17.32 row has two
proportioned alignment lugs on one long side; the 17.23 row has none.

Verification

bench2 validate window_cam_lock -> PASS

  • 21 complete parameters
  • easy / medium / hard: 4/4 seeds sample, check, build and execute clean
  • both discrete product rows covered
  • difficulties produce distinct programs
  • 9/12 unique shapes
  • every instance has exactly two non-degenerate solids

Component-level audit across all 12 sampled poses:

  • component names and components[].quantity agree with the Assembly and solids
  • each component is one non-degenerate solid
  • maximum intersection volume: 0.000000000 mm^3
  • minimum component clearance: 0.200000 mm

bench2 preview window_cam_lock rendered all nine tier/seed images plus both
extremes. The three standard previews and preview_parts.png were inspected.

Checklist

  • uv run bench2 validate window_cam_lock passes locally
  • I ran uv run bench2 preview window_cam_lock, inspected every image, and committed preview.png, preview_views.png, preview_extremes.png, and assembly evidence in preview_parts.png
  • Multi-body: family.json declares "solids": 2 and named components
  • Every PARAM_SPEC.source and every check() constraint cites a real rule/table or honestly says "proportion"; nothing is fabricated
  • PR touches only designs/window_cam_lock/; reference drawings and photos remain in issue [family-assembly] window_cam_lock #55
  • Commits are DCO-signed
  • AI-assisted: I reviewed the implementation and stand behind the constraints

Sources used

  • AmesburyTruth 17.23.XX.200 EntryGard official drawing and product page
  • AmesburyTruth 17.32.XX.200 Trimline official drawing and product page
  • Legacy Truth SW07 EntryGard table for the with/without alignment-lug distinction
  • Inch-series 82-degree flat-head convention for the countersink form
  • Explicitly documented proportion formulas for undimensioned housing, cavity, lever, spindle, and lug details

NOTES.md records the 17.23 and 17.32 height recalculations, mounting-hole and
countersink margins, every proportion formula, engineering constraints,
component assembly basis, and deliberate deviations.

Signed-off-by: Zane <sunzhenchuan@mail.ustc.edu.cn>
@github-actions

Copy link
Copy Markdown

Welcome, and thanks for the family PR! Three things that answer most questions:

  • No checks running? A maintainer must click Approve workflows once for your first PR — pending, not ignored.
  • Red gate? The message tells you the fix: click Details, or read the bench2 validate report comment posted after each run. Reproduce locally with uv sync && uv run bench2 validate <family> (debug help).
  • Scope: designs/<family>/ holds only the package files (reference drawings/photos go in the family issue), and the PR checklist must be fully ticked. Not done yet? Mark the PR as a Draft.

中文:红 ✗ 点 Details 或看 validate 报告评论;本地 uv run bench2 validate <family> 复现;参考图放 issue 不放 PR;没做完用 Draft。入门 → GETTING_STARTED.zh

@github-actions

github-actions Bot commented Jul 26, 2026

Copy link
Copy Markdown

bench2 validate

window_cam_lock

  ✓ family.json: keys + base_plane valid
  ✓ pieces: build(21 params) + PARAM_SPEC + check present
  ✓ PARAM_SPEC: 21 params, all entries complete
  ✓ easy: 4/4 seeds sample+check+build+execute clean
  ✓ medium: 4/4 seeds sample+check+build+execute clean
  ✓ hard: 4/4 seeds sample+check+build+execute clean
  ✓ coverage: product_row reaches all 2 declared values (standard table fully covered)
  ✓ difficulty separation: difficulties produce distinct programs
  ✓ geometry novelty: 9/12 unique shapes (25% duplicate)
  ✓ solids: every instance non-degenerate, 2 solid(s) each (declares solids=2)
PASS — designs/window_cam_lock

Previews: the previews artifact on this run.

@sunzhenchuan007
sunzhenchuan007 marked this pull request as ready for review July 26, 2026 15:40

@HaozheZhang6 HaozheZhang6 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a good one. We also need the render of each part, and how to assemble it.

Signed-off-by: Zane <sunzhenchuan@mail.ustc.edu.cn>
@sunzhenchuan007

Copy link
Copy Markdown
Collaborator Author

Addressed the assembly feedback in 3160062: split the physical parts into build_fixed_body() and build_rotating_body(), return a named cq.Assembly, added matching family.json components metadata, and added preview_parts.png with sequential component highlighting, an exploded insertion view, and the final assembly. Revalidated all 12 sampled poses: both components remain non-degenerate, maximum intersection volume is 0, and minimum clearance is 0.20 mm.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[family-assembly] window_cam_lock

3 participants