Bent sheet with clinch hardware and rivets
A flat part with one or two bends and a few pressed-in nuts or studs makes a stiff, cheap mounting plate. Riveting two such parts together makes a box that one bend cannot. Each step below is a check with cited rules. Run them in order, because each one fixes a number the next one needs. The background is in the joining research and the sheet-metal research.
Drawing diagram…
Scroll sideways to see the full diagram →
Diagram source
flowchart TD
M["sheet and thickness<br/>5052 or mild steel"] --> B["bends<br/>check_bends"]
B --> H["holes near bends<br/>feature_to_bend"]
H --> C["clinch parts<br/>choose, then place"]
C --> R["rivet seams<br/>choose, then check"]
R --> P["price and order<br/>cost"]
class B,H,C,R here
class P out
classDef here fill:#fffdf5,stroke:#173d3c,color:#173d3c
classDef out fill:#ffe1cc,stroke:#bd3a12,color:#173d3c
Drawing diagram…
Scroll sideways to see the full diagram →
Diagram source
flowchart TD
M["sheet and thickness<br/>5052 or mild steel"] --> B["bends<br/>check_bends"]
B --> H["holes near bends<br/>feature_to_bend"]
H --> C["clinch parts<br/>choose, then place"]
C --> R["rivet seams<br/>choose, then check"]
R --> P["price and order<br/>cost"]
class B,H,C,R here
class P out
classDef here fill:#fffdf5,stroke:#173d3c,color:#173d3c
classDef out fill:#ffe1cc,stroke:#bd3a12,color:#173d3c
Steps
- Pick the sheet. Use 5052-H32 aluminium or mild (cold-rolled) steel, 1.0 to 3.2 mm. Both take the cheap zinc-plated steel clinch parts. Stainless sheet takes none of the listed parts; it needs PEM's SP, FH4 or SO4 types.
- Check the bends with
cadagent.manufacturing.sheet_metal.check_bends. Give the flanges to the outside, the angles and the reliefs. Name the shop (shop="sendcutsend") when you know it, so its angle, box and channel limits apply, and passhardware=Truewhen the part gets clinch parts: shops limit bends and box flanges on such parts.cadagent.manufacturing.sheet_metal.bendgives the bend allowance the next steps need, andflat_lengthgives the blank. - Check each hole near a bend with
cadagent.manufacturing.sheet_metal.feature_to_bend. Measure from the hole's edge to the bend's tangent line. A warning means it meets only the rules with a stated datum; move the hole if you can. - Choose and place the clinch parts.
cadagent.mechanical.sheet_hardware.choose_clinchlists the parts that fit the thread, sheet and thickness, cheapest first.- Then check each placement with
cadagent.mechanical.clinch.check_placement: hole, edge, bend (with the bend allowance from step 2), the neighbours both ways, and the loads. - Press the parts in after plating or anodising and before paint.
- Choose and check each riveted seam.
cadagent.mechanical.sheet_hardware.choose_rivetlists the rivets whose grip takes the stack.- Then check the seam with
cadagent.mechanical.rivets.check_joint: grip, hole, edge, pitch, metals and strength per pitch. - Match the rivet's metal to the sheet: aluminium in aluminium, steel or stainless in steel.
- Price it with
cadagent.mechanical.sheet_hardware.cost. It gives loose parts, whole packs, and the shop's price to press the parts in, each from a dated public price. Re-read the seller's page before buying.
The six steps as calls, on a 1.6 mm 5052 U channel riveted to a 1.6 mm plate
from cadagent.manufacturing import sheet_metal as sm
from cadagent.mechanical import clinch, rivets, sheet_hardware as sh
# 1-2. 5052, 1.6 mm: two 20 mm legs on a 40 mm base, with hardware, at SendCutSend
sm.check_bends("5052", 1.6, [20, 20], relief_width_mm=1.6, channel_base_mm=40, hardware=True,
shop="sendcutsend")["verdict"] # "pass"
ba = sm.bend("5052", 1.6)["allowance_mm"] # 2.452 mm
sm.flat_length([20, 40, 20], "5052", 1.6)["flat_mm"] # 74.948 mm, the blank
# 3. the nut's hole, centred 10.5 mm from the bend centre line: its edge is 10.5 - BA/2 - hole/2 from the tangent
hole = clinch.PARTS["S-632-1"].hole_mm # 4.7625 mm
sm.feature_to_bend("5052", 1.6, 10.5 - ba / 2 - hole / 2)["verdict"] # "pass" (6.89 mm; at 8.0, "warn")
# 4. the cheapest #6-32 nut that fits, then its placement
sh.choose_clinch("632", "5052-h32", 1.6)[0]["part"]["key"] # "S-632-1", $0.0847 loose
clinch.check_placement("S-632-1", "5052-h32", 1.6, edge_mm=6.5, to_bend_mm=10.5,
bend_allowance_mm=ba)["verdict"] # "pass"
# 5. a 1/8 in rivet for 1.6 + 1.6 mm, each sheet +/- 0.1 mm: only a multi-grip covers 3.0-3.4 mm
rivet = sh.choose_rivet(3.2, 3.0, 3.4)[0]["part"]["key"] # "pop-AD41-43-mg" (no price yet)
rivets.check_joint(rivet, [("5052-h32", 1.6), ("5052-h32", 1.6)], edge_mm=6.4, pitch_mm=25,
thickness_tol_mm=0.1)["verdict"] # "pass"
# 6. the price: the nuts loose and pressed in; the rivet is listed as unpriced
sh.cost({"S-632-1": 8, rivet: 24})
Rules
- Checks first, price second. The choosers only rank parts that the checks already accept. Never pick a part by price and then look for a sheet it fits.
- Report every verdict with its rule and source, as the checks return them. A warning is not a pass: say which rule it misses.
- A shop's own numbers count only when the shop is named. Without one, the generic rules hold, and a value that clears only the shop's tooling row warns.
- State the limits. The strengths are the makers' test averages, not allowables, and the prices are dated. None of this proves a part holds or fits: test a sample part.
- Do not contact a shop or buy anything for the user. Questions for a shop go to the user.