fix problem #26

This commit is contained in:
Mario Voigt 2024-01-17 21:10:16 +01:00
parent c828530420
commit 89754ed957

View File

@ -156,16 +156,25 @@ class LaserCheck(inkex.EffectExtension):
#if round(vScaleX, 5) != 1.0: #if round(vScaleX, 5) != 1.0:
# inkex.utils.debug("WARNING: Document scale not 100%!") # inkex.utils.debug("WARNING: Document scale not 100%!")
inkex.utils.debug("Document scale (x/y): {:0.5f}".format(inkscapeScale)) inkex.utils.debug("Document scale (x/y): {:0.5f}".format(inkscapeScale))
scaleOk = True
if round(inkscapeScale, 5) != 1.0: if round(inkscapeScale, 5) != 1.0:
scaleOk = False
inkex.utils.debug("WARNING: Document scale not 100%!") inkex.utils.debug("WARNING: Document scale not 100%!")
scaleX = namedView.get('scale-x') scaleX = namedView.get('scale-x')
if scaleX is not None: if scaleX is not None:
inkex.utils.debug("WARNING: Document has scale-x attribute with value={}".format(scaleX)) inkex.utils.debug("WARNING: Document has scale-x attribute with value={}".format(scaleX))
inkex.utils.debug("Viewbox:\n x.min = {:0.0f}\n y.min = {:0.0f}\n x.max = {:0.0f}\n y.max = {:0.0f}".format( vxMin, vyMin, vxMax, vyMax))
viewboxOk = True
if vxMin < 0 or vyMin < 0 or vxMax < 0 or vyMax < 0:
viewboxOk = False
# values may be lower than 0, but it does not make sense. The viewbox defines the top-left corner, which is usually 0,0. In case we want to allow that, we need to convert all bounding boxes accordingly. See also https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/viewBox.
inkex.utils.debug("WARNING: Viewbox does not start at 0,0. Visible results will differ from real coordinates.")
''' '''
The SVG format is highly complex and offers a lot of possibilities. Most things of SVG we do not The SVG format is highly complex and offers a lot of possibilities. Most things of SVG we do not
need for a laser cutter. Usually we need svg:path and maybe svg:image; we can drop a lot of stuff need for a laser cutter. Usually we need svg:path and maybe svg:image; we can drop a lot of stuff
like svg:defs, svg:desc, gradients, etc. like svg:defs, svg:desc, etc.
''' '''
nonShapes = [] nonShapes = []
shapes = [] #this may contains paths, rectangles, circles, groups and more shapes = [] #this may contains paths, rectangles, circles, groups and more
@ -195,6 +204,10 @@ class LaserCheck(inkex.EffectExtension):
''' '''
if so.checks == "check_all" or so.bbox is True: if so.checks == "check_all" or so.bbox is True:
inkex.utils.debug("\n---------- Borders around all elements - minimum offset {} mm from each side".format(so.bbox_offset)) inkex.utils.debug("\n---------- Borders around all elements - minimum offset {} mm from each side".format(so.bbox_offset))
if scaleOk is False:
inkex.utils.debug("WARNING: Document scale is not 100%. Calculating bounding boxes might create wrong results.")
if viewboxOk is False:
inkex.utils.debug("WARNING: Viewbox does not start at 0,0. Calculating bounding boxes might create wrong results.")
bbox = inkex.BoundingBox() bbox = inkex.BoundingBox()
for element in selected: for element in selected:
#for element in self.document.getroot().iter(tag=etree.Element): #for element in self.document.getroot().iter(tag=etree.Element):
@ -218,7 +231,7 @@ class LaserCheck(inkex.EffectExtension):
inkex.utils.debug("bounding box could not be calculated. SVG seems to be empty.") inkex.utils.debug("bounding box could not be calculated. SVG seems to be empty.")
#else: #else:
# inkex.utils.debug("bounding box is {}".format(bbox)) # inkex.utils.debug("bounding box is {}".format(bbox))
inkex.utils.debug("bounding box is {}".format(bbox)) inkex.utils.debug("bounding box is:\n x.min = {}\n y.min = {}\n x.max = {}\n y.max = {}".format(bbox.left, bbox.top, bbox.right, bbox.bottom))
page_width = self.svg.unittouu(self.document.getroot().attrib['width']) page_width = self.svg.unittouu(self.document.getroot().attrib['width'])
width_height = self.svg.unittouu(self.document.getroot().attrib['height']) width_height = self.svg.unittouu(self.document.getroot().attrib['height'])
fmm = self.svg.unittouu(str(so.bbox_offset) + "mm") fmm = self.svg.unittouu(str(so.bbox_offset) + "mm")
@ -228,6 +241,7 @@ class LaserCheck(inkex.EffectExtension):
bb_bottom = round(bbox.bottom, 3) bb_bottom = round(bbox.bottom, 3)
bb_width = round(bbox.width, 3) bb_width = round(bbox.width, 3)
bb_height = round(bbox.height, 3) bb_height = round(bbox.height, 3)
if bb_left >= fmm: if bb_left >= fmm:
if so.show_issues_only is False: if so.show_issues_only is False:
inkex.utils.debug("left border... ok") inkex.utils.debug("left border... ok")