Printrun/testfiles/belt_pulley3.skeinforge.sma...

516 lines
27 KiB
XML

<?xml version='1.0' standalone='no'?>
<!--Written in KDevelop (http://www.kdevelop.org/)-->
<svg baseProfile='full' contentScriptType='text/ecmascript' contentStyleType='text/css' height='4003.518px' onload='init()' preserveAspectRatio='xMidYMid meet' version='1.0' width='516.0px' xmlns='http://www.w3.org/2000/svg' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:slice='http://www.reprap.org/slice' xmlns:xlink='http://www.w3.org/1999/xlink' zoomAndPan='magnify'>
<metadata>
<slice:layers id='sliceData' controlBoxHeight='720' controlBoxWidth='240' decimalPlacesCarried='4' edgeWidth='0.72' layerHeight='0.4' margin='20' marginTop='60' maxX='11.919' maxY='11.919' maxZ='10.0' minX='-11.919' minY='-11.919' minZ='-2.0' procedureName='carve' svgMinWidth='516' template='svg_layer' textHeight='22.5' unitScale='3.7' version='0.1' yAxisPointingUpward='true' />
</metadata>
<script type='text/ecmascript'>
<![CDATA[
globalMetadata = document.getElementsByTagNameNS('http://www.reprap.org/slice', 'layers')[0];
globalSliceMinX = globalMetadata.getAttribute('minX') * 1;
globalSliceMaxX = globalMetadata.getAttribute('maxX') * 1;
globalSliceMinY = globalMetadata.getAttribute('minY') * 1;
globalSliceMaxY = globalMetadata.getAttribute('maxY') * 1;
globalSliceMinZ = globalMetadata.getAttribute('minZ') * 1;
globalSliceMaxZ = globalMetadata.getAttribute('maxZ') * 1;
//Control var's
globalLayerIndex = 0; //Number of currently viewed layer (zero index)
globalLatitude = 60.0;
globalLongitude = 45.0;
globalControlBoxHeight = globalMetadata.getAttribute('controlBoxHeight') * 1;
globalControlBoxWidth = globalMetadata.getAttribute('controlBoxWidth') * 1;
globalSliding = false;
globalObserving = false
//Display var's
globalMargin = globalMetadata.getAttribute('margin') * 1;
globalMarginTop = globalMetadata.getAttribute('marginTop') * 1;
globalDimensionX = globalSliceMaxX - globalSliceMinX;
globalDimensionY = globalSliceMaxY - globalSliceMinY;
globalDimensionZ = globalSliceMaxZ - globalSliceMinZ;
magnitudeXYSquared = globalDimensionX * globalDimensionX + globalDimensionY * globalDimensionY;
globalDimensionMagnitude = Math.sqrt(magnitudeXYSquared + globalDimensionZ * globalDimensionZ);
globalGlobeTravelRadian = 0.0;
globalGlobeInnerObserverRadius = 0.0;
globalTextHeight = globalMetadata.getAttribute('textHeight') * 1.0;
globalUnitScale = globalMetadata.getAttribute('unitScale') * 1.0;
globalXOffset = globalControlBoxWidth + globalMargin + globalMargin;
globalYOffset = globalMargin + globalMarginTop;
globalZoomScale = 1.0; //Default 1:1 may need smaller scale for large objects
globalScale = globalUnitScale * globalZoomScale;
//Globals to be set in init
globalLayers = [];
globalSlider = 0;
globalThumb = 0;
globalThumbRadius = 0.0;
globalSliderWidthMinusDiameter = 0.0;
function changeScale(newScale) {
globalZoomScale = newScale;
globalScale = globalUnitScale * globalZoomScale;
if (globalZoomScale >=1) { //dont scale line thickness for large display scale
document.getElementById('layerData').setAttributeNS(null, 'stroke-width', 2.0 / (globalScale));
}
}
function changeScaleIso(newScale) {
changeScale(newScale);
viewIso();
}
function changeScaleLayer(newScale) {
changeScale(newScale);
viewLayer();
}
function changeScaleScroll(newScale) {
changeScale(newScale);
viewScroll();
}
function displayIso(latitude, longitude) {
latitude = Math.max(0.0, latitude);
latitude = Math.min(89.0, latitude);
globalLatitude = Math.round(latitude);
globalLongitude = Math.round((longitude + 540.0) % 360.0) - 180.0;
latitudeRadians = getRadians(globalLatitude);
longitudeWiddershinsRadians = getRadians(90.0 - globalLongitude);
unitX = Math.cos(longitudeWiddershinsRadians);
unitY = Math.sin(longitudeWiddershinsRadians);
latitudeOverLayers = globalDimensionZ / globalLayers.length;
globalOneOverUnitScaleString = (1.0 / globalUnitScale).toString();
yScale = -1.0 * globalScale * Math.cos(latitudeRadians);
scaleRotateCenterString = ' scale(' + globalScale + ', ' + yScale + ')';
scaleRotateCenterString += ' rotate(' + (-1.0 * globalLongitude).toString() + ')';
centerX = (-0.5 * globalDimensionX - globalSliceMinX).toString();
centerY = (-0.5 * globalDimensionY - globalSliceMinY).toString();
scaleRotateCenterString += ' translate(' + centerX + ', ' + centerY + ')';
x = 0.5 * globalDimensionMagnitude * globalScale + globalXOffset;
halfLengthMinusOne = 0.5 * (globalLayers.length - 1);
for (var i in globalLayers) {
latitudeZSin = Math.sin(latitudeRadians) * (i - halfLengthMinusOne) * latitudeOverLayers
y = globalScale * (0.5 * globalDimensionMagnitude - latitudeZSin) + globalYOffset;
// y = globalDimensionY * globalScale + globalYOffset - i * unitY * latitudeOverLayers;
transformString = ' translate(' + x + ', ' + y + ')';
globalLayers[i].setAttributeNS(null, 'transform', transformString + scaleRotateCenterString);
}
setText('latitudeIso', 'Latitude: ' + globalLatitude.toString() + '°');
setText('longitudeIso', 'Longitude: ' + globalLongitude.toString() + '°');
globeMoveableRadius = globalGlobeTravelRadian * latitudeRadians + globalGlobeInnerObserverRadius;
globalObserver.setAttribute('cx', globalGlobeCenterX + unitX * globeMoveableRadius);
globalObserver.setAttribute('cy', globalGlobeCenterY - unitY * globeMoveableRadius);
}
function displayIsoByLatitude(latitude) {
displayIso(latitude, globalLongitude);
}
function displayIsoByLongitude(longitude) {
displayIso(globalLatitude, longitude);
}
function displayLayer(layerNum) {
if (globalLayers.length <= 1) {
document.getElementById('maxIndexLayer').setAttributeNS(null, 'visibility', 'hidden');
document.getElementById('minIndexLayer').setAttributeNS(null, 'visibility', 'hidden');
globalSlider.setAttributeNS(null, 'visibility', 'hidden');
globalThumb.setAttributeNS(null, 'visibility', 'hidden');
}
if (layerNum <= 0) {
document.getElementById('decreaseLayerIndex').setAttributeNS(null, 'visibility', 'hidden');
}
else {
document.getElementById('decreaseLayerIndex').setAttributeNS(null, 'visibility', 'visible');
}
if (layerNum >= globalLayers.length - 1) {
document.getElementById('increaseLayerIndex').setAttributeNS(null, 'visibility', 'hidden');
}
else {
document.getElementById('increaseLayerIndex').setAttributeNS(null, 'visibility', 'visible');
}
if (layerNum < 0 || layerNum >= globalLayers.length) {
return
}
globalLayers[globalLayerIndex].setAttributeNS(null, 'visibility', 'hidden');
currentLayerElement = globalLayers[layerNum]
currentLayerElement.setAttributeNS(null, 'visibility', 'visible');
globalLayerIndex = layerNum;
setText('currentIndexLayer', 'Layer: ' + globalLayerIndex.toString() + ', ' + currentLayerElement.getAttribute('id'));
//Slider
if (!globalSliding) {
placeThumb(globalSliderWidthMinusDiameter / (globalLayers.length - 1) * globalLayerIndex + globalThumbRadius);
}
}
function getDegrees(radians) {
return radians / Math.PI * 180.0;
}
function getRadians(degrees) {
return degrees / 180.0 * Math.PI;
}
function getScaleTransformString(scale) {
scaleTransformString = 'scale(' + scale + ' ' + (scale * - 1)
return scaleTransformString + ') translate(' + (globalSliceMinX * - 1) + ' ' + (globalSliceMinY * - 1) + ')';
}
function getWidth() {
return (globalDimensionX * globalScale) + globalXOffset
}
function hideElements(elementNames) {
for (var elementNameIndex in elementNames) {
document.getElementById(elementNames[elementNameIndex]).setAttributeNS(null, 'visibility', 'hidden');
}
}
function init() {
//Find only layer groups
globe = document.getElementById('globe');
globalGlobeCenterX = globe.getAttribute('cx') * 1;
globalGlobeCenterXWindow = globalGlobeCenterX + globalMargin;
globalGlobeCenterY = globe.getAttribute('cy') * 1;
globalGlobeCenterYWindow = globalGlobeCenterX + globalMarginTop;
globalObserver = document.getElementById('observer');
globeRadius = globe.getAttribute('r') * 1.0;
observerRadius = globalObserver.getAttribute('r') * 1.0;
globalGlobeInnerObserverRadius = document.getElementById('cover').getAttribute('r') * 1.0 + observerRadius;
globalGlobeTravelRadian = getDegrees(globeRadius - globalGlobeInnerObserverRadius - observerRadius) / 89.0;
globalSlider = document.getElementById('slider');
globalSliderX = globalSlider.getAttribute('x') * 1;
globalSliderXWindow = globalSliderX + globalMargin
globalThumb = document.getElementById('thumb');
globalThumbRadius = globalThumb.getAttribute('r') * 1;
globalSliderWidthMinusRadius = globalSlider.getAttribute('width') * 1 - globalThumbRadius;
globalSliderWidthMinusDiameter = globalSliderWidthMinusRadius - globalThumbRadius;
var allGroups = document.getElementsByTagName('g');
for (var i = 0; i < allGroups.length; i++) {
if (allGroups[i].id.indexOf('z:') == 0) {
globalLayers.push(allGroups[i]);
}
}
//Slider
layerControlBox = document.getElementById('layerControlBox');
layerControlBox.addEventListener('mouseup', sliderUp, false);
layerControlBox.addEventListener('mousemove', sliderMove, false);
globalSlider.addEventListener('mousedown', sliderDownMove, false);
globalThumb.addEventListener('mousedown', sliderDownMove, false);
//Observer
isoControlBox = document.getElementById('isoControlBox');
isoControlBox.addEventListener('mouseup', observerUp, false);
isoControlBox.addEventListener('mousemove', observerMove, false);
globe.addEventListener('mousedown', observerDownMove, false);
globalObserver.addEventListener('mousedown', observerDownMove, false);
//Control box data
setText('maxIndexLayer', globalLayers.length - 1);
changeScaleLayer(globalZoomScale);
}
function observerDown(event) {
globalObserving = true;
}
function observerDownMove(event) {
globalObserving = true;
observerMove(event);
}
function observerMove(event) {
if (!globalObserving) {
return;
}
observerX = event.clientX - globalGlobeCenterXWindow + window.pageXOffset;
observerY = event.clientY - globalGlobeCenterYWindow + window.pageYOffset;
distanceFromCenter = Math.sqrt(observerX * observerX + observerY * observerY);
latitudeRadians = (distanceFromCenter - globalGlobeInnerObserverRadius) / globalGlobeTravelRadian;
longitudeRadians = Math.atan2(observerX, -observerY);
displayIso(getDegrees(latitudeRadians), getDegrees(longitudeRadians));
}
function observerUp(event) {
globalObserving = false;
}
function placeThumb(value) {
if (globalLayers.length > 1) {
globalThumb.setAttribute('cx', globalSliderX + value);
}
}
function setScaleText(scaleID) {
setText(scaleID, ': ' + globalZoomScale);
}
function setSVG(width, height) {
rootSVG = document.getElementsByTagName('svg')[0];
svgMinWidth = globalMetadata.getAttribute('svgMinWidth') * 1;
height = Math.max(globalControlBoxHeight + globalMargin + globalMarginTop, height);
width = Math.max(svgMinWidth, width);
rootSVG.setAttributeNS(null, 'width', width + 'px')
rootSVG.setAttributeNS(null, 'height', height + 'px')
}
function setText(id, str) {
e = document.getElementById(id)
if (e != null)
e.firstChild.nodeValue = str;
}
function showElements(elementNames) {
for (var elementNameIndex in elementNames) {
document.getElementById(elementNames[elementNameIndex]).setAttributeNS(null, 'visibility', 'visible');
}
}
function sliderDown(event) {
globalSliding = true;
}
function sliderDownMove(event) {
globalSliding = true;
sliderMove(event);
}
function sliderMove(event) {
if (!globalSliding) {
return;
}
value = event.clientX - globalSliderXWindow + window.pageXOffset;
if (value >= globalThumbRadius && value <= globalSliderWidthMinusRadius) {
placeThumb(value);
zoneWidth = globalSliderWidthMinusDiameter / (globalLayers.length);
newLayer = Math.round((value - globalThumbRadius - 0.5 * zoneWidth) / zoneWidth)
if (newLayer != globalLayerIndex) {
displayLayer(newLayer)
}
}
}
function sliderUp(event) {
globalSliding = false;
}
function viewIso() {
height = (globalDimensionMagnitude * globalScale) + globalYOffset;
setSVG((globalDimensionMagnitude * globalScale) + globalXOffset, height);
for (var i in globalLayers) {
// globalLayers[i].setAttributeNS(null, 'transform', 'translate(' + globalMargin + ' ' + height + ')');
globalLayers[i].setAttributeNS(null, 'visibility', 'visible');
globalLayers[i].getElementsByTagName('text')[0].setAttributeNS(null, 'visibility', 'hidden');
pathElements = globalLayers[i].getElementsByTagName('path');
for (var pathElementIndex = 0; pathElementIndex < pathElements.length; pathElementIndex++) {
pathElements[pathElementIndex].setAttributeNS(null, 'transform', '');
}
}
//show control box
hideElements(['decreaseLayerIndex', 'increaseLayerIndex', 'isoViewButton', 'layerControlBox', 'layerViewLabel', 'scrollControlBox', 'scrollViewLabel']);
showElements(['isoControlBox', 'isoViewLabel', 'layerViewButton', 'scrollViewButton']);
displayIso(globalLatitude, globalLongitude);
setScaleText('scaleIso');
}
function viewLayer() {
//Set svg size and view port
height = (globalDimensionY * globalScale) + globalYOffset;
setSVG(getWidth(), height);
//move and hide all layers
for (var i in globalLayers) {
globalLayers[i].setAttributeNS(null, 'transform', 'translate(' + globalXOffset + ' ' + height + ')');
globalLayers[i].setAttributeNS(null, 'visibility', 'hidden');
globalLayers[i].getElementsByTagName('text')[0].setAttributeNS(null, 'visibility', 'hidden');
transform = getScaleTransformString(globalScale);
pathElements = globalLayers[i].getElementsByTagName('path');
for (var pathElementIndex = 0; pathElementIndex < pathElements.length; pathElementIndex++) {
pathElements[pathElementIndex].setAttributeNS(null, 'transform', transform);
}
}
//show control box
hideElements(['isoControlBox', 'isoViewLabel', 'layerViewButton', 'scrollControlBox', 'scrollViewLabel'])
showElements(['isoViewButton', 'layerControlBox', 'layerViewLabel', 'scrollViewButton'])
//show current layer
displayLayer(globalLayerIndex);
setScaleText('scaleLayer');
}
function viewScroll() {
//Set svg size and view port
yDimensionScale = globalDimensionY * globalScale
singleHeight = (globalMargin + yDimensionScale + globalTextHeight)
height = globalLayers.length * singleHeight + globalMargin + globalMargin + globalYOffset;
setSVG(getWidth(), height);
//move and show all layers
for (var i in globalLayers) {
x = globalXOffset;
y = i * singleHeight + yDimensionScale + globalYOffset;
transform = getScaleTransformString(globalScale);
globalLayers[i].setAttributeNS(null, 'transform', 'translate(' + x + ', ' + y + ')');
pathElements = globalLayers[i].getElementsByTagName('path');
for (var pathElementIndex = 0; pathElementIndex < pathElements.length; pathElementIndex++) {
pathElements[pathElementIndex].setAttributeNS(null, 'transform', transform);
}
globalLayers[i].setAttributeNS(null, 'visibility', 'visible');
globalLayers[i].getElementsByTagName('text')[0].setAttributeNS(null, 'visibility', 'visible');
}
//show control box
hideElements(['isoControlBox', 'isoViewLabel', 'layerControlBox', 'layerViewLabel', 'scrollViewButton'])
showElements(['isoViewButton', 'layerViewButton', 'scrollControlBox', 'scrollViewLabel'])
setScaleText('scaleScroll');
}
]]>
</script>
<title >belt_pulley3.stl - Slice Layers</title>
<!--Begin Layer Data -->
<g id='layerData' fill='#556B2F' fill-rule='evenodd' font-family='Arial' font-size='15px' font-weight='bold' inkscape:groupmode='layer' inkscape:label='Slice Layers' stroke='#00F' stroke-width='0.54px'>
<!--id='sliceElementTemplate' must be there or else the slice template will not be found-->
<g id='z:-1.8' inkscape:groupmode='layer' inkscape:label='Layer 0, z:-1.8' transform='translate(280.0, 168.2006)'>
<!--id='layerTextTemplate' must be there so that the text could be removed if necessary-->
<text id='layerTextTemplate-1.8' fill='#000' stroke='none' y='15' >Layer 0, z:-1.8</text>
<path d='M -11.6336 1.4126 L -11.719 0.0 L -11.6336 -1.4126 L -11.3785 -2.8045 L -10.9575 -4.1556 L -10.3766 -5.4461 L -9.6445 -6.6571 L -8.7718 -7.7711 L -7.7711 -8.7718 L -6.6571 -9.6445 L -5.4461 -10.3766 L -4.1556 -10.9575 L -2.8045 -11.3785 L -1.4126 -11.6336 L 0.0 -11.719 L 1.4126 -11.6336 L 2.8045 -11.3785 L 4.1556 -10.9575 L 5.4461 -10.3766 L 6.6571 -9.6445 L 7.7711 -8.7718 L 8.7718 -7.7711 L 9.6445 -6.6571 L 10.3766 -5.4461 L 10.9575 -4.1556 L 11.3785 -2.8045 L 11.6336 -1.4126 L 11.719 0.0 L 11.6336 1.4126 L 11.3785 2.8045 L 10.9575 4.1556 L 10.3766 5.4461 L 9.6445 6.6571 L 8.7718 7.7711 L 7.7711 8.7718 L 6.6571 9.6445 L 5.4461 10.3766 L 4.1556 10.9575 L 2.8045 11.3785 L 1.4126 11.6336 L 0.0 11.719 L -1.4126 11.6336 L -2.8045 11.3785 L -4.1556 10.9575 L -5.4461 10.3766 L -6.6571 9.6445 L -7.7711 8.7718 L -8.7718 7.7711 L -9.6445 6.6571 L -10.3766 5.4461 L -10.9575 4.1556 L -11.3785 2.8045 z M -4.0 -1.5 L -4.0 1.5 L -6.8343 1.5 L -6.6072 2.3119 L -6.3068 3.0372 L -5.9271 3.7242 L -5.4728 4.3644 L -4.9497 4.9497 L -4.3644 5.4728 L -3.7242 5.9271 L -3.0372 6.3068 L -2.3119 6.6072 L -1.5 6.8343 L -1.5 4.0 L 1.5 4.0 L 1.5 6.8343 L 2.3119 6.6072 L 3.0372 6.3068 L 3.7242 5.9271 L 4.3644 5.4728 L 4.9497 4.9497 L 5.4728 4.3644 L 5.9271 3.7242 L 6.3068 3.0372 L 6.6072 2.3119 L 6.8343 1.5 L 4.0 1.5 L 4.0 -1.5 L 6.8343 -1.5 L 6.6072 -2.3119 L 6.3068 -3.0372 L 5.9271 -3.7242 L 5.4728 -4.3644 L 4.9497 -4.9497 L 4.3644 -5.4728 L 3.7242 -5.9271 L 3.0372 -6.3068 L 2.3119 -6.6072 L 1.5 -6.8343 L 1.5 -4.0 L -1.5 -4.0 L -1.5 -6.8343 L -2.3119 -6.6072 L -3.0372 -6.3068 L -3.7242 -5.9271 L -4.3644 -5.4728 L -4.9497 -4.9497 L -5.4728 -4.3644 L -5.9271 -3.7242 L -6.3068 -3.0372 L -6.6072 -2.3119 L -6.8343 -1.5 z' transform='scale(3.7, -3.7) translate(11.919, 11.919)' />
</g>
<g id='z:-1.4' inkscape:groupmode='layer' inkscape:label='Layer 1, z:-1.4' transform='translate(280.0, 298.9012)'>
<!--id='layerTextTemplate' must be there so that the text could be removed if necessary-->
<text id='layerTextTemplate-1.4' fill='#000' stroke='none' y='15' >Layer 1, z:-1.4</text>
<path d='M -11.2365 1.3644 L -11.319 0.0 L -11.2365 -1.3644 L -10.9901 -2.7088 L -10.5835 -4.0138 L -10.0224 -5.2602 L -9.3154 -6.4299 L -8.4724 -7.5059 L -7.5059 -8.4724 L -6.4299 -9.3154 L -5.2602 -10.0224 L -4.0138 -10.5835 L -2.7088 -10.9901 L -1.3644 -11.2365 L 0.0 -11.319 L 1.3644 -11.2365 L 2.7088 -10.9901 L 4.0138 -10.5835 L 5.2602 -10.0224 L 6.4299 -9.3154 L 7.5059 -8.4724 L 8.4724 -7.5059 L 9.3154 -6.4299 L 10.0224 -5.2602 L 10.5835 -4.0138 L 10.9901 -2.7088 L 11.2365 -1.3644 L 11.319 0.0 L 11.2365 1.3644 L 10.9901 2.7088 L 10.5835 4.0138 L 10.0224 5.2602 L 9.3154 6.4299 L 8.4724 7.5059 L 7.5059 8.4724 L 6.4299 9.3154 L 5.2602 10.0224 L 4.0138 10.5835 L 2.7088 10.9901 L 1.3644 11.2365 L 0.0 11.319 L -1.3644 11.2365 L -2.7088 10.9901 L -4.0138 10.5835 L -5.2602 10.0224 L -6.4299 9.3154 L -7.5059 8.4724 L -8.4724 7.5059 L -9.3154 6.4299 L -10.0224 5.2602 L -10.5835 4.0138 L -10.9901 2.7088 z M -4.0 -1.5 L -4.0 1.5 L -6.8343 1.5 L -6.6072 2.3119 L -6.3068 3.0372 L -5.9271 3.7242 L -5.4728 4.3644 L -4.9497 4.9497 L -4.3644 5.4728 L -3.7242 5.9271 L -3.0372 6.3068 L -2.3119 6.6072 L -1.5 6.8343 L -1.5 4.0 L 1.5 4.0 L 1.5 6.8343 L 2.3119 6.6072 L 3.0372 6.3068 L 3.7242 5.9271 L 4.3644 5.4728 L 4.9497 4.9497 L 5.4728 4.3644 L 5.9271 3.7242 L 6.3068 3.0372 L 6.6072 2.3119 L 6.8343 1.5 L 4.0 1.5 L 4.0 -1.5 L 6.8343 -1.5 L 6.6072 -2.3119 L 6.3068 -3.0372 L 5.9271 -3.7242 L 5.4728 -4.3644 L 4.9497 -4.9497 L 4.3644 -5.4728 L 3.7242 -5.9271 L 3.0372 -6.3068 L 2.3119 -6.6072 L 1.5 -6.8343 L 1.5 -4.0 L -1.5 -4.0 L -1.5 -6.8343 L -2.3119 -6.6072 L -3.0372 -6.3068 L -3.7242 -5.9271 L -4.3644 -5.4728 L -4.9497 -4.9497 L -5.4728 -4.3644 L -5.9271 -3.7242 L -6.3068 -3.0372 L -6.6072 -2.3119 L -6.8343 -1.5 z' transform='scale(3.7, -3.7) translate(11.919, 11.919)' />
</g>
</g>
<!--End Layer Data-->
<!--beginningOfControlSection='true' must be there or else the control boxes will be carved-->
<g id='controls' beginningOfControlSection='true' inkscape:groupmode='layer' inkscape:label='Controls'>
<!--id='isoControlBox' must be there so that the controls could be removed if necessary-->
<g id='isoControlBox' fill='#000' font-family='Arial' font-size='15px' font-weight='bold' transform='translate(20, 60)' visibility='hidden'>
<rect fill='silver' height='720' stroke='gray' stroke-width='4px' width='240' />
<circle id='globe' cx='120' cy='120' fill='gray' r='100' />
<circle id='cover' cx='120' cy='120' fill='silver' r='33' />
<circle id='observer' fill='darkslateblue' r='12' />
<text id='latitudeIso' x='20' y='260' >Latitude</text>
<text fill='darkslateblue' onclick='displayIsoByLatitude(globalLatitude-1.0)' x='198' y='260' >&lt;</text>
<text fill='darkslateblue' onclick='displayIsoByLatitude(globalLatitude+1.0)' x='213' y='260' >&gt;</text>
<text id='longitudeIso' x='20' y='280' >Longitude</text>
<text fill='darkslateblue' onclick='displayIsoByLongitude(globalLongitude-1.0)' x='198' y='280' >&lt;</text>
<text fill='darkslateblue' onclick='displayIsoByLongitude(globalLongitude+1.0)' x='213' y='280' >&gt;</text>
<text x='20' y='300' >Scale</text>
<text id='scaleIso' x='65' y='300' >1</text>
<text fill='darkslateblue' onclick='changeScaleIso(globalZoomScale/2)' x='198' y='300' >&lt;</text>
<text fill='darkslateblue' onclick='changeScaleIso(globalZoomScale*2)' x='213' y='300' >&gt;</text>
<g transform='translate(20, 340)'>
<text >Min</text>
<text id='minXIso' y='20' >X: -11.919 mm</text>
<text id='minYIso' y='40' >Y: -11.919 mm</text>
<text id='minZIso' y='60' >Z: -2.0 mm</text>
</g>
<g transform='translate(20, 440)'>
<text >Max</text>
<text id='maxXIso' y='20' >X: 11.919 mm</text>
<text id='maxYIso' y='40' >Y: 11.919 mm</text>
<text id='maxZIso' y='60' >Z: 10.0 mm</text>
</g>
<g transform='translate(20, 540)'>
<text >Dimension</text>
<text id='dimXIso' y='20' >X: 23.838 mm</text>
<text id='dimYIso' y='40' >Y: 23.838 mm</text>
<text id='dimZIso' y='60' >Z: 12.0 mm</text>
</g>
<g transform='translate(20, 640)'>
<text >Statistics</text>
<text id='layerHeightIso' y='20' >Layer Height: 0.4 mm</text>
<text id='numberOfLayersIso' y='40' >Number of Layers: 30</text>
<text id='volumeIso' y='60' >Volume: 1.8836 cm3</text>
</g>
</g>
<!--id='layerControlBox' must be there so that the controls could be removed if necessary-->
<g id='layerControlBox' fill='#000' font-family='Arial' font-size='15px' font-weight='bold' transform='translate(20, 60)' visibility='hidden'>
<rect fill='silver' height='720' stroke='gray' stroke-width='4px' width='240' />
<path d='M 66 164 h76 v6 l18 -9 l-18 -9 v6 h-70 v-70 h6 l-9 -18 l-9 18 h6 z' stroke-width='0' />
<!--<path stroke='#000' stroke-width='3' d='M 20 20 h5 l-5 -10 l-5 10 h5 v35 h35 v-5 l10 5 l-10 5 v-5 h-35 z'/>-->
<text text-anchor='middle' x='68' y='64' >Y</text>
<text x='165' y='166' >X</text>
<text id='minIndexLayer' x='20' y='245' >0</text>
<rect id='slider' fill='gray' height='24' width='170' x='32' y='230' />
<circle id='thumb' cx='42' cy='242' fill='darkslateblue' r='12' />
<text id='maxIndexLayer' x='203' y='245' >1</text>
<text id='currentIndexLayer' x='20' y='280' >Layer</text>
<text id='decreaseLayerIndex' fill='darkslateblue' onclick='displayLayer(globalLayerIndex-1)' x='198' y='280' >&lt;</text>
<text id='increaseLayerIndex' fill='darkslateblue' onclick='displayLayer(globalLayerIndex+1)' x='213' y='280' >&gt;</text>
<text x='20' y='300' >Scale</text>
<text id='scaleLayer' x='65' y='300' >1</text>
<text fill='darkslateblue' onclick='changeScaleLayer(globalZoomScale/2)' x='198' y='300' >&lt;</text>
<text fill='darkslateblue' onclick='changeScaleLayer(globalZoomScale*2)' x='213' y='300' >&gt;</text>
<g transform='translate(20, 340)'>
<text >Min</text>
<text id='minXLayer' y='20' >X: -11.919 mm</text>
<text id='minYLayer' y='40' >Y: -11.919 mm</text>
<text id='minZLayer' y='60' >Z: -2.0 mm</text>
</g>
<g transform='translate(20, 440)'>
<text >Max</text>
<text id='maxXLayer' y='20' >X: 11.919 mm</text>
<text id='maxYLayer' y='40' >Y: 11.919 mm</text>
<text id='maxZLayer' y='60' >Z: 10.0 mm</text>
</g>
<g transform='translate(20, 540)'>
<text >Dimension</text>
<text id='dimXLayer' y='20' >X: 23.838 mm</text>
<text id='dimYLayer' y='40' >Y: 23.838 mm</text>
<text id='dimZLayer' y='60' >Z: 12.0 mm</text>
</g>
<g transform='translate(20, 640)'>
<text >Statistics</text>
<text id='layerHeightLayer' y='20' >Layer Height: 0.4 mm</text>
<text id='numberOfLayersLayer' y='40' >Number of Layers: 30</text>
<text id='volumeLayer' y='60' >Volume: 1.8836 cm3</text>
</g>
</g>
<!--id='scrollControlBox' must be there so that the controls could be removed if necessary-->
<g id='scrollControlBox' fill='#000' font-family='Arial' font-size='15px' font-weight='bold' transform='translate(20, 60)' visibility='visible'>
<rect fill='silver' height='720' stroke='gray' stroke-width='4px' width='240' />
<path d='M 66 164 h76 v6 l18 -9 l-18 -9 v6 h-70 v-70 h6 l-9 -18 l-9 18 h6 z' stroke-width='0' />
<text text-anchor='middle' x='68' y='64' >Y</text>
<text x='165' y='166' >X</text>
<text x='20' y='300' >Scale</text>
<text id='scaleScroll' x='65' y='300' >: 1</text>
<text fill='darkslateblue' onclick='changeScaleScroll(globalZoomScale/2)' x='198' y='300' >&lt;</text>
<text fill='darkslateblue' onclick='changeScaleScroll(globalZoomScale*2)' x='213' y='300' >&gt;</text>
<g transform='translate(20, 340)'>
<text >Min</text>
<text id='minXScroll' y='20' >X: -11.919 mm</text>
<text id='minYScroll' y='40' >Y: -11.919 mm</text>
<text id='minZScroll' y='60' >Z: -2.0 mm</text>
</g>
<g transform='translate(20, 440)'>
<text >Max</text>
<text id='maxXScroll' y='20' >X: 11.919 mm</text>
<text id='maxYScroll' y='40' >Y: 11.919 mm</text>
<text id='maxZScroll' y='60' >Z: 10.0 mm</text>
</g>
<g transform='translate(20, 540)'>
<text >Dimension</text>
<text id='dimXScroll' y='20' >X: 23.838 mm</text>
<text id='dimYScroll' y='40' >Y: 23.838 mm</text>
<text id='dimZScroll' y='60' >Z: 12.0 mm</text>
</g>
<g transform='translate(20, 640)'>
<text >Statistics</text>
<text id='layerHeightScroll' y='20' >Layer Height: 0.4 mm</text>
<text id='numberOfLayersScroll' y='40' >Number of Layers: 30</text>
<text id='volumeScroll' y='60' >Volume: 1.8836 cm3</text>
</g>
</g>
<text id='isoViewButton' fill='darkslateblue' font-size='18px' font-weight='normal' onclick='viewIso()' text-anchor='middle' visibility='visible' x='80' y='30' >[Iso View]</text>
<text id='isoViewLabel' fill='darkslateblue' font-size='24px' font-weight='bold' text-anchor='middle' visibility='hidden' x='76' y='30' >Iso View</text>
<text id='layerViewButton' fill='darkslateblue' font-size='18px' font-weight='normal' onclick='viewLayer()' text-anchor='middle' visibility='visible' x='240' y='30' >[Layer View]</text>
<text id='layerViewLabel' fill='darkslateblue' font-size='24px' font-weight='bold' text-anchor='middle' visibility='hidden' x='236' y='30' >Layer View</text>
<text id='scrollViewButton' fill='darkslateblue' font-size='18px' font-weight='normal' onclick='viewScroll()' text-anchor='middle' visibility='hidden' x='400' y='30' >[Scroll View]</text>
<text id='scrollViewLabel' fill='darkslateblue' font-size='24px' font-weight='bold' text-anchor='middle' visibility='visible' x='396' y='30' >Scroll View</text>
</g>
</svg>