Skip to content

[family] single_friction_bearing_universal_joint: DIN 808 EG friction-bearing universal joint - #69

Open
sunzhenchuan007 wants to merge 1 commit into
BenchCAD-org:mainfrom
sunzhenchuan007:codex/issue-61-single-friction-bearing-universal-joint
Open

[family] single_friction_bearing_universal_joint: DIN 808 EG friction-bearing universal joint#69
sunzhenchuan007 wants to merge 1 commit into
BenchCAD-org:mainfrom
sunzhenchuan007:codex/issue-61-single-friction-bearing-universal-joint

Conversation

@sunzhenchuan007

@sunzhenchuan007 sunzhenchuan007 commented Jul 27, 2026

Copy link
Copy Markdown
Collaborator

Family

  • Family: single_friction_bearing_universal_joint
  • Standard / type: DIN 808 EG — steel, single-jointed universal joint with friction bearing
  • Closes [family-assembly] single_friction_bearing_universal_joint #61
  • A three-body static assembly with two congruent yokes, equal B/K/V end treatment, and one orthogonal cross.

Reference (Issue #61 — JW Winco DIN 808 EG)

The official engineering drawing, product photograph, metric catalog table, and source links are recorded in #61. This PR implements only the single-jointed EG form; it does not include the double-jointed DG form.

Generated — benchmark views (what the model sees)

preview_views

Generated — easy / medium / hard samples

preview

Extremes — smallest & largest sampled instances

preview_extremes

Distinct parts and assembly

preview_parts

preview_parts.png gives four views for each distinct part type. The congruent input/output yoke is shown once (quantity 2), the cross once (quantity 1), followed by assembly highlight views.

How it's parameterized

catalog_row selects exactly one of the 19 official JW Winco metric rows. refine() copies the full coupled row — d1, d2, s, l1, l3, and t — without interpolation or cross-row mixing.

Tier Catalog selection End treatment Joint angle
easy central rows B small angles
medium broader rows B / K up to 45°
hard all 19 rows, including MOQ-marked extremes B / K / V up to 45°

Both ends always use the same selected treatment:

  • B: equal round bores
  • K: equal round bores with DIN 6885-1 JS9 keyways; official b and t2 values are coupled to the bore
  • V: equal square bores

The output yoke is a rigidly transformed instance of the same yoke geometry as the input. The static pose preserves centered, perpendicular trunnion axes while joint_angle varies from 0° to 45°.

First-version scope excludes DG, l2, l4, a second cross, unequal/inch bores, needle-bearing and stainless variants, shafts, and protective boots.

Components and assembly

build() returns a cq.Assembly with stable component names:

Assembly name Part type Quantity
input_yoke yoke 1
output_yoke congruent transformed yoke 1
cross orthogonal cross 1

family.json declares "solids": 3; components[].quantity sums to 3 and matches the three Assembly entities. Each component is built independently.

No exploded sequence or assembly arrows are claimed because the reviewed public evidence does not dimension the omitted pins, sleeves, caps, or retainers.

Notes for review

NOTES.md records:

  • the DIN/JW Winco symbol-to-parameter mapping;
  • the 19-row coupling and l1 = 2*l3 relationship;
  • the independent builders, stable Assembly names, and static transform convention;
  • the distinction between published dimensions and deliberate proportion geometry;
  • omitted, unsupported construction details and other simplifications.

Fork-eye, cross-arm, root-overlap, and internal-clearance dimensions not published in the reviewed sources are honestly labeled proportion rather than presented as DIN or manufacturer dimensions.

Verification

Check Result
uv run bench2 validate single_friction_bearing_universal_joint PASS
easy / medium / hard 4/4 seeds each sample, check, build, and execute cleanly
parameters 11 complete
geometry novelty 9/12 unique shapes (25% duplicate)
solids 3 non-degenerate solids in every sampled instance
exhaustive envelope audit 19 rows × 3 bore codes × 4 angles = 228 cases
component integrity each component remains one non-degenerate solid
pairwise intersections maximum volume = 0 for all three component pairs
minimum component volume 133.759930 mm³
Assembly identity stable names verified in all 228 cases
Ruff part.py and spec.py pass

Checklist

  • uv run bench2 validate single_friction_bearing_universal_joint passes locally (CI re-runs it).
  • All three standard previews were generated, inspected, and committed: preview.png, preview_views.png, and preview_extremes.png; the additional preview_parts.png was also inspected and committed.
  • Multi-body metadata is consistent: "solids": 3, three stable Assembly entities, and component quantities summing to 3.
  • Every PARAM_SPEC.source and every check() constraint cites the JW Winco tables or honestly says proportion.
  • The PR touches only designs/single_friction_bearing_universal_joint/ and contains only allowed family package files.
  • The commit is DCO-signed.
  • AI-assisted: the human contributor reviewed the implementation, sources, constraints, validation output, and all preview images.

Sources used

Deliberate simplifications

  • Static multi-body envelope only; no kinematic mates, RPM, torque, or performance claims.
  • The published t +1 tolerance is not sampled; nominal table t defines the shaft-insertion envelope.
  • H7/H10/JS9 tolerances are metadata, not tolerance samples.
  • Unsupported sleeves, pins, caps, retainers, lubrication passages, blends, and chamfers are omitted rather than guessed.

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

Copy link
Copy Markdown

bench2 validate

single_friction_bearing_universal_joint

  ✓ family.json: keys + base_plane valid
  ✓ pieces: build(11 params) + PARAM_SPEC + check present
  ✓ PARAM_SPEC: 11 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
  ✓ difficulty separation: difficulties produce distinct programs
  ✓ geometry novelty: 9/12 unique shapes (25% duplicate)
  ✓ solids: every instance non-degenerate, 3 solid(s) each (declares solids=3)
PASS — designs/single_friction_bearing_universal_joint

Previews: the previews artifact on this run.

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

2 participants