-
Notifications
You must be signed in to change notification settings - Fork 503
/
extrudeFromSlices.js
47 lines (41 loc) · 1.34 KB
/
extrudeFromSlices.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/* title : extrudeFromSlices
// author : Jeff Gay, Moissette Mark
// license : MIT License
// description: testing extrudeRotate() function
// tags: extrusion, extrudeFromSlices, slices
*/
const { circle } = require('@jscad/modeling').primitives
const { geom2 } = require('@jscad/modeling').geometry
const { translate } = require('@jscad/modeling').transforms
const { extrudeFromSlices, slice } = require('@jscad/modeling').extrusions
const { mat4 } = require('@jscad/modeling').math
const main = () => {
const base = circle({ radius: 4, segments: 4 })
let geometry3 = extrudeFromSlices(
{
numberOfSlices: 5,
callback: (progress, count, base) => {
let newshape = circle({ radius: 5 + count, segments: 4 + count })
let newslice = slice.fromSides(geom2.toSides(newshape))
newslice = slice.transform(mat4.fromTranslation([0, 0, count * 10]), newslice)
return newslice
}
}, base
)
let withHoles = geom2.create(
[
[[-10.0, 10.0], [-10.0, -10.0]],
[[-10.0, -10.0], [10.0, -10.0]],
[[10.0, -10.0], [10.0, 10.0]],
[[10.0, 10.0], [-10.0, 10.0]],
[[-5.0, -5.0], [-5.0, 5.0]],
[[5.0, -5.0], [-5.0, -5.0]],
[[5.0, 5.0], [5.0, -5.0]],
[[-5.0, 5.0], [5.0, 5.0]]
]
)
return [
extrudeFromSlices({ }, withHoles)
]
}
module.exports = { main }