Rendering these values. This takes a few seconds.
Download STL
Read this model as text

A parametric car-style rim: a barrel the tyre grips, a flange at each edge to keep it there, and a closed face disc with a centre bore, a ring of lug holes and round vents. No spokes, this is the pressed-steel look.

The image shows the solid OpenSCAD renders at rim_diameter 34 · width 22 · face_thickness 4 · bore_diameter 8 · lug_count 5 · lug_circle 18 · lug_hole 4.6 · vent_count 5 · vent_diameter 5 · wall 2.4 · flange 1.2 · smoothness 96 · color_rim Silver.

MIT

Parametric car rim

mick/parametric-rim@1.0.1

Remix this
Report

For a legal or policy problem: a license violation, personal data, somebody else’s work republished as their own. A model that prints badly is a comment, not a report.

Sign in to report

0reused0 remixes · 0 imports0downloads1.0.1latest

Parameters

from source
10160, steps of 1
480, steps of 1
210, steps of 0.5
240, steps of 1
010, steps of 1
6120, steps of 1
212, steps of 0.1
016, steps of 1

Showing the render for these values.

Description

What is this

A parametric car-style rim: a barrel the tyre grips, a flange at each edge to keep it there, and a closed face disc with a centre bore, a ring of lug holes and round vents. No spokes, this is the pressed-steel look.

What you use it for

The hub inside mick/parametric-tyre. Set rim_diameter and width to the same values as the tyre and it drops in. The bore and the lug circle adapt it to whatever axle or hub you are mounting it on.

Design notes

The face sits at one end of the barrel rather than the middle, the way a car rim is dished, so the barrel behind it stays open for an axle or a bearing. The lug circle and the vent circle are clamped inside the barrel wall, so shrinking the rim pulls the holes inward instead of breaking through the side.

Vents sit half a pitch rotated from the lug holes, so at equal counts they interleave instead of merging.

The colour is display only. It rides along in the preview and in the 3D view so a rim inside a tyre reads as a rim, and it changes nothing about the shape or the STL.

Parameters

rim_diameter and width size the barrel and should match the tyre. face_thickness, bore_diameter, lug_count, lug_circle and lug_hole shape the mounting face. vent_count and vent_diameter open up the face, and zero closes it. wall, flange and smoothness tune the shape. color_rim picks the colour the rim is shown in.

Use with your agent
{
  "mcpServers": {
    "remixcad": {
      "type": "http",
      "url": "https://remix-cad.vercel.app/api/mcp"
    }
  }
}
get_model("mick/parametric-rim@1.0.1")

Returns the manifest, the source, the import closure and the license obligations. Full MCP setup.

Parameter table

Parsed from the Customizer annotations in main.scad
Parameters of Parametric car rim, with the ranges the source declares
NameDefaultRangeUnitDescription
rim_diameter3410 to 160 step 1
width224 to 80 step 1
face_thickness42 to 10 step 0.5
bore_diameter82 to 40 step 1
lug_count50 to 10 step 1
lug_circle186 to 120 step 1
lug_hole4.62 to 12 step 0.1
vent_count50 to 16 step 1
vent_diameter50 to 30 step 0.5
wall2.41 to 6 step 0.1
flange1.20 to 4 step 0.1
smoothness9624 to 192 step 8
color_rim"Silver"Silver, Gainsboro, White, DimGray, Black, SlateGray, FireBrick, SteelBlue, ForestGreen, Goldenrod

Lineage

1 model depends on this one

Only what this model came from and what came from it.

Remix, the code changed Import, used unchanged and pinned The version you are on Withdrawn, still recorded

License

Whoever downloads this takes these obligations along
  • mick/parametric-rim@1.0.1 is MIT

Source

main.scad is the entrypoint
main.scad
// A car-style rim: a barrel with a flange at each edge and a closed face disc at one end,
// with a centre bore, lug holes on a bolt circle and round vents. No spokes.

/* [Size] */
// Diameter of the rim barrel, the seat the tyre grips. Match the tyre's rim_diameter.
rim_diameter = 34; // [10:1:160]
// Width across the rim, bead to bead. Match the tyre's width.
width = 22; // [4:1:80]

/* [Face] */
// Thickness of the closed face disc.
face_thickness = 4; // [2:0.5:10]
// Centre bore for the axle.
bore_diameter = 8; // [2:1:40]
// Lug holes around the bore. Zero leaves a plain face.
lug_count = 5; // [0:1:10]
// Bolt circle diameter the lug holes sit on.
lug_circle = 18; // [6:1:120]
// Diameter of each lug hole.
lug_hole = 4.6; // [2:0.1:12]
// Round vents in the face. Zero closes the face.
vent_count = 5; // [0:1:16]
// Diameter of each vent.
vent_diameter = 5; // [0:0.5:30]

/* [Shape] */
// Wall thickness of the barrel.
wall = 2.4; // [1:0.1:6]
// How far the flanges stand proud of the barrel.
flange = 1.2; // [0:0.1:4]
// Facets around the rim. More is smoother and slower.
smoothness = 96; // [24:8:192]

/* [Colour] */
// Colour the rim is shown in. Display only, the STL carries no colour.
color_rim = "Silver"; // [Silver, Gainsboro, White, DimGray, Black, SlateGray, FireBrick, SteelBlue, ForestGreen, Goldenrod]

/* [Hidden] */
rim_radius = rim_diameter / 2;
half_width = width / 2;
flange_height = 1.4;
// Both hole circles are clamped inside the barrel wall, so a small rim pulls the holes
// inward instead of breaking through the side.
lug_radius = min(lug_circle / 2, rim_radius - wall - lug_hole / 2 - 1);
vent_radius_pos = min(rim_radius - wall - vent_diameter / 2 - 0.5,
                      lug_radius + lug_hole / 2 + vent_diameter / 2 + 0.8);

module barrel() {
  difference() {
    cylinder(h = width, r = rim_radius, center = true, $fn = smoothness);
    cylinder(h = width + 1, r = rim_radius - wall, center = true, $fn = smoothness);
  }
}

module flanges() {
  for (z = [-half_width, half_width - flange_height])
    translate([0, 0, z])
      difference() {
        cylinder(h = flange_height, r = rim_radius + flange, $fn = smoothness);
        translate([0, 0, -0.5])
          cylinder(h = flange_height + 1, r = rim_radius - wall, $fn = smoothness);
      }
}

// The face sits at one end, the way a car rim is dished, leaving the barrel open behind it.
module face() {
  translate([0, 0, half_width - face_thickness])
    difference() {
      cylinder(h = face_thickness, r = rim_radius - wall / 2, $fn = smoothness);
      translate([0, 0, -0.5])
        cylinder(h = face_thickness + 1, d = bore_diameter, $fn = smoothness);
      if (lug_count > 0)
        for (i = [0 : lug_count - 1])
          rotate([0, 0, i * 360 / lug_count])
            translate([lug_radius, 0, -0.5])
              cylinder(h = face_thickness + 1, d = lug_hole, $fn = 32);
      // Vents sit half a pitch from the lugs, so equal counts interleave.
      if (vent_count > 0 && vent_diameter > 0)
        for (i = [0 : vent_count - 1])
          rotate([0, 0, (i + 0.5) * 360 / vent_count])
            translate([vent_radius_pos, 0, -0.5])
              cylinder(h = face_thickness + 1, d = vent_diameter, $fn = 32);
    }
}

module rim() {
  union() {
    barrel();
    flanges();
    face();
  }
}

color(color_rim) rim();

Comments

Context, not a score. Comments never move a model up or down the results.

No comments yet

Printed it? A note about your material and the clearance you landed on saves the next person a failed print.

Sign in to comment