reworked color handling to improve mapping with Lightburn layers
This commit is contained in:
parent
afce625c42
commit
ce032e323f
|
@ -2,6 +2,7 @@ import math
|
||||||
import datetime
|
import datetime
|
||||||
from affine import Affine
|
from affine import Affine
|
||||||
from boxes.extents import Extents
|
from boxes.extents import Extents
|
||||||
|
from boxes.Color import Color as bColor
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from xml.etree import cElementTree as ET
|
from xml.etree import cElementTree as ET
|
||||||
|
@ -733,6 +734,17 @@ class LBRN2Surface(Surface):
|
||||||
'monospaced' : 'Courier New'
|
'monospaced' : 'Courier New'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lbrn2_colors=[
|
||||||
|
0, # Colors.OUTER_CUT (BLACK) --> Lightburn C00 (black)
|
||||||
|
1, # Colors.INNER_CUT (BLUE) --> Lightburn C01 (blue)
|
||||||
|
3, # Colors.ETCHING (GREEN) --> Lightburn C02 (green)
|
||||||
|
6, # Colors.ETCHING_DEEP (CYAN) --> Lightburn C06 (cyan)
|
||||||
|
30, # Colors.ANNOTATIONS (RED) --> Lightburn T1
|
||||||
|
7, # Colors.OUTER_CUT (MAGENTA) --> Lightburn C07 (magenta)
|
||||||
|
4, # Colors.OUTER_CUT (YELLOW) --> Lightburn C04 (yellow)
|
||||||
|
8, # Colors.OUTER_CUT (WHITE) --> Lightburn C08 (grey)
|
||||||
|
]
|
||||||
|
|
||||||
def finish(self, inner_corners="loop"):
|
def finish(self, inner_corners="loop"):
|
||||||
if self.dbg: print("LBRN2 save")
|
if self.dbg: print("LBRN2 save")
|
||||||
extents = self._adjust_coordinates()
|
extents = self._adjust_coordinates()
|
||||||
|
@ -746,6 +758,46 @@ class LBRN2Surface(Surface):
|
||||||
|
|
||||||
tree = ET.ElementTree(svg)
|
tree = ET.ElementTree(svg)
|
||||||
if self.dbg: print ("8", num)
|
if self.dbg: print ("8", num)
|
||||||
|
|
||||||
|
cs = ET.SubElement(svg, "CutSetting", Type="Cut")
|
||||||
|
index = ET.SubElement(cs, "index", Value="3") # green layer (ETCHING)
|
||||||
|
name = ET.SubElement(cs, "name", Value="Etch")
|
||||||
|
priority = ET.SubElement(cs, "priority", Value="0") # is cut first
|
||||||
|
|
||||||
|
cs = ET.SubElement(svg, "CutSetting", Type="Cut")
|
||||||
|
index = ET.SubElement(cs, "index", Value="6") # cyan layer (ETCHING_DEEP)
|
||||||
|
name = ET.SubElement(cs, "name", Value="Deep Etch")
|
||||||
|
priority = ET.SubElement(cs, "priority", Value="1") # is cut second
|
||||||
|
|
||||||
|
cs = ET.SubElement(svg, "CutSetting", Type="Cut")
|
||||||
|
index = ET.SubElement(cs, "index", Value="7") # magenta layer (MAGENTA)
|
||||||
|
name = ET.SubElement(cs, "name", Value="C07")
|
||||||
|
priority = ET.SubElement(cs, "priority", Value="2") # is cut third
|
||||||
|
|
||||||
|
cs = ET.SubElement(svg, "CutSetting", Type="Cut")
|
||||||
|
index = ET.SubElement(cs, "index", Value="4") # yellow layer (YELLOW)
|
||||||
|
name = ET.SubElement(cs, "name", Value="C04")
|
||||||
|
priority = ET.SubElement(cs, "priority", Value="3") # is cut third
|
||||||
|
|
||||||
|
cs = ET.SubElement(svg, "CutSetting", Type="Cut")
|
||||||
|
index = ET.SubElement(cs, "index", Value="8") # grey layer (WHITE)
|
||||||
|
name = ET.SubElement(cs, "name", Value="C08")
|
||||||
|
priority = ET.SubElement(cs, "priority", Value="4") # is cut fourth
|
||||||
|
|
||||||
|
cs = ET.SubElement(svg, "CutSetting", Type="Cut")
|
||||||
|
index = ET.SubElement(cs, "index", Value="1") # blue layer (INNER_CUT)
|
||||||
|
name = ET.SubElement(cs, "name", Value="Inner Cut")
|
||||||
|
priority = ET.SubElement(cs, "priority", Value="5") # is cut fifth
|
||||||
|
|
||||||
|
cs = ET.SubElement(svg, "CutSetting", Type="Cut")
|
||||||
|
index = ET.SubElement(cs, "index", Value="0") # black layer (OUTER_CUT)
|
||||||
|
name = ET.SubElement(cs, "name", Value="Outer Cut")
|
||||||
|
priority = ET.SubElement(cs, "priority", Value="6") # is cut sixth
|
||||||
|
|
||||||
|
cs = ET.SubElement(svg, "CutSetting", Type="Tool")
|
||||||
|
index = ET.SubElement(cs, "index", Value="30") # T1 layer (ANNOTATIONS)
|
||||||
|
name = ET.SubElement(cs, "name", Value="T1") # tool layer do not support names
|
||||||
|
priority = ET.SubElement(cs, "priority", Value="7") # is not cut at all
|
||||||
|
|
||||||
for i, part in enumerate(self.parts):
|
for i, part in enumerate(self.parts):
|
||||||
if self.dbg: print ("7", num)
|
if self.dbg: print ("7", num)
|
||||||
|
@ -759,9 +811,8 @@ class LBRN2Surface(Surface):
|
||||||
children.tail = "\n"
|
children.tail = "\n"
|
||||||
|
|
||||||
for j, path in enumerate(part.pathes):
|
for j, path in enumerate(part.pathes):
|
||||||
Color = 2*int(path.params["rgb"][0])+4*int(path.params["rgb"][1])+int(path.params["rgb"][2])
|
myColor = self.lbrn2_colors[4*int(path.params["rgb"][0])+2*int(path.params["rgb"][1])+int(path.params["rgb"][2])]
|
||||||
if Color == 4: # 4 is yellow in Lightburn
|
|
||||||
Color = 3 # use green instead
|
|
||||||
p = []
|
p = []
|
||||||
x, y = 0, 0
|
x, y = 0, 0
|
||||||
C = ""
|
C = ""
|
||||||
|
@ -788,7 +839,7 @@ class LBRN2Surface(Surface):
|
||||||
C, x, y = c[0:3]
|
C, x, y = c[0:3]
|
||||||
if C == "M":
|
if C == "M":
|
||||||
if self.dbg: print ("1", num)
|
if self.dbg: print ("1", num)
|
||||||
sh = ET.SubElement(children, "Shape", Type="Path", CutIndex=str(Color))
|
sh = ET.SubElement(children, "Shape", Type="Path", CutIndex=str(myColor))
|
||||||
sh.text = "\n "
|
sh.text = "\n "
|
||||||
sh.tail = "\n"
|
sh.tail = "\n"
|
||||||
vl = ET.SubElement(sh, "VertList")
|
vl = ET.SubElement(sh, "VertList")
|
||||||
|
@ -852,9 +903,7 @@ class LBRN2Surface(Surface):
|
||||||
f = self.fonts[font]
|
f = self.fonts[font]
|
||||||
else:
|
else:
|
||||||
f = params.get('font', 'Arial')
|
f = params.get('font', 'Arial')
|
||||||
fontColor = 2*int(params['rgb'][0])+4*int(params['rgb'][1])+int(params['rgb'][2])
|
fontColor = self.lbrn2_colors[4*int(params["rgb"][0])+2*int(params["rgb"][1])+int(params["rgb"][2])]
|
||||||
if fontColor == 4: # 4 is yellow in Lightburn
|
|
||||||
fontColor = 3 # use green instead
|
|
||||||
|
|
||||||
#alignment can be left|middle|end
|
#alignment can be left|middle|end
|
||||||
if params.get('align', 'left')=='middle':
|
if params.get('align', 'left')=='middle':
|
||||||
|
@ -864,7 +913,7 @@ class LBRN2Surface(Surface):
|
||||||
hor = '2'
|
hor = '2'
|
||||||
else:
|
else:
|
||||||
hor = '0'
|
hor = '0'
|
||||||
ver = 2 # vertical is always bottom, text is shifted in box class
|
ver = 1 # vertical is always bottom, text is shifted in box class
|
||||||
|
|
||||||
pos = text.find('%')
|
pos = text.find('%')
|
||||||
offs = 0
|
offs = 0
|
||||||
|
|
Loading…
Reference in New Issue