Merge branch 'rel-4.3' into improved-register
This commit is contained in:
commit
333a965566
336 changed files with 19582 additions and 25184 deletions
|
|
@ -23,7 +23,6 @@
|
|||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
#loadExample #examples {
|
||||
display:flex;
|
||||
flex-direction: row;
|
||||
|
|
@ -87,8 +86,9 @@
|
|||
}
|
||||
</style>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.12/ace.js"></script>
|
||||
<script src="/code/engine.js"></script>
|
||||
<script>
|
||||
<!-- <script src="/lib/kiri-run/engine.js" type="module"></script> -->
|
||||
<script type="module">
|
||||
import { Engine } from '/lib/kiri/run/engine.js';
|
||||
let edit, saveit = "";
|
||||
function $(id) { return document.getElementById(id) }
|
||||
function onload() {
|
||||
|
|
@ -126,24 +126,24 @@
|
|||
eval(`(function(){${code}})()`);
|
||||
}
|
||||
function demoFDM() {
|
||||
kiri.newEngine()
|
||||
.setListener(display_message)
|
||||
.load("/obj/cube.stl")
|
||||
.then(eng => eng.setProcess({
|
||||
|
||||
}))
|
||||
.then(eng => eng.setDevice({
|
||||
gcodePre: [ "M82", "M104 S220" ],
|
||||
gcodePost: [ "M107" ]
|
||||
}))
|
||||
.then(eng => eng.slice())
|
||||
.then(eng => eng.prepare())
|
||||
.then(eng => eng.export())
|
||||
.then(display_gcode);
|
||||
new Engine()
|
||||
.setListener(display_message)
|
||||
.load("/obj/cube.stl")
|
||||
.then(eng => eng.setProcess({
|
||||
// empty
|
||||
}))
|
||||
.then(eng => eng.setDevice({
|
||||
gcodePre: [ "M82", "M104 S220" ],
|
||||
gcodePost: [ "M107" ]
|
||||
}))
|
||||
.then(eng => eng.slice())
|
||||
.then(eng => eng.prepare())
|
||||
.then(eng => eng.export())
|
||||
.then(display_gcode);
|
||||
}
|
||||
|
||||
function demoCAM(){
|
||||
kiri.newEngine()
|
||||
new Engine()
|
||||
.setListener(display_message)
|
||||
.load("/obj/cube.stl")
|
||||
// should to call widget.setTopZ here ideally
|
||||
|
|
@ -180,7 +180,6 @@
|
|||
camZThru: 1.524,
|
||||
camZBottom:-25, // temp hack to get around setTopZ bug
|
||||
camToolInit: true,
|
||||
|
||||
ops: [{
|
||||
type: "outline",
|
||||
tool: 1000,
|
||||
|
|
@ -202,42 +201,41 @@
|
|||
ov_conv: true
|
||||
}
|
||||
]
|
||||
|
||||
}))
|
||||
.then(eng => eng.setDevice({
|
||||
mode: "CAM",
|
||||
internal: 0,
|
||||
bedHeight: 2.5,
|
||||
bedWidth: 678.18,
|
||||
bedDepth: 1524,
|
||||
maxHeight: 150,
|
||||
originCenter: false,
|
||||
spindleMax: 24000,
|
||||
gcodePre: [
|
||||
"G20 ; set units to inches (required)",
|
||||
"G90 ; absolute position mode (required)"
|
||||
],
|
||||
gcodePost: [
|
||||
"M05 ; spindle off",
|
||||
"M30 ; program end"
|
||||
],
|
||||
gcodeDwell: [
|
||||
"G4 P{time} ; dwell for {time}ms"
|
||||
],
|
||||
gcodeSpindle: [
|
||||
"M3 S{speed} ; spindle on at {spindle} rpm"
|
||||
],
|
||||
gcodeChange: [
|
||||
"M05 ; spindle off",
|
||||
"M6 T{tool} ; change tool to '{tool_name}'",
|
||||
"G37; get tool offset with ETS"
|
||||
],
|
||||
gcodeFExt: "nc",
|
||||
gcodeSpace: true,
|
||||
gcodeStrip: false,
|
||||
deviceName: "Tormach.24R",
|
||||
useLaser: false
|
||||
}))
|
||||
mode: "CAM",
|
||||
internal: 0,
|
||||
bedHeight: 2.5,
|
||||
bedWidth: 678.18,
|
||||
bedDepth: 1524,
|
||||
maxHeight: 150,
|
||||
originCenter: false,
|
||||
spindleMax: 24000,
|
||||
gcodePre: [
|
||||
"G20 ; set units to inches (required)",
|
||||
"G90 ; absolute position mode (required)"
|
||||
],
|
||||
gcodePost: [
|
||||
"M05 ; spindle off",
|
||||
"M30 ; program end"
|
||||
],
|
||||
gcodeDwell: [
|
||||
"G4 P{time} ; dwell for {time}ms"
|
||||
],
|
||||
gcodeSpindle: [
|
||||
"M3 S{speed} ; spindle on at {spindle} rpm"
|
||||
],
|
||||
gcodeChange: [
|
||||
"M05 ; spindle off",
|
||||
"M6 T{tool} ; change tool to '{tool_name}'",
|
||||
"G37; get tool offset with ETS"
|
||||
],
|
||||
gcodeFExt: "nc",
|
||||
gcodeSpace: true,
|
||||
gcodeStrip: false,
|
||||
deviceName: "Tormach.24R",
|
||||
useLaser: false
|
||||
}))
|
||||
.then(eng => eng.slice())
|
||||
.then(eng => eng.prepare())
|
||||
.then(eng => eng.export())
|
||||
|
|
@ -245,7 +243,7 @@
|
|||
}
|
||||
|
||||
function demoLASER(){
|
||||
kiri.newEngine()
|
||||
new Engine()
|
||||
.setListener(display_message)
|
||||
.load("/obj/cube.stl")
|
||||
// should to call widget.setTopZ here ideally
|
||||
|
|
@ -312,7 +310,6 @@
|
|||
.then(eng => eng.export())
|
||||
.then(display_gcode);
|
||||
}
|
||||
|
||||
|
||||
function download() {
|
||||
let blob = new Blob([saveit], {type: "octet/stream"});
|
||||
|
|
@ -321,9 +318,20 @@
|
|||
$('download').innerHTML = `<a id="xo" href="${url}" download="${filename}"></a>`;
|
||||
$('xo').click();
|
||||
}
|
||||
|
||||
onload();
|
||||
|
||||
Object.assign(window, {
|
||||
loadExample,
|
||||
demoFDM,
|
||||
demoCAM,
|
||||
demoLASER,
|
||||
download,
|
||||
run_code
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body onload="onload()">
|
||||
<body>
|
||||
<h2 id="title">Kiri:Moto Javascript Engine <a href="https://docs.grid.space/kiri-moto/engine-apis">API</a></h2>
|
||||
<div id="demo">
|
||||
<div id="jcode">
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@
|
|||
}
|
||||
</style>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.12/ace.js"></script>
|
||||
<script src="/code/frame.js"></script>
|
||||
<script src="/lib/kiri/run/frame.js"></script>
|
||||
<script>
|
||||
let defc = [
|
||||
"let api = kiri.frame;",
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@
|
|||
/* surface size configuration and font import */
|
||||
@font-face {
|
||||
font-family: 'Russo One';
|
||||
src: url('/moto/russo-one.ttf');
|
||||
src: url('../moto/russo-one.ttf');
|
||||
}
|
||||
@media only screen and (max-width : 1000px) {
|
||||
.top-menu > span > label {
|
||||
|
|
@ -251,6 +251,9 @@ details[open] summary::after {
|
|||
background-color: #333;
|
||||
color: #fff;
|
||||
}
|
||||
.dark option:checked {
|
||||
background-color: var(--blue-1);
|
||||
}
|
||||
.dark hr {
|
||||
border-color: #555;
|
||||
}
|
||||
|
|
@ -2186,11 +2189,13 @@ details[open] summary::after {
|
|||
}
|
||||
#slider-zero {
|
||||
z-index: 10;
|
||||
min-width: 3em;
|
||||
background-color: #bbb;
|
||||
border-top-left-radius: 5px;
|
||||
border-bottom-left-radius: 5px;
|
||||
}
|
||||
#slider-max {
|
||||
min-width: 3em;
|
||||
background-color: #bbb;
|
||||
border-top-right-radius: 5px;
|
||||
border-bottom-right-radius: 5px;
|
||||
|
|
@ -2427,11 +2432,17 @@ details[open] summary::after {
|
|||
justify-self: center;
|
||||
}
|
||||
.var-row input {
|
||||
flex: 1 1 auto;
|
||||
min-width: 0;
|
||||
max-width: 7ch;
|
||||
margin-right: 0;
|
||||
margin-bottom: 1px;
|
||||
padding-bottom: 1px;
|
||||
padding-top: 1px;
|
||||
}
|
||||
.var-row #tool-name{
|
||||
max-width: 15ch;
|
||||
}
|
||||
.var-row button {
|
||||
margin-right: 0;
|
||||
margin-bottom: 1px;
|
||||
|
|
|
|||
|
|
@ -14,17 +14,19 @@
|
|||
<meta name="mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="default">
|
||||
<meta http-equiv="origin-trial" content="Aixo1di7jfA+ystPFy70vGYyODYVAju1y8EQWwdkdtl5sB7i990oDCnqLQntpfl7NsW74wz99Og7xgQqeLKiBQsAAAB0eyJvcmlnaW4iOiJodHRwczovL2dyaWQuc3BhY2U6NDQzIiwiZmVhdHVyZSI6IlVucmVzdHJpY3RlZFNoYXJlZEFycmF5QnVmZmVyIiwiZXhwaXJ5IjoxNzUzMTQyNDAwLCJpc1N1YmRvbWFpbiI6dHJ1ZX0=">
|
||||
<meta http-equiv="origin-trial" content="AobHyD9RXtmfFOTcY506ANNJjG8lYuuvQ3/C7YJvprSP6Kk2pjKIBSKAUbUh64Nx6aCZaqlZ+7sSSswiIFHflgYAAAB0eyJvcmlnaW4iOiJodHRwczovL2dyaWQuc3BhY2U6NDQzIiwiZmVhdHVyZSI6IlVucmVzdHJpY3RlZFNoYXJlZEFycmF5QnVmZmVyIiwiZXhwaXJ5IjoxNzY5NDcyMDAwLCJpc1N1YmRvbWFpbiI6dHJ1ZX0=">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover">
|
||||
<title>Kiri:Moto</title>
|
||||
<link rel="icon" href="/kiri/favicon.ico">
|
||||
<link rel="apple-touch-icon" href="/kiri/favicon-mobile.png">
|
||||
<link rel="stylesheet" type="text/css" href="/kiri/index.css?{{version}}">
|
||||
<link href="/font/css/all.min.css" rel="stylesheet">
|
||||
<link href="/kiri/manifest.json" rel="manifest">
|
||||
<script src="/code/cache.js?{{version}}" defer></script>
|
||||
<script src="/font/js/all.min.js" crossorigin="anonymous" defer></script>
|
||||
<script src="/code/kiri.js?{{version}}"></script>
|
||||
<link rel="icon" href="favicon.ico">
|
||||
<link rel="apple-touch-icon" href="favicon-mobile.png">
|
||||
<link rel="stylesheet" type="text/css" href="index.css">
|
||||
<link href="manifest.json" rel="manifest">
|
||||
<link href="../font/css/all.min.css" rel="stylesheet">
|
||||
<!-- <script type="module" src="/lib/kiri/run/worker.js"></script> -->
|
||||
<!-- <script type="module" src="/lib/kiri/run/minion.js"></script> -->
|
||||
<script src="../lib/ext/tween.js"></script>
|
||||
<script src="../font/js/all.min.js" crossorigin="anonymous" defer></script>
|
||||
<script src="../lib/main/kiri.js" type="module"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app" class="f-col">
|
||||
|
|
@ -284,6 +286,7 @@
|
|||
<div id="ft-mesh" class="grow f-col pop">
|
||||
<div id="ft-mesh-btn">
|
||||
<div><button id="mesh-merge" lk="rc_merg">Merge</button></div>
|
||||
<div><button id="mesh-split" lk="rc_splt">Isolate Bodies</button></div>
|
||||
<div><button id="mesh-export-obj" lk="rc_xobj">export OBJ</button></div>
|
||||
<div><button id="mesh-export-stl" lk="rc_xstl">export STL</button></div>
|
||||
</div>
|
||||
|
|
@ -435,6 +438,7 @@
|
|||
<div title="clean up after roughing or perform a part cutout">outline</div>
|
||||
<div title="2.5D tracing along X or Y axis used for complex part features">contour</div>
|
||||
<div title="clear areas above selected surfaces">pocket</div>
|
||||
<div title="follow a helix around circular paths">helical</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -551,7 +555,7 @@
|
|||
<select id="tool-select" size="10" class="grow"></select>
|
||||
</div>
|
||||
<div class="f-col t-33 t-body t-inset">
|
||||
<div class="f-row var-row"><label lk="name">name</label><input id="tool-name" size="15"></input></div>
|
||||
<div class="f-row var-row"><label lk="name">name</label><input id="tool-name" ></input></div>
|
||||
<div class="f-row var-row"><label lk="type">type</label>
|
||||
<select id="tool-type">
|
||||
<option value="endmill" lk="td_tyem" selected>end</option>
|
||||
|
|
@ -560,17 +564,17 @@
|
|||
<option value="drill" lk="td_tydr">drill</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="f-row var-row" title="tool number to use
in gcode commands"><label lk="td_tonm">tool #</label><input id="tool-num" size="7"></input></div>
|
||||
<div class="f-row var-row" title="tool number to use
in gcode commands"><label lk="td_tonm">tool #</label><input id="tool-num" ></input></div>
|
||||
<div class="f-row var-row"><label lk="metric">metric</label><input id="tool-metric" type="checkbox"></input></div>
|
||||
<div class="set-header f-col" lk="td_shft">shaft</div>
|
||||
<div class="f-row var-row" title="shaft diameter in inches
unless metric is checked
then in millimeters"><label>diameter</label><input id="tool-sdiam" size="7"></input></div>
|
||||
<div class="f-row var-row" title="shaft length in inches
unless metric is checked
then in millimeters"><label>length</label><input id="tool-slen" size="7"></input></div>
|
||||
<div class="f-row var-row" title="shaft diameter in inches
unless metric is checked
then in millimeters"><label>diameter</label><input id="tool-sdiam" ></input></div>
|
||||
<div class="f-row var-row" title="shaft length in inches
unless metric is checked
then in millimeters"><label>length</label><input id="tool-slen" ></input></div>
|
||||
<div class="set-header f-col" lk="td_flut">flute</div>
|
||||
<div class="f-row var-row" title="flute diameter in inches
unless metric is checked
then in millimeters"><label>diameter</label><input id="tool-fdiam" size="7"></input></div>
|
||||
<div class="f-row var-row" title="flute length in inches
unless metric is checked
then in millimeters"><label>length</label><input id="tool-flen" size="7"></input></div>
|
||||
<div class="f-row var-row" title="flute diameter in inches
unless metric is checked
then in millimeters"><label>diameter</label><input id="tool-fdiam" ></input></div>
|
||||
<div class="f-row var-row" title="flute length in inches
unless metric is checked
then in millimeters"><label>length</label><input id="tool-flen" ></input></div>
|
||||
<div class="set-header f-col" ln="td_tapr">taper</div>
|
||||
<div class="f-row var-row" title="taper angle is measured from the center of the tool"><label>angle</label><input id="tool-tangle" size=7></input></div>
|
||||
<div class="f-row var-row" title="tip width in inches
unless metric is checked
then in millimeters"><label>tip</label><input id="tool-ttip" size="7"></input></div>
|
||||
<div class="f-row var-row" title="tip width in inches
unless metric is checked
then in millimeters"><label>tip</label><input id="tool-ttip" ></input></div>
|
||||
</div>
|
||||
<div id="tool-view" class="f-col t-33 t-body"></div>
|
||||
</div>
|
||||
|
|
@ -624,7 +628,7 @@
|
|||
<div class="header"><label>material</label></div>
|
||||
<div class="f-col box">
|
||||
<div><label>filament density (g/cm^3)</label><input id="print-density" size="12" value="1.25" /></div>
|
||||
<div><label>filament used (mm)</label><input id="print-filament" size="12" disabled="true" /></div>
|
||||
<div><label>filament used (mm)</label><input id="print-length" size="12" disabled="true" /></div>
|
||||
<div><label>printed weight (g)</label><input id="print-weight" size="12" disabled="true" /></div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// Danish localization for Kiri:Moto
|
||||
// Will defer to English map for any missing key/value pairs
|
||||
kiri.lang['da'] =
|
||||
kiri.lang['da-dk'] = {
|
||||
self.lang['da'] =
|
||||
self.lang['da-dk'] = {
|
||||
version: "version",
|
||||
enable: "enable",
|
||||
settings: "indstillinger",
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// German localization for Kiri:Moto
|
||||
// Will defer to English map for any missing key/value pairs
|
||||
kiri.lang['de'] =
|
||||
kiri.lang['de-de'] = {
|
||||
self.lang['de'] =
|
||||
self.lang['de-de'] = {
|
||||
// common keys and menus
|
||||
animate: "Animieren", // CAM animate button
|
||||
arrange: "Anordnen", // layout workspace objects
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// English language map. Other localization maps will
|
||||
// defer to English map for any missing key/value pairs
|
||||
self.kiri.lang['en'] =
|
||||
self.kiri.lang['en-us'] = {
|
||||
self.lang['en'] =
|
||||
self.lang['en-us'] = {
|
||||
// common keys and menus
|
||||
animate: "animate", // CAM animate button
|
||||
arrange: "arrange", // layout workspace objects
|
||||
|
|
@ -78,6 +78,7 @@ self.kiri.lang['en-us'] = {
|
|||
rc_xstl: "export STL",
|
||||
sb_info: ["print speed","in mm/s"],
|
||||
rc_merg: "merge object meshes",
|
||||
rc_splt: "isolate bodies",
|
||||
|
||||
// DEVICE MENU and related dialogs
|
||||
dm_sldt: "select a device type",
|
||||
|
|
@ -612,6 +613,25 @@ self.kiri.lang['en-us'] = {
|
|||
cd_rego_s: "part offset",
|
||||
cd_rego_l: ["offset of hole center","from part bounding box","in workspace units"],
|
||||
|
||||
// CNC HELICAL tolpath
|
||||
ch_menu: "helical",
|
||||
ch_sdwn_s: "step down (pitch)",
|
||||
ch_sdwn_l: ["z-distance","per revolution","in workspace units","(inverse of threads per unit)", "0 to disable"],
|
||||
ch_fsta_s: "force start angle",
|
||||
ch_fsta_l: ["override start angle","defaults to closest point to tool"],
|
||||
ch_stra_s: "start angle",
|
||||
ch_stra_l: ["start angle of helix","in degrees ccw of +x axis"],
|
||||
ch_selc_l: ["select a cylinder face", "inner holes that are too small","will be ignored."],
|
||||
ch_fini_s: "bottom finish pass",
|
||||
ch_fini_l: ["trace a circle at bottom of helix","used for hole clearing"],
|
||||
ch_entr_s: "enter from center",
|
||||
ch_entr_l: ["start cut from center of cylinder","gently arcing in horisontaly", "instead of plunging"],
|
||||
ch_ento_s: "center entry offset",
|
||||
ch_ento_l: ["offset from path for curved entry","usually thread depth if threadmilling","in workspace units","0 for a linear entry"],
|
||||
ch_rvrs_s: "reverse",
|
||||
ch_rvrs_l: ["reverse helical z-axis direction","low-Z to high-Z when checked","useful for thread milling","not recomended for other operations"],
|
||||
ch_clkw_s: "clockwise",
|
||||
ch_clkw_l: ["reverse helical rotation around cylinder","clockwise when checked"],
|
||||
|
||||
// CNC FLIP
|
||||
cf_menu: "flip",
|
||||
|
|
@ -648,6 +668,10 @@ self.kiri.lang['en-us'] = {
|
|||
cl_maxz_s: "max z height",
|
||||
cl_maxz_l: ["highest Z band position. when set to 0, uses the highest Z point of the workspace"],
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// CNC CUTOUT TABS
|
||||
ct_menu: "tabs",
|
||||
ct_angl_s: "angle",
|
||||
|
|
@ -863,6 +887,8 @@ self.kiri.lang['en-us'] = {
|
|||
cx_fast_l: ["disable overhang detection","can be faster and use less","memory with complex models","but fails with overhangs","try enabling if slicing","hangs during shadowing"],
|
||||
cx_true_s: "true shadow",
|
||||
cx_true_l: ["computationally correct shadow","will be slower but produce","better cuts for complex parts"],
|
||||
cx_arce_s: "arc output",
|
||||
cx_arce_l: ["EXPERIMENTAL: enable path to arc conversion"],
|
||||
cx_arct_s: "arc tolerance",
|
||||
cx_arct_l: ["convert cicrular paths to arcs;","center point drift tolerance","when matching arc points","consider values around 0.15","in mm, or 0.006 inches;","High values may cause","unexpected behavior","0 to disable"],
|
||||
cx_arcr_s: "arc resolution",
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// Spanish localization for Kiri:Moto
|
||||
// Will defer to English map for any missing key/value pairs
|
||||
kiri.lang['es'] =
|
||||
kiri.lang['es-es'] = {
|
||||
self.lang['es'] =
|
||||
self.lang['es-es'] = {
|
||||
// common keys and menus
|
||||
animate: "animar", // CAM animate button
|
||||
arrange: "organizar", // layout workspace objects
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// French localization for Kiri:Moto
|
||||
// Will defer to English map for any missing key/value pairs
|
||||
kiri.lang['fr'] =
|
||||
kiri.lang['fr-fr'] = {
|
||||
self.lang['fr'] =
|
||||
self.lang['fr-fr'] = {
|
||||
// common keys and menus
|
||||
animate: "animer", // CAM animate button
|
||||
arrange: "organiser", // layout workspace objects
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
// Polish. Język polski tłumaczony na zasadach własności publicznej
|
||||
kiri.lang['pl'] =
|
||||
kiri.lang['pl-pl'] = {
|
||||
self.lang['pl'] =
|
||||
self.lang['pl-pl'] = {
|
||||
// hasło i tłumaczenie
|
||||
animate: "animacja", // CAM animate button
|
||||
arrange: "rozmieść", // layout workspace objects
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// Portuguese localization for Kiri:Moto
|
||||
// Will defer to English map for any missing key/value pairs
|
||||
kiri.lang['pt'] =
|
||||
kiri.lang['pt-pt'] = {
|
||||
self.lang['pt'] =
|
||||
self.lang['pt-pt'] = {
|
||||
// common keys and menus
|
||||
animate: "animar", // CAM animate button
|
||||
arrange: "organizar", // layout workspace objects
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
// 英文。其他语言地图将遵循英语内容
|
||||
// 映射缺少的键/值对
|
||||
kiri.lang['zh'] = {
|
||||
self.lang['zh'] = {
|
||||
// 通用键及菜单
|
||||
animate: "动画", // CAM动画按钮
|
||||
arrange: "排布", // 对工作区对象排版
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"name": "Kiri:Moto 4.2.0",
|
||||
"name": "Kiri:Moto 4.3.0",
|
||||
"short_name": "Kiri:Moto",
|
||||
"description": "Slicer for 3D printers, CNC mills, laser cutters and more",
|
||||
"start_url": "/kiri/",
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
"background_color": "#ffffff",
|
||||
"orientation": "landscape-primary",
|
||||
"icons": [
|
||||
{ "src": "/kiri/logo-cube-512.png", "type": "image/png", "sizes": "512x512" },
|
||||
{ "src": "/kiri/logo-cube-144.png", "type": "image/png", "sizes": "144x144" }
|
||||
{ "src": "./logo-cube-512.png", "type": "image/png", "sizes": "512x512" },
|
||||
{ "src": "./logo-cube-144.png", "type": "image/png", "sizes": "144x144" }
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,138 +0,0 @@
|
|||
<html>
|
||||
<head>
|
||||
<style>
|
||||
body, div {
|
||||
border: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
</style>
|
||||
<script>self.module = { exports: {} }</script>
|
||||
<script src="/src/main/gapp.js"></script>
|
||||
<script src="/src/ext/three.js"></script>
|
||||
<script src="/src/add/three.js"></script>
|
||||
<script src="/src/moto/orbit.js"></script>
|
||||
<script>
|
||||
let camera, scene, renderer, controls;
|
||||
let material, mesh;
|
||||
let vertices, indices;
|
||||
let unindexed, indexed;
|
||||
|
||||
function light(i, x, y, z) {
|
||||
let l = new THREE.PointLight(0xffffff, i);
|
||||
l.position.set(x,y,z);
|
||||
return l;
|
||||
}
|
||||
|
||||
function init() {
|
||||
scene = new THREE.Scene();
|
||||
camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 1, 10000);
|
||||
camera.position.z = 15;
|
||||
|
||||
scene.add(camera);
|
||||
scene.add(new THREE.AmbientLight(0xffffff, 0.2));
|
||||
scene.add(light(0.2, 30, 0, 0));
|
||||
scene.add(light(0.2, -30, 0, 0));
|
||||
scene.add(light(0.2, 0, 30, 0));
|
||||
scene.add(light(0.2, 0, -30, 0));
|
||||
scene.add(light(0.2, 0, 0, 30));
|
||||
scene.add(light(0.2, 0, 0, -30));
|
||||
|
||||
vertices = Float32Array.from([
|
||||
-2, -2, -2,
|
||||
-2, 2, -2,
|
||||
2, 2, -2,
|
||||
2, -2, -2,
|
||||
-2, -2, 2,
|
||||
-2, 2, 2,
|
||||
2, 2, 2,
|
||||
2, -2, 2,
|
||||
]);
|
||||
|
||||
indices = Uint32Array.from([
|
||||
0, 1, 2, // bottom
|
||||
0, 2, 3,
|
||||
6, 5, 4, // top
|
||||
7, 6, 4,
|
||||
0, 4, 1, // side 1
|
||||
1, 4, 5,
|
||||
2, 6, 3, // side 2
|
||||
3, 6, 7
|
||||
]);
|
||||
|
||||
// generate full vertices list (non-indexed)
|
||||
let vertall = [];
|
||||
for (let i of indices) {
|
||||
vertall = vertall.concat([...vertices].slice(i*3,i*3+3));
|
||||
}
|
||||
vertall = Float32Array.from(vertall);
|
||||
|
||||
material = new THREE.MeshPhongMaterial({
|
||||
side: THREE.DoubleSide,
|
||||
shininess: 100,
|
||||
specular: 0x404040,
|
||||
transparent: false,
|
||||
color: 0xffff00,
|
||||
opacity: 0.5
|
||||
});
|
||||
|
||||
// non-indexed geometry
|
||||
unindexed = new THREE.BufferGeometry()
|
||||
.setAttribute('position', new THREE.BufferAttribute(vertall, 3));
|
||||
unindexed.computeVertexNormals();
|
||||
|
||||
// mesh with non-indexed geometry
|
||||
let meshU = new THREE.Mesh(unindexed, material);
|
||||
meshU.add(new THREE.Mesh(
|
||||
unindexed.clone(), new THREE.MeshBasicMaterial({
|
||||
wireframe: true,
|
||||
color: 0xffff00
|
||||
})
|
||||
));
|
||||
scene.add(meshU);
|
||||
meshU.position.y = 2.5;
|
||||
|
||||
// indexed geometry
|
||||
indexed = new THREE.BufferGeometry()
|
||||
.setAttribute('position', new THREE.BufferAttribute(vertices, 3))
|
||||
.setIndex(new THREE.BufferAttribute(indices, 1));
|
||||
indexed.computeVertexNormals();
|
||||
|
||||
// mesh with indexed geometry
|
||||
let meshI = new THREE.Mesh(indexed, material);
|
||||
meshI.add(new THREE.Mesh(
|
||||
indexed.clone(), new THREE.MeshBasicMaterial({
|
||||
wireframe: true,
|
||||
color: 0xffff00
|
||||
})
|
||||
));
|
||||
scene.add(meshI);
|
||||
meshI.position.y = -2.5;
|
||||
|
||||
renderer = new THREE.WebGLRenderer({
|
||||
antialias: true,
|
||||
preserveDrawingBuffer: true,
|
||||
logarithmicDepthBuffer: true
|
||||
});
|
||||
|
||||
controls = new moto.Orbit(camera, renderer.domElement);
|
||||
controls.update();
|
||||
|
||||
renderer.setSize(window.innerWidth, window.innerHeight);
|
||||
document.body.appendChild(renderer.domElement);
|
||||
|
||||
animate();
|
||||
}
|
||||
|
||||
function animate() {
|
||||
requestAnimationFrame(animate);
|
||||
render();
|
||||
}
|
||||
|
||||
function render() {
|
||||
renderer.render(scene, camera);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body onload="init()"></body>
|
||||
</html>
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
@font-face {
|
||||
font-family: 'Russo One';
|
||||
src: url('/moto/russo-one.ttf');
|
||||
src: url('../moto/russo-one.ttf');
|
||||
}
|
||||
|
||||
/** defaults */
|
||||
|
|
|
|||
|
|
@ -11,12 +11,15 @@
|
|||
<meta property="og:type" content="website">
|
||||
<meta property="og:url" content="https://grid.space/mesh/">
|
||||
<title>Mesh:Tool</title>
|
||||
<link rel="icon" href="/mesh/favicon.ico">
|
||||
<link rel="stylesheet" type="text/css" href="/mesh/index.css?{{version}}">
|
||||
<link href="/font/css/all.min.css" rel="stylesheet">
|
||||
<link href="/fon2/bootstrap-icons.min.css" rel="stylesheet">
|
||||
<script src="/font/js/all.min.js" crossorigin="anonymous" async></script>
|
||||
<script src="/code/mesh.js?{{version}}"></script>
|
||||
<link rel="icon" href="favicon.ico">
|
||||
<link rel="stylesheet" type="text/css" href="index.css">
|
||||
<link href="../font/css/all.min.css" rel="stylesheet">
|
||||
<link href="../fon2/bootstrap-icons.min.css" rel="stylesheet">
|
||||
<!-- <script type="module" src="/lib/mesh/work.js"></script> -->
|
||||
<!-- <script src="../lib/ext/earcut.js" type="module"></script> -->
|
||||
<script src="../lib/ext/tween.js"></script>
|
||||
<script src="../font/js/all.min.js" crossorigin="anonymous"></script>
|
||||
<script src="../lib/main/mesh.js" type="module"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app">
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 5.9 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 1.1 KiB |
|
|
@ -1,16 +0,0 @@
|
|||
a, a:hover, a:visited {
|
||||
border: none;
|
||||
outline: none;
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
body {
|
||||
overflow: hidden;
|
||||
}
|
||||
body,div {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
font-weight: normal;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head lang="en">
|
||||
<meta charset="UTF-8">
|
||||
<meta name="copyright" content="stewart allen [sa@grid.space]">
|
||||
<meta name="description" content="3d block modeler">
|
||||
<meta name="keywords" content="gridspace,meta,metamoto,3d,block,builder,modeler,modeling">
|
||||
<meta name="author" content="Stewart Allen">
|
||||
<title>Meta:Moto</title>
|
||||
<link rel="icon" href="/meta/favicon.ico">
|
||||
<link rel="apple-touch-icon" href="/meta/favicon-mobile.png">
|
||||
<link rel="stylesheet" type="text/css" href="/meta/index.css?{{version}}">
|
||||
<link href="/font/css/all.min.css" rel="stylesheet">
|
||||
<script src="/font/js/all.min.js" crossorigin="anonymous"></script>
|
||||
<script src="/code/meta.js?{{version}}"></script>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
</html>
|
||||
198
web/obj/pocket-test.stl
Normal file
198
web/obj/pocket-test.stl
Normal file
|
|
@ -0,0 +1,198 @@
|
|||
solid
|
||||
facet normal 0.000000e+00 -1.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+01 -5.000000e+01 0.000000e+00
|
||||
vertex -5.000000e+01 -5.000000e+01 1.800000e+01
|
||||
vertex -5.000000e+01 -5.000000e+01 0.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 -1.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+01 -5.000000e+01 0.000000e+00
|
||||
vertex 5.000000e+01 -5.000000e+01 1.800000e+01
|
||||
vertex -5.000000e+01 -5.000000e+01 1.800000e+01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1.000000e+00 0.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex -5.000000e+01 -5.000000e+01 0.000000e+00
|
||||
vertex -5.000000e+01 5.000000e+01 1.800000e+01
|
||||
vertex -5.000000e+01 5.000000e+01 0.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1.000000e+00 0.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex -5.000000e+01 -5.000000e+01 0.000000e+00
|
||||
vertex -5.000000e+01 -5.000000e+01 1.800000e+01
|
||||
vertex -5.000000e+01 5.000000e+01 1.800000e+01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 1.000000e+00 0.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+01 5.000000e+01 0.000000e+00
|
||||
vertex 5.000000e+01 -5.000000e+01 1.800000e+01
|
||||
vertex 5.000000e+01 -5.000000e+01 0.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 1.000000e+00 0.000000e+00 -0.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+01 5.000000e+01 0.000000e+00
|
||||
vertex 5.000000e+01 5.000000e+01 1.800000e+01
|
||||
vertex 5.000000e+01 -5.000000e+01 1.800000e+01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 -0.000000e+00 -1.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+01 5.000000e+01 0.000000e+00
|
||||
vertex 5.000000e+01 -5.000000e+01 0.000000e+00
|
||||
vertex -5.000000e+01 -5.000000e+01 0.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -0.000000e+00 0.000000e+00 -1.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+01 5.000000e+01 0.000000e+00
|
||||
vertex -5.000000e+01 -5.000000e+01 0.000000e+00
|
||||
vertex -5.000000e+01 5.000000e+01 0.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+01 -5.000000e+01 1.800000e+01
|
||||
vertex 2.000000e+01 -2.000000e+01 1.800000e+01
|
||||
vertex -2.000000e+01 -2.000000e+01 1.800000e+01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+01 -5.000000e+01 1.800000e+01
|
||||
vertex -2.000000e+01 -2.000000e+01 1.800000e+01
|
||||
vertex -5.000000e+01 -5.000000e+01 1.800000e+01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex -2.000000e+01 2.000000e+01 1.800000e+01
|
||||
vertex -5.000000e+01 5.000000e+01 1.800000e+01
|
||||
vertex -5.000000e+01 -5.000000e+01 1.800000e+01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex -2.000000e+01 2.000000e+01 1.800000e+01
|
||||
vertex -5.000000e+01 -5.000000e+01 1.800000e+01
|
||||
vertex -2.000000e+01 -2.000000e+01 1.800000e+01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+01 5.000000e+01 1.800000e+01
|
||||
vertex 2.000000e+01 2.000000e+01 1.800000e+01
|
||||
vertex 2.000000e+01 -2.000000e+01 1.800000e+01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+01 5.000000e+01 1.800000e+01
|
||||
vertex -2.000000e+01 2.000000e+01 1.800000e+01
|
||||
vertex 2.000000e+01 2.000000e+01 1.800000e+01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+01 5.000000e+01 1.800000e+01
|
||||
vertex -5.000000e+01 5.000000e+01 1.800000e+01
|
||||
vertex -2.000000e+01 2.000000e+01 1.800000e+01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex 5.000000e+01 5.000000e+01 1.800000e+01
|
||||
vertex 2.000000e+01 -2.000000e+01 1.800000e+01
|
||||
vertex 5.000000e+01 -5.000000e+01 1.800000e+01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 1.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex -5.000000e+01 5.000000e+01 0.000000e+00
|
||||
vertex 5.000000e+01 5.000000e+01 1.800000e+01
|
||||
vertex 5.000000e+01 5.000000e+01 0.000000e+00
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 1.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex -5.000000e+01 5.000000e+01 0.000000e+00
|
||||
vertex -5.000000e+01 5.000000e+01 1.800000e+01
|
||||
vertex 5.000000e+01 5.000000e+01 1.800000e+01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1.000000e+00 -0.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 2.000000e+01 2.000000e+01 1.800000e+01
|
||||
vertex 2.000000e+01 -2.000000e+01 1.000000e+01
|
||||
vertex 2.000000e+01 -2.000000e+01 1.800000e+01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal -1.000000e+00 0.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 2.000000e+01 2.000000e+01 1.000000e+01
|
||||
vertex 2.000000e+01 -2.000000e+01 1.000000e+01
|
||||
vertex 2.000000e+01 2.000000e+01 1.800000e+01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 -1.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex -2.000000e+01 2.000000e+01 1.800000e+01
|
||||
vertex 2.000000e+01 2.000000e+01 1.000000e+01
|
||||
vertex 2.000000e+01 2.000000e+01 1.800000e+01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 -1.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex -2.000000e+01 2.000000e+01 1.000000e+01
|
||||
vertex 2.000000e+01 2.000000e+01 1.000000e+01
|
||||
vertex -2.000000e+01 2.000000e+01 1.800000e+01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 1.000000e+00 -0.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex -2.000000e+01 -2.000000e+01 1.800000e+01
|
||||
vertex -2.000000e+01 2.000000e+01 1.000000e+01
|
||||
vertex -2.000000e+01 2.000000e+01 1.800000e+01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 1.000000e+00 0.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex -2.000000e+01 -2.000000e+01 1.000000e+01
|
||||
vertex -2.000000e+01 2.000000e+01 1.000000e+01
|
||||
vertex -2.000000e+01 -2.000000e+01 1.800000e+01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 1.000000e+00 0.000000e+00
|
||||
outer loop
|
||||
vertex 2.000000e+01 -2.000000e+01 1.800000e+01
|
||||
vertex -2.000000e+01 -2.000000e+01 1.000000e+01
|
||||
vertex -2.000000e+01 -2.000000e+01 1.800000e+01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 1.000000e+00 -0.000000e+00
|
||||
outer loop
|
||||
vertex 2.000000e+01 -2.000000e+01 1.000000e+01
|
||||
vertex -2.000000e+01 -2.000000e+01 1.000000e+01
|
||||
vertex 2.000000e+01 -2.000000e+01 1.800000e+01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex 2.000000e+01 2.000000e+01 1.000000e+01
|
||||
vertex -2.000000e+01 -2.000000e+01 1.000000e+01
|
||||
vertex 2.000000e+01 -2.000000e+01 1.000000e+01
|
||||
endloop
|
||||
endfacet
|
||||
facet normal 0.000000e+00 0.000000e+00 1.000000e+00
|
||||
outer loop
|
||||
vertex 2.000000e+01 2.000000e+01 1.000000e+01
|
||||
vertex -2.000000e+01 2.000000e+01 1.000000e+01
|
||||
vertex -2.000000e+01 -2.000000e+01 1.000000e+01
|
||||
endloop
|
||||
endfacet
|
||||
endsolid
|
||||
Loading…
Reference in a new issue