Skip to content

[family-assembly] light_duty_swivel_plate_caster: JW Winco EN 22870 Form L - #73

Open
sunzhenchuan007 wants to merge 2 commits into
BenchCAD-org:mainfrom
sunzhenchuan007:codex/issue-58-light-duty-swivel-plate-caster
Open

[family-assembly] light_duty_swivel_plate_caster: JW Winco EN 22870 Form L#73
sunzhenchuan007 wants to merge 2 commits into
BenchCAD-org:mainfrom
sunzhenchuan007:codex/issue-58-light-duty-swivel-plate-caster

Conversation

@sunzhenchuan007

Copy link
Copy Markdown
Collaborator

Family

Reference — issue #58

Official engineering drawing Form L product photo
JW Winco EN 22870 engineering drawing JW Winco EN 22870 Form L product photo

The official metric dimension table and the complete source/evidence discussion
are preserved in #58.

Generated — easy / medium / hard grid

preview

Generated — four benchmark views

preview_views

Extremes — 40 mm and 80 mm catalog rows

preview_extremes

Components and assembly

Each panel highlights one named physical component while preserving the full
assembled context.

preview_parts

How it is parameterized

catalog_size selects one complete official Form L row. refine() copies all
nine associated catalog dimensions together, so dimensions from different
sizes cannot be mixed.

catalog_size wheel Ø wheel width axle Ø overall height plate L × W swivel offset mount pitch X × Y
40 40 18 5 59 42 × 42 24 30 × 33
50 50 18 6 66 55 × 55 21 38.5 × 44
60 60 24 6 83 60 × 60 21 38.5 × 48
80 80 24 6 104 60 × 60 30 38.5 × 48

Difficulty separation:

  • easy: real 50 and 60 mm rows; unpublished details fixed at baseline proportions
  • medium: real 40, 50, and 60 mm rows; small proportion-only variation
  • hard: all four real rows, including 40 and 80 mm extremes; wider but valid proportion-only variation

The family has 13 parameters: one sampled row selector, nine row-coupled
official dimensions, and three bounded proportion scales for unpublished
sheet, race, and slot details.

Multi-body assembly

build() returns a deterministic cq.Assembly with four stable children that
match family.json.components and "solids": 4:

  1. mounting_plate — plate and simplified upper swivel-race envelope
  2. swivel_fork — fork, bridge, and simplified lower race
  3. wheel — connected rubber-tread / polypropylene-core wheel envelope
  4. axle_fastener — simplified connected axle, head, and nut envelope

The real caster swivels and the wheel rotates, but this benchmark intentionally
represents one static assembled reference pose.

Verification

bench2 validate light_duty_swivel_plate_casterPASS

  • 13 complete parameters
  • easy / medium / hard: 4/4 seeds sample, check, build, and execute clean
  • all four official catalog rows covered
  • difficulties produce distinct programs
  • 10/12 unique sampled shapes
  • every sampled instance contains exactly four non-degenerate solids
  • Ruff passes for part.py and spec.py

Component-level audit for all four catalog rows:

Catalog row Maximum pairwise intersection Minimum component clearance
40 0 mm³ 0.20 mm
50 0 mm³ 0.20 mm
60 0 mm³ 0.20 mm
80 0 mm³ 0.20 mm

All standard previews and preview_parts.png were regenerated and inspected.
The committed previews use the projected-center camera framing documented in
#68; that renderer-only correction changes neither family geometry nor sampled
programs.

Checklist

  • bench2 validate light_duty_swivel_plate_caster passes locally
  • preview.png, preview_views.png, preview_extremes.png, and preview_parts.png are committed and inspected
  • family.json declares four named components and "solids": 4
  • official dimensions are selected as complete catalog rows, never freely combined
  • every unsupported construction dimension is documented as proportion or deliberately omitted
  • PR touches only designs/light_duty_swivel_plate_caster/
  • commit is DCO-signed
  • AI-assisted; I reviewed the implementation and engineering constraints

Sources and scope

  • JW Winco EN 22870 product page
  • JW Winco EN 22870 metric dimension PDF
  • official engineering drawing and Form L product photograph in [family-assembly] light_duty_swivel_plate_caster #58
  • documented proportion formulas for unpublished plate/fork thicknesses,
    race envelopes, slots, wheel profile, bends, and fastener details

Scope is strictly unbraked Form L order codes
EN 22870-{40|50|60|80}-G-L-L-ST. Rigid, braked, center-hole, and
threaded-stud forms are excluded. Hidden bearings, threads, washers, lettering,
materials, load analysis, and motion simulation are deliberately omitted.

NOTES.md documents catalog-symbol mapping, all proportion formulas,
engineering constraints, component boundaries, clearances, 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 27, 2026

Copy link
Copy Markdown

bench2 validate

light_duty_swivel_plate_caster

  ✓ family.json: keys + base_plane valid
  ✓ pieces: build(13 params) + PARAM_SPEC + check present
  ✓ PARAM_SPEC: 13 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: catalog_size reaches all 4 declared values (standard table fully covered)
  ✓ difficulty separation: difficulties produce distinct programs
  ✓ geometry novelty: 10/12 unique shapes (17% duplicate)
  ✓ solids: every instance non-degenerate, 4 solid(s) each (declares solids=4)
PASS — designs/light_duty_swivel_plate_caster

Previews: the previews artifact on this run.

@sunzhenchuan007
sunzhenchuan007 marked this pull request as ready for review July 28, 2026 13:10
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] light_duty_swivel_plate_caster

3 participants