printrun-src/testfiles/belt_pulley3.skeinforge.small.svg

Sun, 09 Sep 2018 00:21:30 +0200

author
mdd
date
Sun, 09 Sep 2018 00:21:30 +0200
changeset 40
9cb74db14c42
parent 15
0bbb006204fc
permissions
-rw-r--r--

hardware axis speedtest

<?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>

mercurial