Compare commits
	
		
			4 Commits
		
	
	
		
			add-settin
			...
			72b1fa1920
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 72b1fa1920 | |||
| 65e74a8815 | |||
| e4512627b7 | |||
| 09667b86d5 | 
							
								
								
									
										344
									
								
								examples/Schnittdaten-Skripte/Schnitttest erweitert.ls
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										344
									
								
								examples/Schnittdaten-Skripte/Schnitttest erweitert.ls
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,344 @@
 | 
			
		||||
//
 | 
			
		||||
// Schnitttest-Skript des FabLab Altmühlfranken e.V.
 | 
			
		||||
//
 | 
			
		||||
// Basiert auf den Testskripten aus dem FabLab Nürnberg.
 | 
			
		||||
//
 | 
			
		||||
// (c) 2016, juergen@fabmail.org
 | 
			
		||||
// (c) 2024, fabian@fablab-altmuehlfranken.de
 | 
			
		||||
//
 | 
			
		||||
// Distributed under the terms of the GPL v2.0
 | 
			
		||||
 | 
			
		||||
/**** copied from VisiCut example scripts ****/
 | 
			
		||||
function rectangle(x, y, width, height)
 | 
			
		||||
{
 | 
			
		||||
    move(x, y);
 | 
			
		||||
    line(x+width, y);
 | 
			
		||||
    line(x+width, y+height);
 | 
			
		||||
    line(x, y+height);
 | 
			
		||||
    line(x, y);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function segmentLine(x1, y1, x2, y2)
 | 
			
		||||
{
 | 
			
		||||
    move(x1, y1);
 | 
			
		||||
    line(x2, y2);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function segment7draw (x,y,w,h,values)
 | 
			
		||||
{
 | 
			
		||||
    var xw = x+w;
 | 
			
		||||
    var yh = y+h;
 | 
			
		||||
    var yh2 = y+h/2;
 | 
			
		||||
 | 
			
		||||
    if (values[0] === 1) //A
 | 
			
		||||
    {
 | 
			
		||||
        segmentLine(x, y, xw, y);
 | 
			
		||||
    }
 | 
			
		||||
    if (values[1] === 1) //B
 | 
			
		||||
    {
 | 
			
		||||
       segmentLine(xw, y, xw, yh2);
 | 
			
		||||
    }
 | 
			
		||||
    if (values[2] === 1) //C
 | 
			
		||||
    {
 | 
			
		||||
        segmentLine(xw, yh2, xw, yh);
 | 
			
		||||
    }
 | 
			
		||||
    if (values[3] === 1) //D
 | 
			
		||||
    {
 | 
			
		||||
        segmentLine(xw, yh, x, yh);
 | 
			
		||||
    }
 | 
			
		||||
    if (values[4] === 1) //E
 | 
			
		||||
    {
 | 
			
		||||
        segmentLine(x, yh, x, yh2);
 | 
			
		||||
    }
 | 
			
		||||
    if (values[6] === 1) //G
 | 
			
		||||
    {
 | 
			
		||||
        segmentLine(x, yh2, xw, yh2);
 | 
			
		||||
    }
 | 
			
		||||
    if (values[5] === 1) //F
 | 
			
		||||
    {
 | 
			
		||||
        segmentLine(x, yh2, x, y);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function drawPlus(x,y,w) {
 | 
			
		||||
      move(x,y+w/2);
 | 
			
		||||
      line(x+w,y+w/2);
 | 
			
		||||
      move(x+w/2,y);
 | 
			
		||||
      line(x+w/2,y+w);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function segment7write (x,y,w,string)
 | 
			
		||||
{
 | 
			
		||||
    var characterMap =
 | 
			
		||||
    {
 | 
			
		||||
        '0': [1, 1, 1, 1, 1, 1, 0],
 | 
			
		||||
        '1': [0, 1, 1, 0, 0, 0, 0],
 | 
			
		||||
        '2': [1, 1, 0, 1, 1, 0, 1],
 | 
			
		||||
        '3': [1, 1, 1, 1, 0, 0, 1],
 | 
			
		||||
        '4': [0, 1, 1, 0, 0, 1, 1],
 | 
			
		||||
        '5': [1, 0, 1, 1, 0, 1, 1],
 | 
			
		||||
        '6': [1, 0, 1, 1, 1, 1, 1],
 | 
			
		||||
        '7': [1, 1, 1, 0, 0, 0, 0],
 | 
			
		||||
        '8': [1, 1, 1, 1, 1, 1, 1],
 | 
			
		||||
        '9': [1, 1, 1, 1, 0, 1, 1],
 | 
			
		||||
 | 
			
		||||
        'A': [1, 1, 1, 0, 1, 1, 1],
 | 
			
		||||
        'B': [0, 0, 1, 1, 1, 1, 1],
 | 
			
		||||
        'C': [1, 0, 0, 1, 1, 1, 0],
 | 
			
		||||
        'D': [0, 1, 1, 1, 1, 0, 1],
 | 
			
		||||
        'E': [1, 0, 0, 1, 1, 1, 1],
 | 
			
		||||
        'F': [1, 0, 0, 0, 1, 1, 1],
 | 
			
		||||
        'G': [1, 1, 1, 1, 0, 1, 1],
 | 
			
		||||
        'H': [0, 1, 1, 0, 1, 1, 1],
 | 
			
		||||
        'I': [0, 0, 0, 0, 1, 1, 0],
 | 
			
		||||
        'J': [0, 1, 1, 1, 1, 0, 0],
 | 
			
		||||
        'K': [0, 1, 1, 0, 1, 1, 1],
 | 
			
		||||
        'L': [0, 0, 0, 1, 1, 1, 0],
 | 
			
		||||
        'M': [1, 0, 1, 0, 1, 0, 0],
 | 
			
		||||
        'N': [0, 0, 1, 0, 1, 0, 1],
 | 
			
		||||
        'O': [1, 1, 1, 1, 1, 1, 0],
 | 
			
		||||
        'P': [1, 1, 0, 0, 1, 1, 1],
 | 
			
		||||
        'Q': [1, 1, 1, 0, 0, 1, 1],
 | 
			
		||||
        'R': [0, 0, 0, 0, 1, 0, 1],
 | 
			
		||||
        'S': [1, 0, 1, 1, 0, 1, 1],
 | 
			
		||||
        'T': [0, 0, 0, 1, 1, 1, 1],
 | 
			
		||||
        'U': [0, 1, 1, 1, 1, 1, 0],
 | 
			
		||||
        'V': [0, 0, 1, 1, 1, 0, 0],
 | 
			
		||||
        'W': [0, 1, 0, 1, 0, 1, 0],
 | 
			
		||||
        'X': [0, 1, 1, 0, 1, 1, 1],
 | 
			
		||||
        'Y': [0, 1, 1, 1, 0, 1, 1],
 | 
			
		||||
        'Z': [1, 1, 0, 1, 1, 0, 1],
 | 
			
		||||
        ' ': [0, 0, 0, 0, 0, 0, 0],
 | 
			
		||||
        '_': [0, 0, 0, 1, 0, 0, 0],
 | 
			
		||||
        '-': [0, 0, 0, 0, 0, 0, 1],
 | 
			
		||||
        ',': [0, 0, 1, 0, 0, 0, 0]
 | 
			
		||||
 | 
			
		||||
    };
 | 
			
		||||
    string=string.toUpperCase();
 | 
			
		||||
    for (var i = 0; i < string.length; i++)
 | 
			
		||||
    {
 | 
			
		||||
        segment7draw(x, y, w, 2*w, characterMap[string[i]]);
 | 
			
		||||
        x += 1.5*w;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
/**** end of copied data ****/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * global data; copy this script and adjust these values to suit your needs
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
// each sample we test will be a square of this width in mm
 | 
			
		||||
var squareSize = 6;
 | 
			
		||||
 | 
			
		||||
// spacing between the squares, both horizontally and vertically
 | 
			
		||||
var squareSpacing = 1.25;
 | 
			
		||||
 | 
			
		||||
// if this is set, an outline close to the remaining content will be cut
 | 
			
		||||
var cutOutline = true;
 | 
			
		||||
 | 
			
		||||
// once enabled, the script will prompt the user for a max/min and step interval for both power and speed
 | 
			
		||||
// it's not necessary to adjust the max/min/interval every time, therefore it's handy to use a fixed map to save some time
 | 
			
		||||
var promptUserForMaxMinIntervals = true;
 | 
			
		||||
 | 
			
		||||
// our goal is to find the fastest setting with the lowest available power that cuts the material as quickly as possible
 | 
			
		||||
// therefore, the samples will be layed out in a grid with the available speeds as rows and the available powers as columns
 | 
			
		||||
// while the speeds decrease from the available maximum to the minimum, the powers will increase from the minimum to the maximum
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * end of global data
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
function setMarkProfile() {
 | 
			
		||||
    // "generic" mark profile
 | 
			
		||||
    set("power", 10);
 | 
			
		||||
    set("speed", 100);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// perform a focus test from -10 to +10 mm around the set focus (uses some generic mark profile that should work for the majority of materials)
 | 
			
		||||
// this is extremely useful to ensure your test sample is cut with the appropriate focus
 | 
			
		||||
// note: this only works when the device itself is focused on the material surface
 | 
			
		||||
// TODO: is the set (negative) cut focus used at all later on? It looks like the tests run without that value, which could possibly be annoying
 | 
			
		||||
function focusTest(x, y) {
 | 
			
		||||
    setMarkProfile();
 | 
			
		||||
 | 
			
		||||
    // focus on the material surface
 | 
			
		||||
    set("focus", 0);
 | 
			
		||||
 | 
			
		||||
    // move to set origin
 | 
			
		||||
    move(x, y);
 | 
			
		||||
 | 
			
		||||
    // some definitions
 | 
			
		||||
    var maxLineHeight = 6;
 | 
			
		||||
    var smallLineHeight = maxLineHeight * 0.75;
 | 
			
		||||
    var spacing = 1.5;
 | 
			
		||||
    var minFocus = -10;
 | 
			
		||||
    var maxFocus = 10;
 | 
			
		||||
    var fontWidth = 1.2;
 | 
			
		||||
 | 
			
		||||
    // create a list of items so we can use an integer counter below
 | 
			
		||||
    var samples = [];
 | 
			
		||||
    // TODO: consider making these values configurable (note: this will make drawing the "arrow" etc. a lot harder)
 | 
			
		||||
    for (var focus = minFocus; focus <= maxFocus; ++focus) {
 | 
			
		||||
        samples.push(focus);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // next up: the actual focus test
 | 
			
		||||
    for (var i = 0; i < samples.length; ++i)
 | 
			
		||||
    {
 | 
			
		||||
        currentFocus = samples[i];
 | 
			
		||||
        set("focus", currentFocus);
 | 
			
		||||
 | 
			
		||||
        // every number divisable by 5 will be drawn a little taller to make the scale more readable
 | 
			
		||||
        var currentLineHeight = smallLineHeight;
 | 
			
		||||
        if (currentFocus % 5 == 0) {
 | 
			
		||||
            currentLineHeight = maxLineHeight;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // mark the actual vertical line
 | 
			
		||||
        xCoord = x + i * spacing;
 | 
			
		||||
        move(xCoord, y + maxLineHeight);
 | 
			
		||||
        line(xCoord, y + maxLineHeight - currentLineHeight);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // set focus back to the material surface
 | 
			
		||||
    set("focus", 0);
 | 
			
		||||
 | 
			
		||||
    // draw minimum and maximum values on the edges as well as a zero marker
 | 
			
		||||
    var yTextOffset = maxLineHeight + 1 * spacing;
 | 
			
		||||
 | 
			
		||||
    var leftText = minFocus.toString();
 | 
			
		||||
    var leftXOffset = 0;
 | 
			
		||||
 | 
			
		||||
    var rightText = maxFocus.toString();
 | 
			
		||||
    // we can subtract the number of characters to align the text properly
 | 
			
		||||
    // the 1.5 is a correctional factor we need to apply, it is used for some reason (...?) in the 7-segment font code
 | 
			
		||||
    var rightXOffset = samples.length * spacing - rightText.length * fontWidth * 1.5;
 | 
			
		||||
 | 
			
		||||
    // draw the texts
 | 
			
		||||
    segment7write(x + leftXOffset, y + yTextOffset, fontWidth, leftText);
 | 
			
		||||
    segment7write(x + rightXOffset, y + yTextOffset, fontWidth, rightText);
 | 
			
		||||
 | 
			
		||||
    // draw a 0 marker, a "roof" with a 45° "slope"
 | 
			
		||||
    for (var sign = -1; sign <= 1; sign += 2) {
 | 
			
		||||
        var roofX = x + minFocus * spacing * -1;
 | 
			
		||||
        move(roofX, y + yTextOffset);
 | 
			
		||||
        line(roofX + sign * fontWidth * 1.5, y + yTextOffset + fontWidth * 1.5);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // draw the word "focus" left-aligned below the soon-to-be focus test
 | 
			
		||||
    y += fontWidth * 3 + spacing * 1 + maxLineHeight;
 | 
			
		||||
    segment7write(x, y, fontWidth, "FOCUS");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function cutSpeedTest(contentXOffset, contentYOffset, powersToTest, speedsToTest) {
 | 
			
		||||
    var fontWidth = 2;
 | 
			
		||||
 | 
			
		||||
    var firstPowerRowOffset = fontWidth * 3 + squareSpacing;
 | 
			
		||||
 | 
			
		||||
    // TODO: improve
 | 
			
		||||
    var speedsText = "speed";
 | 
			
		||||
    for (var i = 0; i < speedsText.length; ++i) {
 | 
			
		||||
        var currentCharYOffset = i * (fontWidth * 3) + firstPowerRowOffset;
 | 
			
		||||
        segment7write(contentXOffset, contentYOffset + currentCharYOffset, fontWidth, speedsText.slice(i, i+1));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // move to the right to make room for speedsText
 | 
			
		||||
    contentXOffset += fontWidth * 1.5 + 2 * squareSpacing;
 | 
			
		||||
 | 
			
		||||
    // TODO: improve
 | 
			
		||||
    // this text will be aligned centrally above the X axis
 | 
			
		||||
    var firstColumnOffset = 3 * fontWidth * 1.5;
 | 
			
		||||
    var powersText = "power";
 | 
			
		||||
    segment7write(contentXOffset + firstColumnOffset + powersToTest.length / 2 * (squareSize + squareSpacing - 0) - (powersText.length / 2) * fontWidth * 1.5, contentYOffset - fontWidth * 3, fontWidth, powersText);
 | 
			
		||||
 | 
			
		||||
    // write column texts in the first ever row
 | 
			
		||||
    for (var i = 0; i < powersToTest.length; ++i) {
 | 
			
		||||
        var currentPower = powersToTest[i];
 | 
			
		||||
        var currentPowerText = currentPower.toString();
 | 
			
		||||
 | 
			
		||||
        var rowY = contentYOffset;
 | 
			
		||||
 | 
			
		||||
        var firstColumnOffset = 3 * fontWidth * 1.5;
 | 
			
		||||
        var currentColumnXOffset = i * (squareSize + squareSpacing) + (3 - currentPowerText.length) / 2;
 | 
			
		||||
 | 
			
		||||
        setMarkProfile();
 | 
			
		||||
        segment7write(contentXOffset + firstColumnOffset + currentColumnXOffset, contentYOffset, fontWidth, currentPowerText);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    contentYOffset += firstPowerRowOffset;
 | 
			
		||||
 | 
			
		||||
    // write row texts and cut series of rectangles
 | 
			
		||||
    for (var i = 0; i < speedsToTest.length; ++i) {
 | 
			
		||||
        var currentSpeed = speedsToTest[i];
 | 
			
		||||
        var currentSpeedText = currentSpeed.toString();
 | 
			
		||||
 | 
			
		||||
        var rowY = contentYOffset + i * (squareSize + squareSpacing);
 | 
			
		||||
 | 
			
		||||
        // 3 is the maximum number of characters to expect (100 is the max value for either setting)
 | 
			
		||||
        var alignXOffset = (3 - currentSpeedText.length - 1) * fontWidth * 1.5;
 | 
			
		||||
 | 
			
		||||
        setMarkProfile();
 | 
			
		||||
        segment7write(contentXOffset + alignXOffset, rowY, fontWidth, currentSpeedText);
 | 
			
		||||
 | 
			
		||||
        // now that we're done writing the text, we can configure the actual cut profile we want to test
 | 
			
		||||
        set("speed", currentSpeed);
 | 
			
		||||
 | 
			
		||||
        var textWidth = 3 * fontWidth * 1.5;
 | 
			
		||||
 | 
			
		||||
        for (var j = 0; j < powersToTest.length; ++j) {
 | 
			
		||||
            var currentPower = powersToTest[j];
 | 
			
		||||
 | 
			
		||||
            set("power", currentPower);
 | 
			
		||||
 | 
			
		||||
            var currentColumnXOffset = j * (squareSize + squareSpacing);
 | 
			
		||||
            rectangle(contentXOffset + textWidth + currentColumnXOffset, rowY, squareSize, squareSize);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// could render at (0, 0), but then again, why not add some spacing right away?
 | 
			
		||||
var xOffset = 5;
 | 
			
		||||
var yOffset = 5;
 | 
			
		||||
 | 
			
		||||
if (cutOutline) {
 | 
			
		||||
    // TODO
 | 
			
		||||
    // contentXOffset +=
 | 
			
		||||
    // contentYOffset +=
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//segment7write(2, 2, 3, "HALLO WELT");
 | 
			
		||||
 | 
			
		||||
focusTest(xOffset, yOffset, -10, 10);
 | 
			
		||||
 | 
			
		||||
var powersToTest = [];
 | 
			
		||||
var speedsToTest = [];
 | 
			
		||||
 | 
			
		||||
if (!promptUserForMaxMinIntervals) {
 | 
			
		||||
    // these are some good values for general testing, you can always use more fine grained tests
 | 
			
		||||
    powersToTest = [5, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
 | 
			
		||||
    speedsToTest = [100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 5];
 | 
			
		||||
} else {
 | 
			
		||||
    var minPower = parseFloat(prompt("Min power", 10));
 | 
			
		||||
    var maxPower = parseFloat(prompt("Max power", 100));
 | 
			
		||||
    var powerInterval = parseFloat(prompt("Power interval", 10));
 | 
			
		||||
 | 
			
		||||
    for (var i = minPower; i <= maxPower; i += powerInterval) {
 | 
			
		||||
        powersToTest.push(i);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    var maxSpeed = parseFloat(prompt("Max speed", 100));
 | 
			
		||||
    var minSpeed = parseFloat(prompt("Min speed", 10));
 | 
			
		||||
    var speedInterval = parseFloat(prompt("Speed interval", 10));
 | 
			
		||||
 | 
			
		||||
    for (var i = maxSpeed; i >= minSpeed; i -= speedInterval) {
 | 
			
		||||
        speedsToTest.push(i);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
yOffset += 12;
 | 
			
		||||
 | 
			
		||||
cutSpeedTest(xOffset, yOffset, powersToTest, speedsToTest);
 | 
			
		||||
@@ -164,9 +164,6 @@ function setMarkProfile() {
 | 
			
		||||
function focusTest(x, y) {
 | 
			
		||||
    setMarkProfile();
 | 
			
		||||
 | 
			
		||||
    // store to reset
 | 
			
		||||
    var oldFocus = get("focus");
 | 
			
		||||
 | 
			
		||||
    // focus on the material surface
 | 
			
		||||
    set("focus", 0);
 | 
			
		||||
 | 
			
		||||
@@ -174,7 +171,7 @@ function focusTest(x, y) {
 | 
			
		||||
    move(x, y);
 | 
			
		||||
 | 
			
		||||
    // some definitions
 | 
			
		||||
    var maxLineHeight = 10;
 | 
			
		||||
    var maxLineHeight = 6;
 | 
			
		||||
    var smallLineHeight = maxLineHeight * 0.75;
 | 
			
		||||
    var spacing = 1.5;
 | 
			
		||||
    var minFocus = -10;
 | 
			
		||||
@@ -188,10 +185,6 @@ function focusTest(x, y) {
 | 
			
		||||
        samples.push(focus);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // first, let's draw the word "focus" above the soon-to-be focus test
 | 
			
		||||
    segment7write(x, y, fontWidth, "FOCUS");
 | 
			
		||||
    y += fontWidth * 3;
 | 
			
		||||
 | 
			
		||||
    // next up: the actual focus test
 | 
			
		||||
    for (var i = 0; i < samples.length; ++i)
 | 
			
		||||
    {
 | 
			
		||||
@@ -210,6 +203,9 @@ function focusTest(x, y) {
 | 
			
		||||
        line(xCoord, y + maxLineHeight - currentLineHeight);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // set focus back to the material surface
 | 
			
		||||
    set("focus", 0);
 | 
			
		||||
 | 
			
		||||
    // draw minimum and maximum values on the edges as well as a zero marker
 | 
			
		||||
    var yTextOffset = maxLineHeight + 1 * spacing;
 | 
			
		||||
 | 
			
		||||
@@ -232,10 +228,9 @@ function focusTest(x, y) {
 | 
			
		||||
        line(roofX + sign * fontWidth * 1.5, y + yTextOffset + fontWidth * 1.5);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // finally, restore focus
 | 
			
		||||
    // for our marks, the negative focus won't have much of an impact, and I really don't feel like setting and resetting it for every single rectangle
 | 
			
		||||
    // it's most relevant for the focus test
 | 
			
		||||
    var oldFocus = set("focus", oldFocus);
 | 
			
		||||
    // draw the word "focus" left-aligned below the soon-to-be focus test
 | 
			
		||||
    y += fontWidth * 3 + spacing * 1 + maxLineHeight;
 | 
			
		||||
    segment7write(x, y, fontWidth, "FOCUS");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -258,7 +253,7 @@ function cutSpeedTest(contentXOffset, contentYOffset, powersToTest, speedsToTest
 | 
			
		||||
    // this text will be aligned centrally above the X axis
 | 
			
		||||
    var firstColumnOffset = 3 * fontWidth * 1.5;
 | 
			
		||||
    var powersText = "power";
 | 
			
		||||
    segment7write(contentXOffset + firstColumnOffset + powersToTest.length / 2 * (squareSize + squareSpacing - 0) - (powersText.length / 2) * fontWidth * 1.5, 15, fontWidth, powersText);
 | 
			
		||||
    segment7write(contentXOffset + firstColumnOffset + powersToTest.length / 2 * (squareSize + squareSpacing - 0) - (powersText.length / 2) * fontWidth * 1.5, contentYOffset - fontWidth * 3, fontWidth, powersText);
 | 
			
		||||
 | 
			
		||||
    // write column texts in the first ever row
 | 
			
		||||
    for (var i = 0; i < powersToTest.length; ++i) {
 | 
			
		||||
@@ -344,6 +339,6 @@ if (!promptUserForMaxMinIntervals) {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
yOffset += 20;
 | 
			
		||||
yOffset += 12;
 | 
			
		||||
 | 
			
		||||
cutSpeedTest(xOffset, yOffset, powersToTest, speedsToTest);
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,11 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
 | 
			
		||||
<linked-list version="0.0.0.0">
 | 
			
		||||
  <PowerSpeedFocusFrequencyProperty>
 | 
			
		||||
    <power>13</power>
 | 
			
		||||
    <speed>100</speed>
 | 
			
		||||
    <focus>0.0</focus>
 | 
			
		||||
    <hideFocus>false</hideFocus>
 | 
			
		||||
    <frequency>5000</frequency>
 | 
			
		||||
  </PowerSpeedFocusFrequencyProperty>
 | 
			
		||||
</linked-list>
 | 
			
		||||
							
								
								
									
										11
									
								
								materials/Dichtungspapier.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								materials/Dichtungspapier.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
 | 
			
		||||
<material version="0">
 | 
			
		||||
  <engraveColor>#000000</engraveColor>
 | 
			
		||||
  <cutColor>#ff0000</cutColor>
 | 
			
		||||
  <color>#dfa039</color>
 | 
			
		||||
  <name>Dichtungspapier</name>
 | 
			
		||||
  <materialThicknesses>
 | 
			
		||||
    <float>0.3</float>
 | 
			
		||||
  </materialThicknesses>
 | 
			
		||||
</material>
 | 
			
		||||
		Reference in New Issue
	
	Block a user