steve/miniature-linear-guide
HIWIN MGN miniature linear guideway, sizes 7, 9, 12 and 15: rail (MGNR) or block (MGN-C / MGN-H).
Dashpot / gas strut envelope: Ø10 body and Ø5 piston rod as two bodies, any stroke.
| 1 | """Dashpot / gas strut envelope: a cylinder body and a piston rod as two bodies, as step.parts' published models draw |
| 2 | them, any stroke. |
| 3 | |
| 4 | The body (diameter BODY_D, length 30 + stroke) lies along +X from the origin; the rod (diameter ROD_D, length |
| 5 | 50 + stroke) runs inside it on the same axis and comes out at +X, 10 + stroke / 2 beyond the body. The rod starts |
| 6 | stroke / 2 - 10 from the body's left end (for strokes under 20 mm it shows behind the body, as in the models). End |
| 7 | fittings, the piston and the seals are not modelled. |
| 8 | """ |
| 9 | from steve import Model |
| 10 | |
| 11 | stroke = 50 # mm Stroke |
| 12 | material = "unspecified" # Material |
| 13 | |
| 14 | # mm, measured on step.parts' models dashpot_stroke<s>_envelope and gas_strut_stroke<s>_envelope (s = 10, 15, 25, 50, |
| 15 | # 100; the cylinders of their two solids): body and rod diameters, and lengths that grow with the stroke as below |
| 16 | BODY_D = 10.0 |
| 17 | ROD_D = 5.0 |
| 18 | BODY_BASE = 30.0 # body length = BODY_BASE + stroke |
| 19 | ROD_BASE = 50.0 # rod length = ROD_BASE + stroke |
| 20 | ROD_OUT_BASE = 10.0 # rod end beyond the body = ROD_OUT_BASE + stroke / 2 |
| 21 | MATERIALS = {"unspecified": (None, None), "steel": ("steel-generic", "#9da2a8")} |
| 22 | |
| 23 | body_length = BODY_BASE + stroke |
| 24 | rod_length = ROD_BASE + stroke |
| 25 | rod_end = body_length + ROD_OUT_BASE + stroke / 2 |
| 26 | material_id, colour = MATERIALS[material] |
| 27 | |
| 28 | model = Model() |
| 29 | model.cylinder("body", BODY_D / 2, body_length, direction=(1, 0, 0), name="Body") |
| 30 | model.cylinder("rod", ROD_D / 2, rod_length, at=(rod_end - rod_length, 0, 0), direction=(1, 0, 0), op="new", |
| 31 | name="Rod") |
| 32 | if material_id: |
| 33 | model.material(material_id, color=colour) |
| 34 | result = model.result() |
| 35 |
| 1 | name = "steve/damper-envelope" |
| 2 | version = "1.0.0" |
| 3 | runtime = "steve" |
| 4 | license = "MIT" |
| 5 | summary = "Dashpot / gas strut envelope: Ø10 body and Ø5 piston rod as two bodies, any stroke." |
| 6 | description = """A dashpot or gas strut envelope for assemblies: a Ø10 mm cylinder body and a Ø5 mm piston rod, two \ |
| 7 | bodies on one axis, sized by the stroke (body 30 + stroke, rod 50 + stroke long). Measured from step.parts' published \ |
| 8 | models (MIT), which draw dashpots and gas struts with this same envelope; no maker or standard is behind them. |
| 9 | |
| 10 | Along +X from the origin. Dimensions and attribution: see the README.""" |
| 11 | tags = ["damper", "dashpot", "gas-strut", "gas-spring", "envelope", "motion"] |
| 12 | |
| 13 | [parameters.stroke] |
| 14 | type = "number" |
| 15 | default = 50 |
| 16 | min = 5 |
| 17 | max = 500 |
| 18 | unit = "mm" |
| 19 | label = "Stroke" |
| 20 | |
| 21 | [parameters.material] |
| 22 | type = "choice" |
| 23 | default = "unspecified" |
| 24 | choices = ["unspecified", "steel"] |
| 25 | label = "Material" |
| 26 | |
| 27 | [[presets]] |
| 28 | id = "stroke-10" |
| 29 | title = "Damper / gas strut envelope, stroke 10 mm" |
| 30 | params = { stroke = 10 } |
| 31 | aliases = ["dashpot stroke 10 mm", "gas strut stroke 10 mm", "gas spring envelope 10 mm stroke", "dashpot", "kind=dashpot; stroke=10 mm; simplified body/rod/end fitting envelope", "Damper / gas strut envelope, stroke 10 mm", "kind=gas_strut; stroke=10 mm; simplified body/rod/end fitting envelope"] |
| 32 | standard = "step.parts damper envelope model" |
| 33 | |
| 34 | [[presets]] |
| 35 | id = "stroke-15" |
| 36 | title = "Damper / gas strut envelope, stroke 15 mm" |
| 37 | params = { stroke = 15 } |
| 38 | aliases = ["dashpot stroke 15 mm", "gas strut stroke 15 mm", "gas spring envelope 15 mm stroke", "dashpot", "kind=dashpot; stroke=15 mm; simplified body/rod/end fitting envelope", "Damper / gas strut envelope, stroke 15 mm", "kind=gas_strut; stroke=15 mm; simplified body/rod/end fitting envelope"] |
| 39 | standard = "step.parts damper envelope model" |
| 40 | |
| 41 | [[presets]] |
| 42 | id = "stroke-25" |
| 43 | title = "Damper / gas strut envelope, stroke 25 mm" |
| 44 | params = { stroke = 25 } |
| 45 | aliases = ["dashpot stroke 25 mm", "gas strut stroke 25 mm", "gas spring envelope 25 mm stroke", "dashpot", "kind=dashpot; stroke=25 mm; simplified body/rod/end fitting envelope", "Damper / gas strut envelope, stroke 25 mm", "kind=gas_strut; stroke=25 mm; simplified body/rod/end fitting envelope"] |
| 46 | standard = "step.parts damper envelope model" |
| 47 | |
| 48 | [[presets]] |
| 49 | id = "stroke-50" |
| 50 | title = "Damper / gas strut envelope, stroke 50 mm" |
| 51 | params = { stroke = 50 } |
| 52 | aliases = ["dashpot stroke 50 mm", "gas strut stroke 50 mm", "gas spring envelope 50 mm stroke", "dashpot", "kind=dashpot; stroke=50 mm; simplified body/rod/end fitting envelope", "Damper / gas strut envelope, stroke 50 mm", "kind=gas_strut; stroke=50 mm; simplified body/rod/end fitting envelope"] |
| 53 | standard = "step.parts damper envelope model" |
| 54 | |
| 55 | [[presets]] |
| 56 | id = "stroke-100" |
| 57 | title = "Damper / gas strut envelope, stroke 100 mm" |
| 58 | params = { stroke = 100 } |
| 59 | aliases = ["dashpot stroke 100 mm", "gas strut stroke 100 mm", "gas spring envelope 100 mm stroke", "dashpot", "kind=dashpot; stroke=100 mm; simplified body/rod/end fitting envelope", "Damper / gas strut envelope, stroke 100 mm", "kind=gas_strut; stroke=100 mm; simplified body/rod/end fitting envelope"] |
| 60 | standard = "step.parts damper envelope model" |
| 61 |
A dashpot or gas strut envelope for assemblies: a cylinder body and a piston rod, two bodies on one axis, any stroke.
Along +X from the origin: the body, Ø10, 30 + stroke long; the rod, Ø5, 50 + stroke long, on the same axis inside the body and coming out at +X, 10 + stroke / 2 beyond it (its other end is stroke / 2 − 10 from the body's left end, so for strokes under 20 mm it shows behind the body, as in the models).
| Stroke (models) | Body | Rod | Overall |
|---|---|---|---|
| 10 | 40 | 60 | 60 |
| 15 | 45 | 65 | 65 |
| 25 | 55 | 75 | 77.5 |
| 50 | 80 | 100 | 115 |
| 100 | 130 | 150 | 190 |
| Parameter | Meaning |
|---|---|
stroke |
mm |
material |
unspecified (no material assigned) or steel |
These generic envelopes name no maker and no standard covers them. The geometry was measured from the published reference models below (the cylinders of each model's two solids: diameters, ends), and every preset is checked against its own models: bounding box within 0.05 mm and volume within 2 %.
dashpot_stroke<s>_envelope and gas_strut_stroke<s>_envelope for s = 10, 15, 25, 50, 100
(https://www.step.parts, repository https://github.com/earthtojake/step.parts, commit c6113328, catalog/step/):
step.parts' own models, original project material under the repository's MIT licence (© 2026 earthtojake).
They name no material, so the presets have material = "unspecified".Simplifications (the models'): dashpots and gas struts share this one envelope; no end fittings, piston or seals; body and rod are plain cylinders (two bodies, the rod inside the body).
Preset list: from the step.parts catalogue (MIT), see library/NOTICE.md; a stroke's dashpot and gas strut share
one preset.
| 1 | # Damper envelope (dashpot / gas strut) |
| 2 | |
| 3 | A dashpot or gas strut envelope for assemblies: a cylinder body and a piston rod, two bodies on one axis, any stroke. |
| 4 | |
| 5 | ## Geometry |
| 6 | |
| 7 | Along +X from the origin: the body, Ø10, 30 + stroke long; the rod, Ø5, 50 + stroke long, on the same axis inside the |
| 8 | body and coming out at +X, 10 + stroke / 2 beyond it (its other end is stroke / 2 − 10 from the body's left end, so |
| 9 | for strokes under 20 mm it shows behind the body, as in the models). |
| 10 | |
| 11 | | Stroke (models) | Body | Rod | Overall | |
| 12 | |---|---|---|---| |
| 13 | | 10 | 40 | 60 | 60 | |
| 14 | | 15 | 45 | 65 | 65 | |
| 15 | | 25 | 55 | 75 | 77.5 | |
| 16 | | 50 | 80 | 100 | 115 | |
| 17 | | 100 | 130 | 150 | 190 | |
| 18 | |
| 19 | ## Parameters |
| 20 | |
| 21 | | Parameter | Meaning | |
| 22 | |---|---| |
| 23 | | `stroke` | mm | |
| 24 | | `material` | `unspecified` (no material assigned) or `steel` | |
| 25 | |
| 26 | ## Sources |
| 27 | |
| 28 | These generic envelopes name no maker and no standard covers them. **The geometry was measured from the published |
| 29 | reference models** below (the cylinders of each model's two solids: diameters, ends), and every preset is checked |
| 30 | against its own models: bounding box within 0.05 mm and volume within 2 %. |
| 31 | |
| 32 | - **step.parts**, `dashpot_stroke<s>_envelope` and `gas_strut_stroke<s>_envelope` for s = 10, 15, 25, 50, 100 |
| 33 | (https://www.step.parts, repository https://github.com/earthtojake/step.parts, commit c6113328, `catalog/step/`): |
| 34 | step.parts' own models, original project material under the repository's **MIT** licence (© 2026 earthtojake). |
| 35 | They name no material, so the presets have `material = "unspecified"`. |
| 36 | |
| 37 | Simplifications (the models'): dashpots and gas struts share this one envelope; no end fittings, piston or seals; body |
| 38 | and rod are plain cylinders (two bodies, the rod inside the body). |
| 39 | |
| 40 | Preset list: from the step.parts catalogue (MIT), see `library/NOTICE.md`; a stroke's dashpot and gas strut share |
| 41 | one preset. |
| 42 |
A dashpot or gas strut envelope for assemblies: a Ø10 mm cylinder body and a Ø5 mm piston rod, two bodies on one axis, sized by the stroke (body 30 + stroke, rod 50 + stroke long). Measured from step.parts' published models (MIT), which draw dashpots and gas struts with this same envelope; no maker or standard is behind them. Along +X from the origin. Dimensions and attribution: see the README.
A dashpot or gas strut envelope for assemblies: a cylinder body and a piston rod, two bodies on one axis, any stroke.
Along +X from the origin: the body, Ø10, 30 + stroke long; the rod, Ø5, 50 + stroke long, on the same axis inside the body and coming out at +X, 10 + stroke / 2 beyond it (its other end is stroke / 2 − 10 from the body's left end, so for strokes under 20 mm it shows behind the body, as in the models).
| Stroke (models) | Body | Rod | Overall |
|---|---|---|---|
| 10 | 40 | 60 | 60 |
| 15 | 45 | 65 | 65 |
| 25 | 55 | 75 | 77.5 |
| 50 | 80 | 100 | 115 |
| 100 | 130 | 150 | 190 |
| Parameter | Meaning |
|---|---|
stroke |
mm |
material |
unspecified (no material assigned) or steel |
These generic envelopes name no maker and no standard covers them. The geometry was measured from the published reference models below (the cylinders of each model's two solids: diameters, ends), and every preset is checked against its own models: bounding box within 0.05 mm and volume within 2 %.
dashpot_stroke<s>_envelope and gas_strut_stroke<s>_envelope for s = 10, 15, 25, 50, 100
(https://www.step.parts, repository https://github.com/earthtojake/step.parts, commit c6113328, catalog/step/):
step.parts' own models, original project material under the repository's MIT licence (© 2026 earthtojake).
They name no material, so the presets have material = "unspecified".Simplifications (the models'): dashpots and gas struts share this one envelope; no end fittings, piston or seals; body and rod are plain cylinders (two bodies, the rod inside the body).
Preset list: from the step.parts catalogue (MIT), see library/NOTICE.md; a stroke's dashpot and gas strut share
one preset.
HIWIN MGN miniature linear guideway, sizes 7, 9, 12 and 15: rail (MGNR) or block (MGN-C / MGN-H).
Hexagon head screw, fully threaded, ISO 4017 / DIN 933, M1.6 to M36, any length, with catalogue sizes as presets.
Hexagon socket button head screw, ISO 7380-1, M3 to M16, any length, with catalogue sizes as presets.
Hex nut, ISO 4032, M2 to M12.