Platform
Resources
Pricing
Sign in
Get started
Machine Agency
Workspace
Fork
Public
Exprimer
By
Jasper Tran O'Leary
Edited
May 4, 2023
Insert cell
Insert cell
Insert cell
Insert cell
envelopeWidth
=
245
Insert cell
envelopeHeight
=
170
Insert cell
clankBedThickness
=
19.05
Insert cell
Insert cell
path
=
[
"M3,0,0,0"
,
"M3,100,100,0"
]
Insert cell
populateVizSpace
(
tpVizSpace
,
[
path
]
)
Insert cell
stepover
=
0.5
Insert cell
facingDepth
=
-
0.25
Insert cell
travelHeight
=
5
Insert cell
function
range
(
n
)
{
return
[
...
Array
(
n
)
.
keys
(
)
]
;
}
Insert cell
function
toFixed
(
num
,
fixed
)
{
let
re
=
new
RegExp
(
"^-?\\d+(?:.\\d{0,"
+
(
fixed
||
-
1
)
+
"})?"
)
;
let
truncStr
=
num
.
toString
(
)
.
match
(
re
)
[
0
]
;
return
parseFloat
(
truncStr
)
;
}
Insert cell
endMillDiameter
=
3.17
Insert cell
numTraversals
=
Math
.
floor
(
envelopeHeight
/
(
endMillDiameter
*
stepover
)
)
Insert cell
yVals
=
range
(
numTraversals
)
.
map
(
(
ti
)
=>
toFixed
(
ti
*
(
endMillDiameter
*
stepover
)
,
2
)
)
Insert cell
points
=
yVals
.
map
(
(
y
,
idx
)
=>
{
if
(
idx
%
2
===
0
)
{
return
[
[
0
,
y
]
,
[
envelopeWidth
,
y
]
]
;
}
else
{
return
[
[
envelopeWidth
,
y
]
,
[
0
,
y
]
]
;
}
}
)
.
flat
(
)
Insert cell
mainToolpath
=
points
.
map
(
(
pt
)
=>
`G1 X${
pt
[
0
]
} Y${
pt
[
1
]
}`
)
Insert cell
Insert cell
feed
=
3886.2
Insert cell
setMainFeed
=
[
`G0 F${
feed
}`
]
Insert cell
setSpeedAndSpindleOn
=
[
`M3 S5000`
,
`G4 S1`
,
`M3 S10000`
,
`G4 S1`
,
`M3 S15000`
]
Insert cell
spindleOff
=
[
`M5`
]
Insert cell
initialPlunge
=
[
`G1 Z${
facingDepth
} F${
feed
/
4
}`
,
...
setMainFeed
]
Insert cell
moveToTravelHeight
=
[
`G0 Z${
travelHeight
} F${
feed
*
2
}`
,
...
setMainFeed
]
Insert cell
moveToOrigin
=
[
"G0 X0 Y0"
]
Insert cell
preamble
=
[
// "G17",
"G21"
,
// set units to mm
// "G40",
// "G49",
// "G54",
// ";G80",
"G90"
,
// absolute positioning
"G94"
,
// feed rate set to units/min
"T0"
// activate current tool
]
Insert cell
entireToolpath
=
[
preamble
,
setMainFeed
,
moveToTravelHeight
,
moveToOrigin
,
setSpeedAndSpindleOn
,
initialPlunge
,
mainToolpath
,
moveToTravelHeight
,
spindleOff
]
.
flat
(
)
Insert cell
entireToolpathString
=
entireToolpath
.
join
(
"\n"
)
Insert cell
downloadButton
(
entireToolpathString
,
"facing.nc"
)
Insert cell
Insert cell
Insert cell
Purpose-built for displays of data
Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Try it for free
Learn more
Fork
View
Export
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
envelopeWidth
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
envelopeHeight
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
clankBedThickness
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
tpVizSpace
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
path
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
stepover
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
facingDepth
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
travelHeight
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
range
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
toFixed
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
endMillDiameter
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
numTraversals
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
yVals
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
points
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
mainToolpath
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
feed
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
setMainFeed
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
setSpeedAndSpindleOn
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
spindleOff
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
initialPlunge
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
moveToTravelHeight
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
moveToOrigin
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
preamble
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
entireToolpath
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
entireToolpathString
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
downloadButton
Edit
Add comment
Copy import
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML
Edit
Add comment
Select
Duplicate
Copy link
Embed
Delete
JavaScript
Markdown
HTML