Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
DMDesign
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Amanda Ghassaei
DMDesign
Commits
54cae05b
Commit
54cae05b
authored
9 years ago
by
Amanda Ghassaei
Browse files
Options
Downloads
Patches
Plain Diff
remove machine class
parent
53ea660e
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
js/cam/Machine.js
+0
-365
0 additions, 365 deletions
js/cam/Machine.js
with
0 additions
and
365 deletions
js/cam/Machine.js
deleted
100644 → 0
+
0
−
365
View file @
53ea660e
/**
* Created by fab on 3/16/15.
*/
function
Machine
()
{
this
.
hasStock
=
false
;
this
.
_setDefaults
();
this
.
meshes
=
{};
this
.
material
=
new
THREE
.
MeshLambertMaterial
({
color
:
0xaaaaaa
,
shading
:
THREE
.
FlatShading
,
transparent
:
true
,
opacity
:
1
});
this
.
cell
=
this
.
_makeStockCell
();
var
self
=
this
;
this
.
_buildMeshes
(
function
(
meshes
){
self
.
meshes
=
meshes
;
_
.
each
(
_
.
values
(
meshes
),
function
(
mesh
){
globals
.
three
.
sceneAdd
(
mesh
);
});
if
(
self
.
setMachinePosition
)
self
.
setMachinePosition
();
self
.
setVisibility
();
});
this
.
setVisibility
(
false
);
}
Machine
.
prototype
.
_setDefaults
=
function
(){
globals
.
cam
.
set
(
"
camProcess
"
,
"
gcode
"
);
globals
.
cam
.
set
(
"
stockFixed
"
,
false
);
globals
.
cam
.
set
(
"
originPosition
"
,
{
x
:
0
,
y
:
0
,
z
:
0
});
var
boundingBox
=
globals
.
lattice
.
calculateBoundingBox
();
var
rapidHeight
=
parseFloat
((
boundingBox
.
max
.
z
+
2
*
globals
.
lattice
.
zScale
()).
toFixed
(
4
));
globals
.
cam
.
set
(
"
rapidHeight
"
,
rapidHeight
);
globals
.
cam
.
set
(
"
stockPosition
"
,
{
x
:
0
,
y
:
0
,
z
:
0
});
globals
.
cam
.
set
(
"
stockSeparation
"
,
globals
.
lattice
.
xScale
());
};
Machine
.
prototype
.
setVisibility
=
function
(
visible
){
if
(
visible
==
null
||
visible
===
undefined
)
{
if
(
globals
.
cam
)
visible
=
globals
.
cam
.
isVisible
();
else
visible
=
false
;
}
if
(
visible
&&
this
.
hasStock
)
this
.
cell
.
draw
();
else
this
.
cell
.
hide
();
this
.
_setAlpha
();
this
.
_setMeshesVisiblity
(
visible
);
globals
.
three
.
render
();
};
Machine
.
prototype
.
_setAlpha
=
function
(){
//todo make stock transparent
if
(
globals
.
appState
.
get
(
"
currentTab
"
)
==
"
cam
"
){
this
.
material
.
opacity
=
0.5
;
}
else
{
this
.
material
.
opacity
=
1
;
}
};
Machine
.
prototype
.
_setMeshesVisiblity
=
function
(
visible
){
_
.
each
(
_
.
values
(
this
.
meshes
),
function
(
mesh
){
mesh
.
visible
=
visible
;
});
if
(
visible
)
this
.
setScale
(
globals
.
lattice
.
get
(
"
scale
"
));
};
Machine
.
prototype
.
setScale
=
function
(
scale
){
_
.
each
(
_
.
values
(
this
.
meshes
),
function
(
mesh
){
mesh
.
scale
.
set
(
scale
,
scale
,
scale
);
});
}
Machine
.
prototype
.
_makeStockCell
=
function
(){
if
(
globals
.
lattice
.
makeSuperCell
)
return
globals
.
lattice
.
makeSuperCell
();
return
globals
.
lattice
.
makeCellForLatticeType
({},
globals
.
lattice
.
get
(
"
scale
"
));
};
Machine
.
prototype
.
updateCellType
=
function
(){
if
(
this
.
cell
)
this
.
cell
.
destroy
();
this
.
cell
=
this
.
_makeStockCell
();
this
.
setVisibility
();
};
Machine
.
prototype
.
updatePartType
=
function
(){
this
.
cell
.
destroyParts
();
this
.
cell
.
draw
();
this
.
setVisibility
();
};
Machine
.
prototype
.
pickUpStock
=
function
(){
this
.
hasStock
=
true
;
this
.
cell
.
draw
();
};
Machine
.
prototype
.
releaseStock
=
function
(
index
){
this
.
hasStock
=
false
;
globals
.
lattice
.
showCellAtIndex
(
JSON
.
parse
(
index
));
this
.
cell
.
hide
();
};
Machine
.
prototype
.
pause
=
function
(){
};
Machine
.
prototype
.
moveTo
=
function
(
x
,
y
,
z
,
speed
,
wcs
,
callback
){
x
=
this
.
_makeAbsPosition
(
x
,
wcs
.
x
);
y
=
this
.
_makeAbsPosition
(
y
,
wcs
.
y
);
z
=
this
.
_makeAbsPosition
(
z
,
wcs
.
z
);
this
.
_moveTo
(
x
,
y
,
z
,
speed
,
wcs
,
callback
);
};
Machine
.
prototype
.
_moveTo
=
function
(
x
,
y
,
z
,
speed
,
wcs
,
callback
){
var
totalThreads
=
3
;
function
sketchyCallback
(){
totalThreads
-=
1
;
if
(
totalThreads
>
0
)
return
;
callback
();
}
var
startingPos
=
this
.
cell
.
getPosition
();
speed
=
this
.
_normalizeSpeed
(
startingPos
,
x
,
y
,
this
.
_reorganizeSpeed
(
speed
));
this
.
_moveAxis
(
startingPos
.
x
,
x
,
"
x
"
,
speed
.
x
,
sketchyCallback
);
this
.
_moveAxis
(
startingPos
.
y
,
y
,
"
y
"
,
speed
.
y
,
sketchyCallback
);
this
.
_moveAxis
(
startingPos
.
z
,
z
,
"
z
"
,
speed
.
z
,
sketchyCallback
);
};
Machine
.
prototype
.
_makeAbsPosition
=
function
(
target
,
wcs
){
if
(
target
==
""
||
target
==
null
||
target
===
undefined
)
return
null
;
return
parseFloat
(
target
)
+
wcs
;
};
Machine
.
prototype
.
_reorganizeSpeed
=
function
(
speed
){
var
newSpeed
=
{};
newSpeed
.
x
=
speed
.
xy
;
newSpeed
.
y
=
speed
.
xy
;
newSpeed
.
z
=
speed
.
z
;
return
newSpeed
;
}
Machine
.
prototype
.
_normalizeSpeed
=
function
(
startingPos
,
x
,
y
,
speed
){
//xy moves need speed normalization
var
normSpeed
=
{};
if
(
x
==
""
||
y
==
""
)
return
speed
;
var
deltaX
=
x
-
startingPos
.
x
;
var
deltaY
=
y
-
startingPos
.
y
;
var
totalDistance
=
Math
.
sqrt
(
Math
.
pow
(
deltaX
,
2
)
+
Math
.
pow
(
deltaY
,
2
));
if
(
totalDistance
==
0
)
return
speed
;
normSpeed
.
x
=
Math
.
abs
(
deltaX
/
totalDistance
*
speed
.
x
);
normSpeed
.
y
=
Math
.
abs
(
deltaY
/
totalDistance
*
speed
.
y
);
normSpeed
.
z
=
speed
.
z
;
return
normSpeed
;
};
Machine
.
prototype
.
_animateObjects
=
function
(
objects
,
axis
,
speed
,
startingPos
,
target
,
callback
){
var
increment
=
speed
/
25
*
globals
.
cam
.
get
(
"
simSpeed
"
);
if
(
increment
==
0
)
{
if
(
callback
)
callback
();
return
;
}
var
direction
=
1
;
if
(
target
-
startingPos
<
0
)
direction
=
-
1
;
increment
=
Math
.
max
(
increment
,
0.00001
)
*
direction
;
//need to put a min on the increment - other wise this stall out with floating pt tol
this
.
_incrementalMove
(
objects
,
axis
,
increment
,
startingPos
,
target
,
direction
,
callback
);
};
Machine
.
prototype
.
_incrementalMove
=
function
(
objects
,
axis
,
increment
,
currentPos
,
target
,
direction
,
callback
){
var
self
=
this
;
setTimeout
(
function
(){
if
((
target
-
currentPos
)
*
direction
<=
0
)
{
if
(
callback
)
callback
();
return
;
}
var
nextPos
=
currentPos
+
increment
;
if
(
Math
.
abs
(
target
-
currentPos
)
<
Math
.
abs
(
increment
))
nextPos
=
target
;
//don't overshoot
self
.
_setPosition
(
objects
,
nextPos
,
axis
);
self
.
_incrementalMove
(
objects
,
axis
,
increment
,
nextPos
,
target
,
direction
,
callback
)
},
10
);
};
Machine
.
prototype
.
_setPosition
=
function
(
objects
,
nextPos
,
axis
){
_
.
each
(
objects
,
function
(
object
){
if
(
object
instanceof
DMACell
||
object
instanceof
DMASuperCell
)
object
.
moveTo
(
nextPos
,
axis
);
else
object
.
position
[
axis
]
=
nextPos
;
});
};
///////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////POST PROCESS//////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////
Machine
.
prototype
.
postProcess
=
function
(
data
,
exporter
){
//override in subclasses
var
rapidHeight
=
globals
.
cam
.
get
(
"
rapidHeight
"
);
var
safeHeight
=
globals
.
cam
.
get
(
"
safeHeight
"
);
var
wcs
=
globals
.
cam
.
get
(
"
originPosition
"
);
var
stockPosition
=
globals
.
cam
.
get
(
"
stockPosition
"
);
var
stockNum
=
0
;
//position of stock in stock array
var
multStockPositions
=
globals
.
cam
.
get
(
"
multipleStockPositions
"
);
var
stockSeparation
=
globals
.
cam
.
get
(
"
stockSeparation
"
);
var
stockArraySize
=
globals
.
cam
.
get
(
"
stockArraySize
"
);
var
self
=
this
;
globals
.
lattice
.
rasterCells
(
globals
.
cam
.
_getOrder
(
globals
.
cam
.
get
(
"
camStrategy
"
)),
function
(
cell
){
if
(
!
cell
)
return
;
var
thisStockPosition
=
_
.
clone
(
stockPosition
);
if
(
multStockPositions
)
{
thisStockPosition
.
x
+=
stockNum
%
stockArraySize
.
y
*
stockSeparation
;
thisStockPosition
.
y
-=
Math
.
floor
(
stockNum
/
stockArraySize
.
y
)
*
stockSeparation
;
stockNum
+=
1
;
if
(
stockNum
>=
stockArraySize
.
x
*
stockArraySize
.
y
)
stockNum
=
0
;
}
data
+=
self
.
_postMoveXY
(
exporter
,
stockPosition
.
x
-
wcs
.
x
,
stockPosition
.
y
-
wcs
.
y
);
data
+=
self
.
_postPickUpStock
(
exporter
,
thisStockPosition
,
rapidHeight
,
wcs
,
safeHeight
);
var
cellPosition
=
cell
.
getPosition
();
data
+=
self
.
_postMoveXY
(
exporter
,
cellPosition
.
x
-
wcs
.
x
,
cellPosition
.
y
-
wcs
.
y
);
data
+=
self
.
_postReleaseStock
(
cellPosition
,
cell
,
exporter
,
rapidHeight
,
wcs
,
safeHeight
);
data
+=
"
\n
"
;
});
return
data
;
};
Machine
.
prototype
.
_postMoveXY
=
function
(
exporter
,
x
,
y
){
return
exporter
.
rapidXY
(
x
,
y
);
};
Machine
.
prototype
.
_postPickUpStock
=
function
(
exporter
,
stockPosition
,
rapidHeight
,
wcs
,
safeHeight
){
var
data
=
""
;
data
+=
exporter
.
rapidZ
(
stockPosition
.
z
-
wcs
.
z
+
safeHeight
);
data
+=
exporter
.
moveZ
(
stockPosition
.
z
-
wcs
.
z
);
data
+=
exporter
.
addComment
(
"
get stock
"
);
data
+=
exporter
.
moveZ
(
stockPosition
.
z
-
wcs
.
z
+
safeHeight
);
data
+=
exporter
.
rapidZ
(
rapidHeight
);
return
data
;
};
Machine
.
prototype
.
_postReleaseStock
=
function
(
cellPosition
,
cell
,
exporter
,
rapidHeight
,
wcs
,
safeHeight
){
var
data
=
""
;
data
+=
exporter
.
rapidZ
(
cellPosition
.
z
-
wcs
.
z
+
safeHeight
);
data
+=
exporter
.
moveZ
(
cellPosition
.
z
-
wcs
.
z
);
data
+=
exporter
.
addComment
(
JSON
.
stringify
(
cell
.
indices
));
data
+=
exporter
.
moveZ
(
cellPosition
.
z
-
wcs
.
z
+
safeHeight
);
data
+=
exporter
.
rapidZ
(
rapidHeight
);
return
data
;
};
///////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////DEALLOCATE////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////
Machine
.
prototype
.
destroy
=
function
(){
this
.
cell
.
destroy
();
_
.
each
(
_
.
values
(
this
.
meshes
),
function
(
mesh
){
globals
.
three
.
sceneRemove
(
mesh
);
mesh
=
null
;
});
this
.
meshes
=
null
;
this
.
position
=
null
;
this
.
material
=
null
;
};
///////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////SHOPBOT///////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////
function
Shopbot
(){
Machine
.
call
(
this
);
}
Shopbot
.
prototype
=
Object
.
create
(
Machine
.
prototype
);
Shopbot
.
prototype
.
_setDefaults
=
function
(){
Machine
.
prototype
.
_setDefaults
.
call
(
this
);
globals
.
cam
.
set
(
"
camProcess
"
,
"
shopbot
"
);
var
boundingBox
=
globals
.
lattice
.
calculateBoundingBox
();
var
yPos
=
parseFloat
((
boundingBox
.
max
.
y
+
3
*
globals
.
lattice
.
yScale
()).
toFixed
(
4
));
globals
.
cam
.
set
(
"
stockPosition
"
,
{
x
:
0
,
y
:
yPos
,
z
:
0
});
};
Shopbot
.
prototype
.
_buildMeshes
=
function
(
callback
){
var
meshes
=
{};
var
material
=
this
.
material
;
(
new
THREE
.
STLLoader
()).
load
(
"
assets/stls/shopbot/shopbotEndEffector.stl
"
,
function
(
geometry
){
geometry
.
computeBoundingBox
();
var
unitScale
=
0.5
/
geometry
.
boundingBox
.
max
.
y
;
geometry
.
applyMatrix
(
new
THREE
.
Matrix4
().
makeScale
(
unitScale
,
unitScale
,
unitScale
));
geometry
.
applyMatrix
(
new
THREE
.
Matrix4
().
makeTranslation
(
0
,
0
,
1.13
-
Math
.
sqrt
(
2
)
/
2
));
var
mesh
=
new
THREE
.
Mesh
(
geometry
,
material
);
mesh
.
visible
=
false
;
meshes
.
endEffector
=
mesh
;
callback
(
meshes
);
});
};
Shopbot
.
prototype
.
_moveAxis
=
function
(
startingPos
,
target
,
axis
,
speed
,
callback
){
if
(
target
==
null
||
target
===
undefined
)
{
callback
();
return
;
}
this
.
_animateObjects
([
this
.
meshes
.
endEffector
,
this
.
cell
],
axis
,
speed
,
startingPos
,
target
,
callback
);
};
///////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////GOD///////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////
function
God
(){
Machine
.
call
(
this
);
}
God
.
prototype
=
Object
.
create
(
Machine
.
prototype
);
God
.
prototype
.
_setDefaults
=
function
(){
Machine
.
prototype
.
_setDefaults
.
call
(
this
);
var
boundingBox
=
globals
.
lattice
.
calculateBoundingBox
();
var
zPos
=
parseFloat
((
boundingBox
.
max
.
z
+
5
*
globals
.
lattice
.
zScale
()).
toFixed
(
4
));
globals
.
cam
.
set
(
"
stockPosition
"
,
{
x
:
0
,
y
:
0
,
z
:
zPos
});
};
God
.
prototype
.
_buildMeshes
=
function
(
callback
){
callback
({});
};
God
.
prototype
.
_moveTo
=
function
(
x
,
y
,
z
,
speed
,
wcs
,
callback
){
var
startingPos
=
this
.
cell
.
getPosition
();
if
(
z
!=
""
&&
z
!=
null
&&
z
!==
undefined
){
if
(
z
>
startingPos
.
z
){
//ignore z up moves
this
.
_setPosition
(
_
.
values
(
this
.
meshes
).
concat
(
this
.
cell
),
z
,
"
z
"
);
callback
();
return
;
}
}
else
{
this
.
_setPosition
(
_
.
values
(
this
.
meshes
).
concat
(
this
.
cell
),
x
,
"
x
"
);
this
.
_setPosition
(
_
.
values
(
this
.
meshes
).
concat
(
this
.
cell
),
y
,
"
y
"
);
callback
();
return
;
}
Machine
.
prototype
.
_moveTo
.
call
(
this
,
x
,
y
,
z
,
speed
,
wcs
,
callback
);
};
God
.
prototype
.
_moveAxis
=
function
(
startingPos
,
target
,
axis
,
speed
,
callback
){
if
(
target
==
null
||
target
===
undefined
)
{
callback
();
return
;
}
this
.
_animateObjects
([
this
.
cell
],
axis
,
speed
,
startingPos
,
target
,
callback
);
};
God
.
prototype
.
_postPickUpStock
=
function
(
exporter
,
stockPosition
,
rapidHeight
,
wcs
,
safeHeight
){
var
data
=
""
;
data
+=
exporter
.
rapidZ
(
stockPosition
.
z
-
wcs
.
z
+
safeHeight
);
data
+=
exporter
.
moveZ
(
stockPosition
.
z
-
wcs
.
z
);
return
data
;
};
God
.
prototype
.
_postReleaseStock
=
function
(
cellPosition
,
cell
,
exporter
,
rapidHeight
,
wcs
,
safeHeight
){
var
data
=
""
;
var
cellPosition
=
cell
.
getPosition
();
data
+=
exporter
.
rapidXY
(
cellPosition
.
x
-
wcs
.
x
,
cellPosition
.
y
-
wcs
.
y
);
data
+=
exporter
.
addComment
(
"
get stock
"
);
data
+=
exporter
.
rapidZ
(
cellPosition
.
z
-
wcs
.
z
+
safeHeight
);
data
+=
exporter
.
moveZ
(
cellPosition
.
z
-
wcs
.
z
);
data
+=
exporter
.
addComment
(
JSON
.
stringify
(
cell
.
indices
));
data
+=
exporter
.
moveZ
(
cellPosition
.
z
-
wcs
.
z
+
safeHeight
);
return
data
;
};
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment