diff --git a/extensions/fablabchemnitz/laser_check/laser_check.inx b/extensions/fablabchemnitz/laser_check/laser_check.inx index 3fa8db53..4f53a415 100644 --- a/extensions/fablabchemnitz/laser_check/laser_check.inx +++ b/extensions/fablabchemnitz/laser_check/laser_check.inx @@ -24,6 +24,7 @@ false false false + false false false diff --git a/extensions/fablabchemnitz/laser_check/laser_check.py b/extensions/fablabchemnitz/laser_check/laser_check.py index 34c939a0..fd76920d 100644 --- a/extensions/fablabchemnitz/laser_check/laser_check.py +++ b/extensions/fablabchemnitz/laser_check/laser_check.py @@ -80,6 +80,7 @@ class LaserCheck(inkex.EffectExtension): pars.add_argument('--clippaths', type=inkex.Boolean, default=False) pars.add_argument('--images', type=inkex.Boolean, default=False) pars.add_argument('--texts', type=inkex.Boolean, default=False) + pars.add_argument('--filters', type=inkex.Boolean, default=False) pars.add_argument('--lowlevelstrokes', type=inkex.Boolean, default=False) pars.add_argument('--stroke_colors', type=inkex.Boolean, default=False) pars.add_argument('--stroke_colors_max', type=int, default=3) @@ -347,6 +348,34 @@ class LaserCheck(inkex.EffectExtension): inkex.utils.debug("id={}".format(text.get('id'))) + ''' + Filters on elements let Epilog Software Suite always think vectors should get to raster image data. That might be good sometimes, + but not in usual case. + ''' + if so.checks == "check_all" or so.filters is True: + inkex.utils.debug("\n---------- Filters (should be removed to keep vector characterism)") + + filter_elements = [] + for element in selected: + if element.tag == inkex.addNS('filter','svg'): + filter_elements.append(element) + filter_styles = [] + if so.show_issues_only is False: + inkex.utils.debug("{} filters (as svg:filter) in total".format(len(filter_elements))) + for filter_element in filter_elements: + inkex.utils.debug("id={}".format(filter_element.get('id'))) + + for element in selected: + filter_style = [element, element.style.get('filter')] + if filter_style[1] is None or filter_style[1] == "none": + filter_style[1] = "none" + if filter_style[1] != "none" and filter_style not in filter_styles: + filter_styles.append(filter_style) + if so.show_issues_only is False: + inkex.utils.debug("{} filters (in styles) in total".format(len(filter_styles))) + for filter_style in filter_styles: + inkex.utils.debug("id={}, filter={}".format(filter_style[0].get('id'), filter_style[1])) + ''' The more stroke colors the more laser job configuration is required. Reduce the SVG file @@ -499,6 +528,7 @@ class LaserCheck(inkex.EffectExtension): for transparency in transparencies: inkex.utils.debug("id={}, transparency={}".format(transparency[0].get('id'), transparency[1])) + ''' We look for paths which are just points. Those are useless in case of lasercutting. Note: this scan only works for paths, not for subpaths. If so, you need to break apart before