Skip to content

Commit c686179

Browse files
committed
feat: add valve opener
1 parent 121f06d commit c686179

File tree

2 files changed

+84
-2
lines changed

2 files changed

+84
-2
lines changed

src/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { serialize } from '@jscad/stl-serializer'
2-
import { vanButtonCover } from './models/vanButtonCover.js'
2+
import { vanValveOpener } from './models/vanValveOpener.js'
33
import { renderModel } from './renderModel.js'
44

55
const containerElement = document.getElementById('jscad')
66

7-
const model = vanButtonCover()
7+
const model = vanValveOpener()
88

99
if (containerElement !== null) renderModel({ containerElement, model })
1010

src/models/vanValveOpener.ts

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
import type { Geometry } from '@jscad/modeling/src/geometries/types'
2+
import {
3+
intersect,
4+
subtract,
5+
union,
6+
} from '@jscad/modeling/src/operations/booleans'
7+
import { rotateX, translateZ } from '@jscad/modeling/src/operations/transforms'
8+
import { cuboid, cylinder } from '@jscad/modeling/src/primitives'
9+
import { degToRad } from '@jscad/modeling/src/utils'
10+
11+
export const vanValveOpener = (): Geometry =>
12+
union(
13+
translateZ(
14+
20,
15+
intersect(
16+
union(
17+
subtract(
18+
cylinder({
19+
height: 40,
20+
radius: 34 / 2,
21+
segments: 60,
22+
}),
23+
translateZ(
24+
5,
25+
intersect(
26+
cylinder({
27+
height: 30,
28+
radius: 22 / 2,
29+
segments: 60,
30+
}),
31+
cuboid({
32+
size: [15, 22, 30],
33+
}),
34+
),
35+
),
36+
),
37+
translateZ(
38+
22.5,
39+
intersect(
40+
subtract(
41+
cylinder({
42+
height: 5,
43+
radius: 34 / 2,
44+
segments: 60,
45+
}),
46+
cylinder({
47+
height: 5,
48+
radius: 22 / 2,
49+
segments: 60,
50+
}),
51+
),
52+
cuboid({
53+
size: [10, 34 / 2, 5],
54+
center: [0, 34 / 2, 0],
55+
}),
56+
),
57+
),
58+
),
59+
cuboid({
60+
size: [22 + 4, 34, 60],
61+
}),
62+
),
63+
),
64+
subtract(
65+
cylinder({
66+
height: 30,
67+
radius: 10,
68+
center: [0, 0, -15],
69+
segments: 60,
70+
}),
71+
translateZ(
72+
-8.5,
73+
rotateX(
74+
degToRad(90),
75+
cylinder({
76+
height: 50,
77+
radius: 2,
78+
}),
79+
),
80+
),
81+
),
82+
)

0 commit comments

Comments
 (0)