var workpiece = getWorkpiece();
var delta = Vector.diff(workpiece.upper, workpiece.lower);
if (delta.isNonZero()) {
writeBlock("BLK FORM 0.1 Z X" + xyzFormat.format(workpiece.lower.x) + " Y" + xyzFormat.format(workpiece.lower.y) + " Z" + xyzFormat.format(workpiece.lower.z));
writeBlock("BLK FORM 0.2 X" + xyzFormat.format(workpiece.upper.x) + " Y" + xyzFormat.format(workpiece.upper.y) + " Z" + xyzFormat.format(workpiece.upper.z));
var xlow = getGlobalParameter("stock-lower-x");
var xupp = getGlobalParameter("stock-upper-x");
var ylow = getGlobalParameter("stock-lower-y");
var yupp = getGlobalParameter("stock-upper-y");
var zlow = getGlobalParameter("stock-lower-z");
var zupp = getGlobalParameter("stock-upper-z");
var pxlow = getGlobalParameter("part-lower-x");
var pxupp = getGlobalParameter("part-upper-x");
var pylow = getGlobalParameter("part-lower-y");
var pyupp = getGlobalParameter("part-upper-y");
var pzlow = getGlobalParameter("part-lower-z");
var pzupp = getGlobalParameter("part-upper-z");
var xmitte = (workpiece.upper.x + workpiece.lower.x )
var ymitte = (workpiece.upper.y + workpiece.lower.y )
writeBlock(";")
writeBlock(";")
if(pxlow <0 && pxupp ===0 && pylow <0 && pyupp ===0 || workpiece.upper.y ===0 && pzlow <0 )
writeStructureComment("NULLPUNKT HINTEN RECHTS OBEN")
// if(pxlow <0 && pxupp ===0 && pylow <0 && pyupp ===0 && pzlow <0 )
// writeStructureComment("NULLPUNKT HINTEN RECHTS OBEN")
if(pxlow <0 && pxupp ===0 && pylow <0 && pyupp ===0 && pzupp >0 )
writeStructureComment("NULLPUNKT HINTEN RECHTS UNTEN")
if(pxlow <0 && pxupp ===0 && pylow ===0 && pyupp >0 && pzlow <0 )
writeStructureComment("NULLPUNKT VORNE RECHTS OBEN")
if(pxlow <0 && pxupp ===0 && pylow ===0 && pyupp >0 && pzupp >0 )
writeStructureComment("NULLPUNKT VORNE RECHTS UNTEN")
if(pxlow ===0 && pxupp >0 && pylow <0 && pyupp ===0 && pzlow <0 )
writeStructureComment("NULLPUNKT HINTEN LINKS OBEN")
if(pxlow ===0 && pxupp >0 && pylow <0 && pyupp ===0 && pzupp >0 )
writeStructureComment("NULLPUNKT HINTEN LINKS UNTEN")
if(pxlow ===0 && pxupp >0 && pylow ===0 && pyupp >0 && pzlow <0 )
writeStructureComment("NULLPUNKT VORNE LINKS OBEN")
if(pxlow ===0 && pxupp >0 && pylow ===0 && pyupp >0 && pzupp >0 )
writeStructureComment("NULLPUNKT VORNE LINKS UNTEN")
///////////////////////////////////////////////////////////////////////////////////////////////
if(xmitte ===0 && pylow <0 && pyupp ===0 && pzlow <0 )
writeStructureComment("NULLPUNKT HINTEN MITTE OBEN")
if(xmitte ===0 && pylow <0 && pyupp ===0 && pzupp >0 )
writeStructureComment("NULLPUNKT HINTEN MITTE UNTEN")
if(xmitte ===0 && pylow ===0 && pyupp >0 && pzlow <0 )
writeStructureComment("NULLPUNKT VORNE MITTE OBEN")
if(xmitte ===0 && pylow ===0 && pyupp >0 && pzupp >0 )
writeStructureComment("NULLPUNKT VORNE MITTE UNTEN")
if(pxlow ===0 && pxupp >0 && ymitte ==0 && pzlow <0 )
writeStructureComment("NULLPUNKT LINKS MITTE OBEN")
if(pxlow ===0 && pxupp >0 && ymitte ==0 && pzupp >0 )
writeStructureComment("NULLPUNKT LINKS MITTE UNTEN")
if(pxlow <0 && pxupp ===0 && ymitte ==0 && pzlow <0 )
writeStructureComment("NULLPUNKT RECHTS MITTE OBEN")
if(pxlow <0 && pxupp ===0 && ymitte ==0 && pzupp >0 )
writeStructureComment("NULLPUNKT RECHTS MITTE UNTEN")
///////////////////////////////////////////////////////////////////////////////////////////
if(xmitte ===0 && ymitte === 0 && zupp ===0.5 )
writeStructureComment("NULLPUNKT MITTE OBEN, Z +0.5mm")
if(xmitte ===0 && ymitte === 0 && pzupp >0 && pzlow ===0 )
writeStructureComment("NULLPUNKT MITTE UNTEN")
if(xmitte !=0 && ymitte != 0 && pxlow !=0 && pxupp != 0 && pylow !=0 && pyupp !=0 && zupp !=0.5 )
writeStructureComment("NULLPUNKT INDIVIDUELL! BITTE PRUEFEN!")
if(xmitte ===0 && ymitte === 0 && pxlow === xlow && pylow === ylow && zupp ===0 )
writeStructureComment("KEIN AUFMASS ! NULLPUNKT MITTE OBEN! Z +0mm!")
writeBlock(";")
writeComment("Fertigteilmasse "+xOutput.format(pxupp-pxlow)+" , "+yOutput.format(pyupp-pylow)+" , "+zOutput.format(pzupp-pzlow));
writeComment("Rohteilmasse "+xOutput.format(xupp-xlow)+" , "+yOutput.format(yupp-ylow)+" , "+zOutput.format(zupp-zlow));