Sat, 04 Jun 2016 12:41:32 +0200
Added the Lasercut settings to the pronterface options dialog
(default settings when used without pronterwindow)
15 | 1 | <?xml version='1.0' standalone='no'?> |
2 | <!--Written in KDevelop (http://www.kdevelop.org/)--> | |
3 | <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'> | |
4 | <metadata> | |
5 | <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' /> | |
6 | </metadata> | |
7 | <script type='text/ecmascript'> | |
8 | <![CDATA[ | |
9 | globalMetadata = document.getElementsByTagNameNS('http://www.reprap.org/slice', 'layers')[0]; | |
10 | globalSliceMinX = globalMetadata.getAttribute('minX') * 1; | |
11 | globalSliceMaxX = globalMetadata.getAttribute('maxX') * 1; | |
12 | globalSliceMinY = globalMetadata.getAttribute('minY') * 1; | |
13 | globalSliceMaxY = globalMetadata.getAttribute('maxY') * 1; | |
14 | globalSliceMinZ = globalMetadata.getAttribute('minZ') * 1; | |
15 | globalSliceMaxZ = globalMetadata.getAttribute('maxZ') * 1; | |
16 | ||
17 | //Control var's | |
18 | globalLayerIndex = 0; //Number of currently viewed layer (zero index) | |
19 | globalLatitude = 60.0; | |
20 | globalLongitude = 45.0; | |
21 | globalControlBoxHeight = globalMetadata.getAttribute('controlBoxHeight') * 1; | |
22 | globalControlBoxWidth = globalMetadata.getAttribute('controlBoxWidth') * 1; | |
23 | globalSliding = false; | |
24 | globalObserving = false | |
25 | ||
26 | //Display var's | |
27 | globalMargin = globalMetadata.getAttribute('margin') * 1; | |
28 | globalMarginTop = globalMetadata.getAttribute('marginTop') * 1; | |
29 | globalDimensionX = globalSliceMaxX - globalSliceMinX; | |
30 | globalDimensionY = globalSliceMaxY - globalSliceMinY; | |
31 | globalDimensionZ = globalSliceMaxZ - globalSliceMinZ; | |
32 | magnitudeXYSquared = globalDimensionX * globalDimensionX + globalDimensionY * globalDimensionY; | |
33 | globalDimensionMagnitude = Math.sqrt(magnitudeXYSquared + globalDimensionZ * globalDimensionZ); | |
34 | globalGlobeTravelRadian = 0.0; | |
35 | globalGlobeInnerObserverRadius = 0.0; | |
36 | globalTextHeight = globalMetadata.getAttribute('textHeight') * 1.0; | |
37 | globalUnitScale = globalMetadata.getAttribute('unitScale') * 1.0; | |
38 | globalXOffset = globalControlBoxWidth + globalMargin + globalMargin; | |
39 | globalYOffset = globalMargin + globalMarginTop; | |
40 | globalZoomScale = 1.0; //Default 1:1 may need smaller scale for large objects | |
41 | globalScale = globalUnitScale * globalZoomScale; | |
42 | ||
43 | //Globals to be set in init | |
44 | globalLayers = []; | |
45 | globalSlider = 0; | |
46 | globalThumb = 0; | |
47 | globalThumbRadius = 0.0; | |
48 | globalSliderWidthMinusDiameter = 0.0; | |
49 | ||
50 | ||
51 | function changeScale(newScale) { | |
52 | globalZoomScale = newScale; | |
53 | globalScale = globalUnitScale * globalZoomScale; | |
54 | if (globalZoomScale >=1) { //dont scale line thickness for large display scale | |
55 | document.getElementById('layerData').setAttributeNS(null, 'stroke-width', 2.0 / (globalScale)); | |
56 | } | |
57 | } | |
58 | ||
59 | function changeScaleIso(newScale) { | |
60 | changeScale(newScale); | |
61 | viewIso(); | |
62 | } | |
63 | ||
64 | function changeScaleLayer(newScale) { | |
65 | changeScale(newScale); | |
66 | viewLayer(); | |
67 | } | |
68 | ||
69 | function changeScaleScroll(newScale) { | |
70 | changeScale(newScale); | |
71 | viewScroll(); | |
72 | } | |
73 | ||
74 | function displayIso(latitude, longitude) { | |
75 | latitude = Math.max(0.0, latitude); | |
76 | latitude = Math.min(89.0, latitude); | |
77 | globalLatitude = Math.round(latitude); | |
78 | globalLongitude = Math.round((longitude + 540.0) % 360.0) - 180.0; | |
79 | latitudeRadians = getRadians(globalLatitude); | |
80 | longitudeWiddershinsRadians = getRadians(90.0 - globalLongitude); | |
81 | unitX = Math.cos(longitudeWiddershinsRadians); | |
82 | unitY = Math.sin(longitudeWiddershinsRadians); | |
83 | latitudeOverLayers = globalDimensionZ / globalLayers.length; | |
84 | globalOneOverUnitScaleString = (1.0 / globalUnitScale).toString(); | |
85 | yScale = -1.0 * globalScale * Math.cos(latitudeRadians); | |
86 | scaleRotateCenterString = ' scale(' + globalScale + ', ' + yScale + ')'; | |
87 | scaleRotateCenterString += ' rotate(' + (-1.0 * globalLongitude).toString() + ')'; | |
88 | centerX = (-0.5 * globalDimensionX - globalSliceMinX).toString(); | |
89 | centerY = (-0.5 * globalDimensionY - globalSliceMinY).toString(); | |
90 | scaleRotateCenterString += ' translate(' + centerX + ', ' + centerY + ')'; | |
91 | x = 0.5 * globalDimensionMagnitude * globalScale + globalXOffset; | |
92 | halfLengthMinusOne = 0.5 * (globalLayers.length - 1); | |
93 | for (var i in globalLayers) { | |
94 | latitudeZSin = Math.sin(latitudeRadians) * (i - halfLengthMinusOne) * latitudeOverLayers | |
95 | y = globalScale * (0.5 * globalDimensionMagnitude - latitudeZSin) + globalYOffset; | |
96 | // y = globalDimensionY * globalScale + globalYOffset - i * unitY * latitudeOverLayers; | |
97 | transformString = ' translate(' + x + ', ' + y + ')'; | |
98 | globalLayers[i].setAttributeNS(null, 'transform', transformString + scaleRotateCenterString); | |
99 | } | |
100 | setText('latitudeIso', 'Latitude: ' + globalLatitude.toString() + '°'); | |
101 | setText('longitudeIso', 'Longitude: ' + globalLongitude.toString() + '°'); | |
102 | globeMoveableRadius = globalGlobeTravelRadian * latitudeRadians + globalGlobeInnerObserverRadius; | |
103 | globalObserver.setAttribute('cx', globalGlobeCenterX + unitX * globeMoveableRadius); | |
104 | globalObserver.setAttribute('cy', globalGlobeCenterY - unitY * globeMoveableRadius); | |
105 | } | |
106 | ||
107 | function displayIsoByLatitude(latitude) { | |
108 | displayIso(latitude, globalLongitude); | |
109 | } | |
110 | ||
111 | function displayIsoByLongitude(longitude) { | |
112 | displayIso(globalLatitude, longitude); | |
113 | } | |
114 | ||
115 | function displayLayer(layerNum) { | |
116 | if (globalLayers.length <= 1) { | |
117 | document.getElementById('maxIndexLayer').setAttributeNS(null, 'visibility', 'hidden'); | |
118 | document.getElementById('minIndexLayer').setAttributeNS(null, 'visibility', 'hidden'); | |
119 | globalSlider.setAttributeNS(null, 'visibility', 'hidden'); | |
120 | globalThumb.setAttributeNS(null, 'visibility', 'hidden'); | |
121 | } | |
122 | if (layerNum <= 0) { | |
123 | document.getElementById('decreaseLayerIndex').setAttributeNS(null, 'visibility', 'hidden'); | |
124 | } | |
125 | else { | |
126 | document.getElementById('decreaseLayerIndex').setAttributeNS(null, 'visibility', 'visible'); | |
127 | } | |
128 | if (layerNum >= globalLayers.length - 1) { | |
129 | document.getElementById('increaseLayerIndex').setAttributeNS(null, 'visibility', 'hidden'); | |
130 | } | |
131 | else { | |
132 | document.getElementById('increaseLayerIndex').setAttributeNS(null, 'visibility', 'visible'); | |
133 | } | |
134 | if (layerNum < 0 || layerNum >= globalLayers.length) { | |
135 | return | |
136 | } | |
137 | globalLayers[globalLayerIndex].setAttributeNS(null, 'visibility', 'hidden'); | |
138 | currentLayerElement = globalLayers[layerNum] | |
139 | currentLayerElement.setAttributeNS(null, 'visibility', 'visible'); | |
140 | globalLayerIndex = layerNum; | |
141 | setText('currentIndexLayer', 'Layer: ' + globalLayerIndex.toString() + ', ' + currentLayerElement.getAttribute('id')); | |
142 | //Slider | |
143 | if (!globalSliding) { | |
144 | placeThumb(globalSliderWidthMinusDiameter / (globalLayers.length - 1) * globalLayerIndex + globalThumbRadius); | |
145 | } | |
146 | } | |
147 | ||
148 | function getDegrees(radians) { | |
149 | return radians / Math.PI * 180.0; | |
150 | } | |
151 | ||
152 | function getRadians(degrees) { | |
153 | return degrees / 180.0 * Math.PI; | |
154 | } | |
155 | ||
156 | function getScaleTransformString(scale) { | |
157 | scaleTransformString = 'scale(' + scale + ' ' + (scale * - 1) | |
158 | return scaleTransformString + ') translate(' + (globalSliceMinX * - 1) + ' ' + (globalSliceMinY * - 1) + ')'; | |
159 | } | |
160 | ||
161 | function getWidth() { | |
162 | return (globalDimensionX * globalScale) + globalXOffset | |
163 | } | |
164 | ||
165 | function hideElements(elementNames) { | |
166 | for (var elementNameIndex in elementNames) { | |
167 | document.getElementById(elementNames[elementNameIndex]).setAttributeNS(null, 'visibility', 'hidden'); | |
168 | } | |
169 | } | |
170 | ||
171 | function init() { | |
172 | //Find only layer groups | |
173 | globe = document.getElementById('globe'); | |
174 | globalGlobeCenterX = globe.getAttribute('cx') * 1; | |
175 | globalGlobeCenterXWindow = globalGlobeCenterX + globalMargin; | |
176 | globalGlobeCenterY = globe.getAttribute('cy') * 1; | |
177 | globalGlobeCenterYWindow = globalGlobeCenterX + globalMarginTop; | |
178 | globalObserver = document.getElementById('observer'); | |
179 | globeRadius = globe.getAttribute('r') * 1.0; | |
180 | observerRadius = globalObserver.getAttribute('r') * 1.0; | |
181 | globalGlobeInnerObserverRadius = document.getElementById('cover').getAttribute('r') * 1.0 + observerRadius; | |
182 | globalGlobeTravelRadian = getDegrees(globeRadius - globalGlobeInnerObserverRadius - observerRadius) / 89.0; | |
183 | globalSlider = document.getElementById('slider'); | |
184 | globalSliderX = globalSlider.getAttribute('x') * 1; | |
185 | globalSliderXWindow = globalSliderX + globalMargin | |
186 | globalThumb = document.getElementById('thumb'); | |
187 | globalThumbRadius = globalThumb.getAttribute('r') * 1; | |
188 | globalSliderWidthMinusRadius = globalSlider.getAttribute('width') * 1 - globalThumbRadius; | |
189 | globalSliderWidthMinusDiameter = globalSliderWidthMinusRadius - globalThumbRadius; | |
190 | var allGroups = document.getElementsByTagName('g'); | |
191 | for (var i = 0; i < allGroups.length; i++) { | |
192 | if (allGroups[i].id.indexOf('z:') == 0) { | |
193 | globalLayers.push(allGroups[i]); | |
194 | } | |
195 | } | |
196 | ||
197 | //Slider | |
198 | layerControlBox = document.getElementById('layerControlBox'); | |
199 | layerControlBox.addEventListener('mouseup', sliderUp, false); | |
200 | layerControlBox.addEventListener('mousemove', sliderMove, false); | |
201 | globalSlider.addEventListener('mousedown', sliderDownMove, false); | |
202 | globalThumb.addEventListener('mousedown', sliderDownMove, false); | |
203 | //Observer | |
204 | isoControlBox = document.getElementById('isoControlBox'); | |
205 | isoControlBox.addEventListener('mouseup', observerUp, false); | |
206 | isoControlBox.addEventListener('mousemove', observerMove, false); | |
207 | globe.addEventListener('mousedown', observerDownMove, false); | |
208 | globalObserver.addEventListener('mousedown', observerDownMove, false); | |
209 | ||
210 | //Control box data | |
211 | setText('maxIndexLayer', globalLayers.length - 1); | |
212 | changeScaleLayer(globalZoomScale); | |
213 | } | |
214 | ||
215 | function observerDown(event) { | |
216 | globalObserving = true; | |
217 | } | |
218 | ||
219 | function observerDownMove(event) { | |
220 | globalObserving = true; | |
221 | observerMove(event); | |
222 | } | |
223 | ||
224 | function observerMove(event) { | |
225 | if (!globalObserving) { | |
226 | return; | |
227 | } | |
228 | observerX = event.clientX - globalGlobeCenterXWindow + window.pageXOffset; | |
229 | observerY = event.clientY - globalGlobeCenterYWindow + window.pageYOffset; | |
230 | distanceFromCenter = Math.sqrt(observerX * observerX + observerY * observerY); | |
231 | latitudeRadians = (distanceFromCenter - globalGlobeInnerObserverRadius) / globalGlobeTravelRadian; | |
232 | longitudeRadians = Math.atan2(observerX, -observerY); | |
233 | displayIso(getDegrees(latitudeRadians), getDegrees(longitudeRadians)); | |
234 | } | |
235 | ||
236 | function observerUp(event) { | |
237 | globalObserving = false; | |
238 | } | |
239 | ||
240 | function placeThumb(value) { | |
241 | if (globalLayers.length > 1) { | |
242 | globalThumb.setAttribute('cx', globalSliderX + value); | |
243 | } | |
244 | } | |
245 | ||
246 | function setScaleText(scaleID) { | |
247 | setText(scaleID, ': ' + globalZoomScale); | |
248 | } | |
249 | ||
250 | function setSVG(width, height) { | |
251 | rootSVG = document.getElementsByTagName('svg')[0]; | |
252 | svgMinWidth = globalMetadata.getAttribute('svgMinWidth') * 1; | |
253 | height = Math.max(globalControlBoxHeight + globalMargin + globalMarginTop, height); | |
254 | width = Math.max(svgMinWidth, width); | |
255 | rootSVG.setAttributeNS(null, 'width', width + 'px') | |
256 | rootSVG.setAttributeNS(null, 'height', height + 'px') | |
257 | } | |
258 | ||
259 | function setText(id, str) { | |
260 | e = document.getElementById(id) | |
261 | if (e != null) | |
262 | e.firstChild.nodeValue = str; | |
263 | } | |
264 | ||
265 | function showElements(elementNames) { | |
266 | for (var elementNameIndex in elementNames) { | |
267 | document.getElementById(elementNames[elementNameIndex]).setAttributeNS(null, 'visibility', 'visible'); | |
268 | } | |
269 | } | |
270 | ||
271 | function sliderDown(event) { | |
272 | globalSliding = true; | |
273 | } | |
274 | ||
275 | function sliderDownMove(event) { | |
276 | globalSliding = true; | |
277 | sliderMove(event); | |
278 | } | |
279 | ||
280 | function sliderMove(event) { | |
281 | if (!globalSliding) { | |
282 | return; | |
283 | } | |
284 | value = event.clientX - globalSliderXWindow + window.pageXOffset; | |
285 | if (value >= globalThumbRadius && value <= globalSliderWidthMinusRadius) { | |
286 | placeThumb(value); | |
287 | zoneWidth = globalSliderWidthMinusDiameter / (globalLayers.length); | |
288 | newLayer = Math.round((value - globalThumbRadius - 0.5 * zoneWidth) / zoneWidth) | |
289 | if (newLayer != globalLayerIndex) { | |
290 | displayLayer(newLayer) | |
291 | } | |
292 | } | |
293 | } | |
294 | ||
295 | function sliderUp(event) { | |
296 | globalSliding = false; | |
297 | } | |
298 | ||
299 | function viewIso() { | |
300 | height = (globalDimensionMagnitude * globalScale) + globalYOffset; | |
301 | setSVG((globalDimensionMagnitude * globalScale) + globalXOffset, height); | |
302 | for (var i in globalLayers) { | |
303 | // globalLayers[i].setAttributeNS(null, 'transform', 'translate(' + globalMargin + ' ' + height + ')'); | |
304 | globalLayers[i].setAttributeNS(null, 'visibility', 'visible'); | |
305 | globalLayers[i].getElementsByTagName('text')[0].setAttributeNS(null, 'visibility', 'hidden'); | |
306 | pathElements = globalLayers[i].getElementsByTagName('path'); | |
307 | for (var pathElementIndex = 0; pathElementIndex < pathElements.length; pathElementIndex++) { | |
308 | pathElements[pathElementIndex].setAttributeNS(null, 'transform', ''); | |
309 | } | |
310 | } | |
311 | //show control box | |
312 | hideElements(['decreaseLayerIndex', 'increaseLayerIndex', 'isoViewButton', 'layerControlBox', 'layerViewLabel', 'scrollControlBox', 'scrollViewLabel']); | |
313 | showElements(['isoControlBox', 'isoViewLabel', 'layerViewButton', 'scrollViewButton']); | |
314 | displayIso(globalLatitude, globalLongitude); | |
315 | setScaleText('scaleIso'); | |
316 | } | |
317 | ||
318 | function viewLayer() { | |
319 | //Set svg size and view port | |
320 | height = (globalDimensionY * globalScale) + globalYOffset; | |
321 | setSVG(getWidth(), height); | |
322 | //move and hide all layers | |
323 | for (var i in globalLayers) { | |
324 | globalLayers[i].setAttributeNS(null, 'transform', 'translate(' + globalXOffset + ' ' + height + ')'); | |
325 | globalLayers[i].setAttributeNS(null, 'visibility', 'hidden'); | |
326 | globalLayers[i].getElementsByTagName('text')[0].setAttributeNS(null, 'visibility', 'hidden'); | |
327 | transform = getScaleTransformString(globalScale); | |
328 | pathElements = globalLayers[i].getElementsByTagName('path'); | |
329 | for (var pathElementIndex = 0; pathElementIndex < pathElements.length; pathElementIndex++) { | |
330 | pathElements[pathElementIndex].setAttributeNS(null, 'transform', transform); | |
331 | } | |
332 | } | |
333 | ||
334 | //show control box | |
335 | hideElements(['isoControlBox', 'isoViewLabel', 'layerViewButton', 'scrollControlBox', 'scrollViewLabel']) | |
336 | showElements(['isoViewButton', 'layerControlBox', 'layerViewLabel', 'scrollViewButton']) | |
337 | ||
338 | //show current layer | |
339 | displayLayer(globalLayerIndex); | |
340 | setScaleText('scaleLayer'); | |
341 | } | |
342 | ||
343 | function viewScroll() { | |
344 | //Set svg size and view port | |
345 | yDimensionScale = globalDimensionY * globalScale | |
346 | singleHeight = (globalMargin + yDimensionScale + globalTextHeight) | |
347 | height = globalLayers.length * singleHeight + globalMargin + globalMargin + globalYOffset; | |
348 | setSVG(getWidth(), height); | |
349 | ||
350 | //move and show all layers | |
351 | for (var i in globalLayers) { | |
352 | x = globalXOffset; | |
353 | y = i * singleHeight + yDimensionScale + globalYOffset; | |
354 | transform = getScaleTransformString(globalScale); | |
355 | globalLayers[i].setAttributeNS(null, 'transform', 'translate(' + x + ', ' + y + ')'); | |
356 | pathElements = globalLayers[i].getElementsByTagName('path'); | |
357 | for (var pathElementIndex = 0; pathElementIndex < pathElements.length; pathElementIndex++) { | |
358 | pathElements[pathElementIndex].setAttributeNS(null, 'transform', transform); | |
359 | } | |
360 | globalLayers[i].setAttributeNS(null, 'visibility', 'visible'); | |
361 | globalLayers[i].getElementsByTagName('text')[0].setAttributeNS(null, 'visibility', 'visible'); | |
362 | } | |
363 | ||
364 | //show control box | |
365 | hideElements(['isoControlBox', 'isoViewLabel', 'layerControlBox', 'layerViewLabel', 'scrollViewButton']) | |
366 | showElements(['isoViewButton', 'layerViewButton', 'scrollControlBox', 'scrollViewLabel']) | |
367 | setScaleText('scaleScroll'); | |
368 | } | |
369 | ]]> | |
370 | </script> | |
371 | <title >belt_pulley3.stl - Slice Layers</title> | |
372 | <!--Begin Layer Data --> | |
373 | <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'> | |
374 | <!--id='sliceElementTemplate' must be there or else the slice template will not be found--> | |
375 | <g id='z:-1.8' inkscape:groupmode='layer' inkscape:label='Layer 0, z:-1.8' transform='translate(280.0, 168.2006)'> | |
376 | <!--id='layerTextTemplate' must be there so that the text could be removed if necessary--> | |
377 | <text id='layerTextTemplate-1.8' fill='#000' stroke='none' y='15' >Layer 0, z:-1.8</text> | |
378 | <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)' /> | |
379 | </g> | |
380 | <g id='z:-1.4' inkscape:groupmode='layer' inkscape:label='Layer 1, z:-1.4' transform='translate(280.0, 298.9012)'> | |
381 | <!--id='layerTextTemplate' must be there so that the text could be removed if necessary--> | |
382 | <text id='layerTextTemplate-1.4' fill='#000' stroke='none' y='15' >Layer 1, z:-1.4</text> | |
383 | <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)' /> | |
384 | </g> | |
385 | </g> | |
386 | <!--End Layer Data--> | |
387 | <!--beginningOfControlSection='true' must be there or else the control boxes will be carved--> | |
388 | <g id='controls' beginningOfControlSection='true' inkscape:groupmode='layer' inkscape:label='Controls'> | |
389 | <!--id='isoControlBox' must be there so that the controls could be removed if necessary--> | |
390 | <g id='isoControlBox' fill='#000' font-family='Arial' font-size='15px' font-weight='bold' transform='translate(20, 60)' visibility='hidden'> | |
391 | <rect fill='silver' height='720' stroke='gray' stroke-width='4px' width='240' /> | |
392 | <circle id='globe' cx='120' cy='120' fill='gray' r='100' /> | |
393 | <circle id='cover' cx='120' cy='120' fill='silver' r='33' /> | |
394 | <circle id='observer' fill='darkslateblue' r='12' /> | |
395 | <text id='latitudeIso' x='20' y='260' >Latitude</text> | |
396 | <text fill='darkslateblue' onclick='displayIsoByLatitude(globalLatitude-1.0)' x='198' y='260' ><</text> | |
397 | <text fill='darkslateblue' onclick='displayIsoByLatitude(globalLatitude+1.0)' x='213' y='260' >></text> | |
398 | <text id='longitudeIso' x='20' y='280' >Longitude</text> | |
399 | <text fill='darkslateblue' onclick='displayIsoByLongitude(globalLongitude-1.0)' x='198' y='280' ><</text> | |
400 | <text fill='darkslateblue' onclick='displayIsoByLongitude(globalLongitude+1.0)' x='213' y='280' >></text> | |
401 | <text x='20' y='300' >Scale</text> | |
402 | <text id='scaleIso' x='65' y='300' >1</text> | |
403 | <text fill='darkslateblue' onclick='changeScaleIso(globalZoomScale/2)' x='198' y='300' ><</text> | |
404 | <text fill='darkslateblue' onclick='changeScaleIso(globalZoomScale*2)' x='213' y='300' >></text> | |
405 | <g transform='translate(20, 340)'> | |
406 | <text >Min</text> | |
407 | <text id='minXIso' y='20' >X: -11.919 mm</text> | |
408 | <text id='minYIso' y='40' >Y: -11.919 mm</text> | |
409 | <text id='minZIso' y='60' >Z: -2.0 mm</text> | |
410 | </g> | |
411 | <g transform='translate(20, 440)'> | |
412 | <text >Max</text> | |
413 | <text id='maxXIso' y='20' >X: 11.919 mm</text> | |
414 | <text id='maxYIso' y='40' >Y: 11.919 mm</text> | |
415 | <text id='maxZIso' y='60' >Z: 10.0 mm</text> | |
416 | </g> | |
417 | <g transform='translate(20, 540)'> | |
418 | <text >Dimension</text> | |
419 | <text id='dimXIso' y='20' >X: 23.838 mm</text> | |
420 | <text id='dimYIso' y='40' >Y: 23.838 mm</text> | |
421 | <text id='dimZIso' y='60' >Z: 12.0 mm</text> | |
422 | </g> | |
423 | <g transform='translate(20, 640)'> | |
424 | <text >Statistics</text> | |
425 | <text id='layerHeightIso' y='20' >Layer Height: 0.4 mm</text> | |
426 | <text id='numberOfLayersIso' y='40' >Number of Layers: 30</text> | |
427 | <text id='volumeIso' y='60' >Volume: 1.8836 cm3</text> | |
428 | </g> | |
429 | </g> | |
430 | <!--id='layerControlBox' must be there so that the controls could be removed if necessary--> | |
431 | <g id='layerControlBox' fill='#000' font-family='Arial' font-size='15px' font-weight='bold' transform='translate(20, 60)' visibility='hidden'> | |
432 | <rect fill='silver' height='720' stroke='gray' stroke-width='4px' width='240' /> | |
433 | <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' /> | |
434 | <!--<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'/>--> | |
435 | <text text-anchor='middle' x='68' y='64' >Y</text> | |
436 | <text x='165' y='166' >X</text> | |
437 | <text id='minIndexLayer' x='20' y='245' >0</text> | |
438 | <rect id='slider' fill='gray' height='24' width='170' x='32' y='230' /> | |
439 | <circle id='thumb' cx='42' cy='242' fill='darkslateblue' r='12' /> | |
440 | <text id='maxIndexLayer' x='203' y='245' >1</text> | |
441 | <text id='currentIndexLayer' x='20' y='280' >Layer</text> | |
442 | <text id='decreaseLayerIndex' fill='darkslateblue' onclick='displayLayer(globalLayerIndex-1)' x='198' y='280' ><</text> | |
443 | <text id='increaseLayerIndex' fill='darkslateblue' onclick='displayLayer(globalLayerIndex+1)' x='213' y='280' >></text> | |
444 | <text x='20' y='300' >Scale</text> | |
445 | <text id='scaleLayer' x='65' y='300' >1</text> | |
446 | <text fill='darkslateblue' onclick='changeScaleLayer(globalZoomScale/2)' x='198' y='300' ><</text> | |
447 | <text fill='darkslateblue' onclick='changeScaleLayer(globalZoomScale*2)' x='213' y='300' >></text> | |
448 | <g transform='translate(20, 340)'> | |
449 | <text >Min</text> | |
450 | <text id='minXLayer' y='20' >X: -11.919 mm</text> | |
451 | <text id='minYLayer' y='40' >Y: -11.919 mm</text> | |
452 | <text id='minZLayer' y='60' >Z: -2.0 mm</text> | |
453 | </g> | |
454 | <g transform='translate(20, 440)'> | |
455 | <text >Max</text> | |
456 | <text id='maxXLayer' y='20' >X: 11.919 mm</text> | |
457 | <text id='maxYLayer' y='40' >Y: 11.919 mm</text> | |
458 | <text id='maxZLayer' y='60' >Z: 10.0 mm</text> | |
459 | </g> | |
460 | <g transform='translate(20, 540)'> | |
461 | <text >Dimension</text> | |
462 | <text id='dimXLayer' y='20' >X: 23.838 mm</text> | |
463 | <text id='dimYLayer' y='40' >Y: 23.838 mm</text> | |
464 | <text id='dimZLayer' y='60' >Z: 12.0 mm</text> | |
465 | </g> | |
466 | <g transform='translate(20, 640)'> | |
467 | <text >Statistics</text> | |
468 | <text id='layerHeightLayer' y='20' >Layer Height: 0.4 mm</text> | |
469 | <text id='numberOfLayersLayer' y='40' >Number of Layers: 30</text> | |
470 | <text id='volumeLayer' y='60' >Volume: 1.8836 cm3</text> | |
471 | </g> | |
472 | </g> | |
473 | <!--id='scrollControlBox' must be there so that the controls could be removed if necessary--> | |
474 | <g id='scrollControlBox' fill='#000' font-family='Arial' font-size='15px' font-weight='bold' transform='translate(20, 60)' visibility='visible'> | |
475 | <rect fill='silver' height='720' stroke='gray' stroke-width='4px' width='240' /> | |
476 | <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' /> | |
477 | <text text-anchor='middle' x='68' y='64' >Y</text> | |
478 | <text x='165' y='166' >X</text> | |
479 | <text x='20' y='300' >Scale</text> | |
480 | <text id='scaleScroll' x='65' y='300' >: 1</text> | |
481 | <text fill='darkslateblue' onclick='changeScaleScroll(globalZoomScale/2)' x='198' y='300' ><</text> | |
482 | <text fill='darkslateblue' onclick='changeScaleScroll(globalZoomScale*2)' x='213' y='300' >></text> | |
483 | <g transform='translate(20, 340)'> | |
484 | <text >Min</text> | |
485 | <text id='minXScroll' y='20' >X: -11.919 mm</text> | |
486 | <text id='minYScroll' y='40' >Y: -11.919 mm</text> | |
487 | <text id='minZScroll' y='60' >Z: -2.0 mm</text> | |
488 | </g> | |
489 | <g transform='translate(20, 440)'> | |
490 | <text >Max</text> | |
491 | <text id='maxXScroll' y='20' >X: 11.919 mm</text> | |
492 | <text id='maxYScroll' y='40' >Y: 11.919 mm</text> | |
493 | <text id='maxZScroll' y='60' >Z: 10.0 mm</text> | |
494 | </g> | |
495 | <g transform='translate(20, 540)'> | |
496 | <text >Dimension</text> | |
497 | <text id='dimXScroll' y='20' >X: 23.838 mm</text> | |
498 | <text id='dimYScroll' y='40' >Y: 23.838 mm</text> | |
499 | <text id='dimZScroll' y='60' >Z: 12.0 mm</text> | |
500 | </g> | |
501 | <g transform='translate(20, 640)'> | |
502 | <text >Statistics</text> | |
503 | <text id='layerHeightScroll' y='20' >Layer Height: 0.4 mm</text> | |
504 | <text id='numberOfLayersScroll' y='40' >Number of Layers: 30</text> | |
505 | <text id='volumeScroll' y='60' >Volume: 1.8836 cm3</text> | |
506 | </g> | |
507 | </g> | |
508 | <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> | |
509 | <text id='isoViewLabel' fill='darkslateblue' font-size='24px' font-weight='bold' text-anchor='middle' visibility='hidden' x='76' y='30' >Iso View</text> | |
510 | <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> | |
511 | <text id='layerViewLabel' fill='darkslateblue' font-size='24px' font-weight='bold' text-anchor='middle' visibility='hidden' x='236' y='30' >Layer View</text> | |
512 | <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> | |
513 | <text id='scrollViewLabel' fill='darkslateblue' font-size='24px' font-weight='bold' text-anchor='middle' visibility='visible' x='396' y='30' >Scroll View</text> | |
514 | </g> | |
515 | </svg> |