updated some default code

This commit is contained in:
Mario Voigt 2021-04-16 14:41:12 +02:00
parent e2dd99587c
commit 9356b657e4
34 changed files with 661 additions and 688 deletions

View File

@ -23,17 +23,13 @@ def draw_SVG_circle(parent, r, cx, cy, name):
class Gasket(inkex.EffectExtension): # choose a better name class Gasket(inkex.EffectExtension): # choose a better name
def __init__(self): def add_arguments(self, pars):
" define how the options are mapped from the inx file " pars.add_argument("--depth",type=int, default=3, help="command line help")
inkex.Effect.__init__(self) # initialize the super class pars.add_argument("--c1", type=float, default=2.0, help="command line help")
pars.add_argument("--c2", type=float, default=3.0, help="command line help")
# list of parameters defined in the .inx file pars.add_argument("--c3", type=float, default=3.0, help="command line help")
self.arg_parser.add_argument("--depth",type=int, default=3, help="command line help") pars.add_argument("--shrink", type=inkex.Boolean, default=True, help="command line help")
self.arg_parser.add_argument("--c1", type=float, default=2.0, help="command line help") pars.add_argument("--active_tab", default='title', help="Active tab.")
self.arg_parser.add_argument("--c2", type=float, default=3.0, help="command line help")
self.arg_parser.add_argument("--c3", type=float, default=3.0, help="command line help")
self.arg_parser.add_argument("--shrink", type=inkex.Boolean, default=True, help="command line help")
self.arg_parser.add_argument("--active_tab", default='title', help="Active tab.")
def calc_unit_factor(self): def calc_unit_factor(self):
unit_factor = self.svg.unittouu(str(1.0) + self.options.units) unit_factor = self.svg.unittouu(str(1.0) + self.options.units)

View File

@ -70,7 +70,7 @@ class Vector:
self.theta = _theta self.theta = _theta
class CircularGround(inkex.Effect): class CircularGround(inkex.EffectExtension):
def unitToUu(self,param): def unitToUu(self,param):
""" Convert units. """ Convert units.
@ -387,17 +387,16 @@ class CircularGround(inkex.Effect):
_pts.append([p[0]-min_x,p[1]-min_y]) _pts.append([p[0]-min_x,p[1]-min_y])
self.line(_pts) self.line(_pts)
def __init__(self): def add_arguments(self, pars):
inkex.Effect.__init__(self) pars.add_argument('--file')
self.arg_parser.add_argument('--file') pars.add_argument('--angle', type=int)
self.arg_parser.add_argument('--angle', type=int) pars.add_argument('--cols', type=int)
self.arg_parser.add_argument('--cols', type=int) pars.add_argument('--diameter', type=float)
self.arg_parser.add_argument('--diameter', type=float) pars.add_argument('--diamunits')
self.arg_parser.add_argument('--diamunits') pars.add_argument('--rows', type=int)
self.arg_parser.add_argument('--rows', type=int) pars.add_argument('--linewidth', type=float)
self.arg_parser.add_argument('--linewidth', type=float) pars.add_argument('--lineunits')
self.arg_parser.add_argument('--lineunits') pars.add_argument('--linecolor', type=inkex.Color)
self.arg_parser.add_argument('--linecolor', type=inkex.Color)
def effect(self): def effect(self):
## Load the file ## Load the file

View File

@ -31,7 +31,7 @@ __author__ = 'Veronika Irvine'
__credits__ = ['Ben Connors', 'Veronika Irvine', 'Mark Shafer'] __credits__ = ['Ben Connors', 'Veronika Irvine', 'Mark Shafer']
__license__ = 'Simplified BSD' __license__ = 'Simplified BSD'
class LaceGrid(inkex.Effect): class LaceGrid(inkex.EffectExtension):
def circle(self, x, y, r, fill): def circle(self, x, y, r, fill):
# define the stroke style # define the stroke style
s = {'fill': fill} s = {'fill': fill}
@ -70,17 +70,16 @@ class LaceGrid(inkex.Effect):
y += vgrid; y += vgrid;
def __init__(self): def add_arguments(self, pars):
inkex.Effect.__init__(self) pars.add_argument('--angle', type=float)
self.arg_parser.add_argument('--angle', type=float) pars.add_argument('--distance', type=float)
self.arg_parser.add_argument('--distance', type=float) pars.add_argument('--pinunits')
self.arg_parser.add_argument('--pinunits') pars.add_argument('--width', type=float)
self.arg_parser.add_argument('--width', type=float) pars.add_argument('--patchunits')
self.arg_parser.add_argument('--patchunits') pars.add_argument('--height', type=float)
self.arg_parser.add_argument('--height', type=float) pars.add_argument('--dotwidth', type=float)
self.arg_parser.add_argument('--dotwidth', type=float) pars.add_argument('--dotunits')
self.arg_parser.add_argument('--dotunits') pars.add_argument('--dotcolor', type=inkex.Color)
self.arg_parser.add_argument('--dotcolor', type=inkex.Color)
def effect(self): def effect(self):
""" """

View File

@ -31,7 +31,8 @@ __author__ = 'Veronika Irvine'
__credits__ = ['Ben Connors', 'Veronika Irvine', 'Mark Shafer'] __credits__ = ['Ben Connors', 'Veronika Irvine', 'Mark Shafer']
__license__ = 'Simplified BSD' __license__ = 'Simplified BSD'
class LaceGround(inkex.Effect): class LaceGround(inkex.EffectExtesnsion):
def loadFile(self): def loadFile(self):
# Ensure that file exists and has the proper extension # Ensure that file exists and has the proper extension
if not self.options.file: if not self.options.file:
@ -134,18 +135,17 @@ class LaceGround(inkex.Effect):
repeatY += 1 repeatY += 1
y += deltaY * rowCount y += deltaY * rowCount
def __init__(self): def add_arguments(self, pars):
inkex.Effect.__init__(self) pars.add_argument('-f', '--file', help='File containing lace ground description')
self.arg_parser.add_argument('-f', '--file', help='File containing lace ground description') pars.add_argument('--angle', type=float)
self.arg_parser.add_argument('--angle', type=float) pars.add_argument('--distance', type=float)
self.arg_parser.add_argument('--distance', type=float) pars.add_argument('--pinunits')
self.arg_parser.add_argument('--pinunits') pars.add_argument('--width', type=float)
self.arg_parser.add_argument('--width', type=float) pars.add_argument('--patchunits')
self.arg_parser.add_argument('--patchunits') pars.add_argument('--height', type=float)
self.arg_parser.add_argument('--height', type=float) pars.add_argument('--linewidth', type=float)
self.arg_parser.add_argument('--linewidth', type=float) pars.add_argument('--lineunits')
self.arg_parser.add_argument('--lineunits') pars.add_argument('--linecolor', type=inkex.Color)
self.arg_parser.add_argument('--linecolor', type=inkex.Color)
def effect(self): def effect(self):
result = self.loadFile() result = self.loadFile()

View File

@ -25,19 +25,19 @@ __author__ = 'Jo Pol'
__credits__ = ['Veronika Irvine','Jo Pol','Mark Shafer'] __credits__ = ['Veronika Irvine','Jo Pol','Mark Shafer']
__license__ = 'GPLv3' __license__ = 'GPLv3'
class PolarGrid(inkex.Effect): class PolarGrid(inkex.EffectExtension):
def __init__(self):
inkex.Effect.__init__(self) def add_arguments(self, pars):
self.arg_parser.add_argument('-a', '--angle', type=float, default=45, help='grid angle (degrees)') pars.add_argument('-a', '--angle', type=float, default=45, help='grid angle (degrees)')
self.arg_parser.add_argument('-d', '--dots', type=int, default=180, help='number of dots on a circle') pars.add_argument('-d', '--dots', type=int, default=180, help='number of dots on a circle')
self.arg_parser.add_argument('-o', '--outerDiameter', type=float, default=160, help='outer diameter (mm)') pars.add_argument('-o', '--outerDiameter', type=float, default=160, help='outer diameter (mm)')
self.arg_parser.add_argument('-i', '--innerDiameter', type=float, default=100, help='minimum inner diameter (mm)') pars.add_argument('-i', '--innerDiameter', type=float, default=100, help='minimum inner diameter (mm)')
self.arg_parser.add_argument('-f', '--fill', type=inkex.Color, default='-6711040', help='dot color') pars.add_argument('-f', '--fill', type=inkex.Color, default='-6711040', help='dot color')
self.arg_parser.add_argument('-A', '--alignment', default='outside', help='exact diameter on [inside|outside]') pars.add_argument('-A', '--alignment', default='outside', help='exact diameter on [inside|outside]')
self.arg_parser.add_argument('-s', '--size', type=float, default=0.5, help='dot diameter (mm)') pars.add_argument('-s', '--size', type=float, default=0.5, help='dot diameter (mm)')
self.arg_parser.add_argument('-v', '--variant', default='', help='omit rows to get [|rectangle|hexagon1]') pars.add_argument('-v', '--variant', default='', help='omit rows to get [|rectangle|hexagon1]')
self.arg_parser.add_argument('-cu', '--circleDiameterUnits', default = 'mm', help = 'Circle diameter is measured in these units') pars.add_argument('-cu', '--circleDiameterUnits', default = 'mm', help = 'Circle diameter is measured in these units')
self.arg_parser.add_argument('-du', '--dotUnits', default = 'px', help = 'Dot diameter is measured in these unites') pars.add_argument('-du', '--dotUnits', default = 'px', help = 'Dot diameter is measured in these unites')
def group(self, diameter): def group(self, diameter):
""" """

View File

@ -260,38 +260,36 @@ def side(group,root,startOffset,endOffset,tabVec,length,direction,isTab,isDivide
return s return s
class BoxMaker(inkex.Effect): class BoxMaker(inkex.EffectExtension):
def __init__(self):
# Call the base class constructor. def add_arguments(self, pars):
inkex.Effect.__init__(self) pars.add_argument('--schroff',type=int,default=0,help='Enable Schroff mode')
# Define options pars.add_argument('--rail_height',type=float,default=10.0,help='Height of rail')
self.arg_parser.add_argument('--schroff',type=int,default=0,help='Enable Schroff mode') pars.add_argument('--rail_mount_depth',type=float,default=17.4,help='Depth at which to place hole for rail mount bolt')
self.arg_parser.add_argument('--rail_height',type=float,default=10.0,help='Height of rail') pars.add_argument('--rail_mount_centre_offset',type=float, default=0.0,help='How far toward row centreline to offset rail mount bolt (from rail centreline)')
self.arg_parser.add_argument('--rail_mount_depth',type=float,default=17.4,help='Depth at which to place hole for rail mount bolt') pars.add_argument('--rows',type=int,default=0,help='Number of Schroff rows')
self.arg_parser.add_argument('--rail_mount_centre_offset',type=float, default=0.0,help='How far toward row centreline to offset rail mount bolt (from rail centreline)') pars.add_argument('--hp',type=int,default=0,help='Width (TE/HP units) of Schroff rows')
self.arg_parser.add_argument('--rows',type=int,default=0,help='Number of Schroff rows') pars.add_argument('--row_spacing',type=float,default=10.0,help='Height of rail')
self.arg_parser.add_argument('--hp',type=int,default=0,help='Width (TE/HP units) of Schroff rows') pars.add_argument('--unit', default='mm',help='Measure Units')
self.arg_parser.add_argument('--row_spacing',type=float,default=10.0,help='Height of rail') pars.add_argument('--inside',type=int,default=0,help='Int/Ext Dimension')
self.arg_parser.add_argument('--unit', default='mm',help='Measure Units') pars.add_argument('--length',type=float,default=100,help='Length of Box')
self.arg_parser.add_argument('--inside',type=int,default=0,help='Int/Ext Dimension') pars.add_argument('--width',type=float,default=100,help='Width of Box')
self.arg_parser.add_argument('--length',type=float,default=100,help='Length of Box') pars.add_argument('--depth',type=float,default=100,help='Height of Box')
self.arg_parser.add_argument('--width',type=float,default=100,help='Width of Box') pars.add_argument('--tab',type=float,default=25,help='Nominal Tab Width')
self.arg_parser.add_argument('--depth',type=float,default=100,help='Height of Box') pars.add_argument('--equal',type=int,default=0,help='Equal/Prop Tabs')
self.arg_parser.add_argument('--tab',type=float,default=25,help='Nominal Tab Width') pars.add_argument('--tabsymmetry',type=int,default=0,help='Tab style')
self.arg_parser.add_argument('--equal',type=int,default=0,help='Equal/Prop Tabs') pars.add_argument('--dimpleheight',type=float,default=0,help='Tab Dimple Height')
self.arg_parser.add_argument('--tabsymmetry',type=int,default=0,help='Tab style') pars.add_argument('--dimplelength',type=float,default=0,help='Tab Dimple Tip Length')
self.arg_parser.add_argument('--dimpleheight',type=float,default=0,help='Tab Dimple Height') pars.add_argument('--hairline',type=int,default=0,help='Line Thickness')
self.arg_parser.add_argument('--dimplelength',type=float,default=0,help='Tab Dimple Tip Length') pars.add_argument('--thickness',type=float,default=10,help='Thickness of Material')
self.arg_parser.add_argument('--hairline',type=int,default=0,help='Line Thickness') pars.add_argument('--kerf',type=float,default=0.5,help='Kerf (width) of cut')
self.arg_parser.add_argument('--thickness',type=float,default=10,help='Thickness of Material') pars.add_argument('--clearance',type=float,default=0.01,help='Clearance of joints')
self.arg_parser.add_argument('--kerf',type=float,default=0.5,help='Kerf (width) of cut') pars.add_argument('--style',type=int,default=25,help='Layout/Style')
self.arg_parser.add_argument('--clearance',type=float,default=0.01,help='Clearance of joints') pars.add_argument('--spacing',type=float,default=25,help='Part Spacing')
self.arg_parser.add_argument('--style',type=int,default=25,help='Layout/Style') pars.add_argument('--boxtype',type=int,default=25,help='Box type')
self.arg_parser.add_argument('--spacing',type=float,default=25,help='Part Spacing') pars.add_argument('--div_l',type=int,default=25,help='Dividers (Length axis)')
self.arg_parser.add_argument('--boxtype',type=int,default=25,help='Box type') pars.add_argument('--div_w',type=int,default=25,help='Dividers (Width axis)')
self.arg_parser.add_argument('--div_l',type=int,default=25,help='Dividers (Length axis)') pars.add_argument('--keydiv',type=int,default=3,help='Key dividers into walls/floor')
self.arg_parser.add_argument('--div_w',type=int,default=25,help='Dividers (Width axis)')
self.arg_parser.add_argument('--keydiv',type=int,default=3,help='Key dividers into walls/floor')
def effect(self): def effect(self):
global group,nomTab,equalTabs,tabSymmetry,dimpleHeight,dimpleLength,thickness,correction,divx,divy,hairline,linethickness,keydivwalls,keydivfloor global group,nomTab,equalTabs,tabSymmetry,dimpleHeight,dimpleLength,thickness,correction,divx,divy,hairline,linethickness,keydivwalls,keydivfloor

View File

@ -26,30 +26,29 @@ import inkex
from inkex.paths import Path, CubicSuperPath from inkex.paths import Path, CubicSuperPath
from inkex import Style, Color, Circle from inkex import Style, Color, Circle
class ContourScanner(inkex.Effect): class ContourScanner(inkex.EffectExtension):
def __init__(self): def add_arguments(self, pars):
inkex.Effect.__init__(self) pars.add_argument("--main_tabs")
self.arg_parser.add_argument("--main_tabs") pars.add_argument("--breakapart", type=inkex.Boolean, default=False, help="Break apart selection into single contours")
self.arg_parser.add_argument("--breakapart", type=inkex.Boolean, default=False, help="Break apart selection into single contours") pars.add_argument("--apply_transformations", type=inkex.Boolean, default=False, help="Run 'Apply Transformations' extension before running to avoid IndexErrors in calculation.")
self.arg_parser.add_argument("--apply_transformations", type=inkex.Boolean, default=False, help="Run 'Apply Transformations' extension before running to avoid IndexErrors in calculation.") pars.add_argument("--removefillsetstroke", type=inkex.Boolean, default=False, help="Remove fill and define stroke")
self.arg_parser.add_argument("--removefillsetstroke", type=inkex.Boolean, default=False, help="Remove fill and define stroke") pars.add_argument("--strokewidth", type=float, default=1.0, help="Stroke width (px)")
self.arg_parser.add_argument("--strokewidth", type=float, default=1.0, help="Stroke width (px)") pars.add_argument("--highlight_opened", type=inkex.Boolean, default=True, help="Highlight opened contours")
self.arg_parser.add_argument("--highlight_opened", type=inkex.Boolean, default=True, help="Highlight opened contours") pars.add_argument("--color_opened", type=Color, default='4012452351', help="Color opened contours")
self.arg_parser.add_argument("--color_opened", type=Color, default='4012452351', help="Color opened contours") pars.add_argument("--highlight_closed", type=inkex.Boolean, default=True, help="Highlight closed contours")
self.arg_parser.add_argument("--highlight_closed", type=inkex.Boolean, default=True, help="Highlight closed contours") pars.add_argument("--color_closed", type=Color, default='2330080511', help="Color closed contours")
self.arg_parser.add_argument("--color_closed", type=Color, default='2330080511', help="Color closed contours") pars.add_argument("--highlight_selfintersecting", type=inkex.Boolean, default=True, help="Highlight self-intersecting contours")
self.arg_parser.add_argument("--highlight_selfintersecting", type=inkex.Boolean, default=True, help="Highlight self-intersecting contours") pars.add_argument("--highlight_intersectionpoints", type=inkex.Boolean, default=True, help="Highlight self-intersecting points")
self.arg_parser.add_argument("--highlight_intersectionpoints", type=inkex.Boolean, default=True, help="Highlight self-intersecting points") pars.add_argument("--color_selfintersecting", type=Color, default='1923076095', help="Color closed contours")
self.arg_parser.add_argument("--color_selfintersecting", type=Color, default='1923076095', help="Color closed contours") pars.add_argument("--color_intersectionpoints", type=Color, default='4239343359', help="Color closed contours")
self.arg_parser.add_argument("--color_intersectionpoints", type=Color, default='4239343359', help="Color closed contours") pars.add_argument("--addlines", type=inkex.Boolean, default=True, help="Add closing lines for self-crossing contours")
self.arg_parser.add_argument("--addlines", type=inkex.Boolean, default=True, help="Add closing lines for self-crossing contours") pars.add_argument("--polypaths", type=inkex.Boolean, default=True, help="Add polypath outline for self-crossing contours")
self.arg_parser.add_argument("--polypaths", type=inkex.Boolean, default=True, help="Add polypath outline for self-crossing contours") pars.add_argument("--dotsize", type=int, default=10, help="Dot size (px) for self-intersecting points")
self.arg_parser.add_argument("--dotsize", type=int, default=10, help="Dot size (px) for self-intersecting points") pars.add_argument("--remove_opened", type=inkex.Boolean, default=False, help="Remove opened contours")
self.arg_parser.add_argument("--remove_opened", type=inkex.Boolean, default=False, help="Remove opened contours") pars.add_argument("--remove_closed", type=inkex.Boolean, default=False, help="Remove closed contours")
self.arg_parser.add_argument("--remove_closed", type=inkex.Boolean, default=False, help="Remove closed contours") pars.add_argument("--remove_selfintersecting", type=inkex.Boolean, default=False, help="Remove self-intersecting contours")
self.arg_parser.add_argument("--remove_selfintersecting", type=inkex.Boolean, default=False, help="Remove self-intersecting contours") pars.add_argument("--show_debug", type=inkex.Boolean, default=False, help="Show debug info")
self.arg_parser.add_argument("--show_debug", type=inkex.Boolean, default=False, help="Show debug info")
#function to refine the style of the lines #function to refine the style of the lines
def adjustStyle(self, node): def adjustStyle(self, node):

View File

@ -58,14 +58,14 @@ class CutCraftNode(object):
return self.children[0].insert(part, shape) return self.children[0].insert(part, shape)
class CutCraftShape(inkex.Effect): class CutCraftShape(inkex.EffectExtension):
def __init__(self):
inkex.Effect.__init__(self) def add_arguments(self, pars):
self.arg_parser.add_argument("--active-tab", default="Options", help="The tab selected when OK was pressed") pars.add_argument("--active-tab", default="Options", help="The tab selected when OK was pressed")
self.arg_parser.add_argument("--unit", default="mm", help="unit of measure for circular pitch and center diameter") pars.add_argument("--unit", default="mm", help="unit of measure for circular pitch and center diameter")
self.arg_parser.add_argument("--thickness", type=float, default=20.0, help="Material Thickness") pars.add_argument("--thickness", type=float, default=20.0, help="Material Thickness")
self.arg_parser.add_argument("--kerf", type=float, default=20.0, help="Laser Cutter Kerf") pars.add_argument("--kerf", type=float, default=20.0, help="Laser Cutter Kerf")
self.arg_parser.add_argument("--linethickness", default="1px", help="Line Thickness") pars.add_argument("--linethickness", default="1px", help="Line Thickness")
def effect(self): def effect(self):
self.unit = self.options.unit self.unit = self.options.unit

View File

@ -18,7 +18,7 @@ import sys
import os import os
from lxml import etree from lxml import etree
class CutOptimWrapper(inkex.Effect): class CutOptimWrapper(inkex.EffectExtension):
def __init__(self): def __init__(self):
inkex.Effect.__init__(self) inkex.Effect.__init__(self)
args = sys.argv[1:] args = sys.argv[1:]

View File

@ -29,22 +29,22 @@ ToDos:
- maybe add some DXF model preview tool (maybe a useless idea at all) - maybe add some DXF model preview tool (maybe a useless idea at all)
""" """
class PapercraftUnfold(inkex.Effect): class PapercraftUnfold(inkex.EffectExtension):
def __init__(self):
inkex.Effect.__init__(self) def add_arguments(self, pars):
self.arg_parser.add_argument("--inputfile") pars.add_argument("--inputfile")
self.arg_parser.add_argument("--resizetoimport", type=inkex.Boolean, default=True, help="Resize the canvas to the imported drawing's bounding box") pars.add_argument("--resizetoimport", type=inkex.Boolean, default=True, help="Resize the canvas to the imported drawing's bounding box")
self.arg_parser.add_argument("--extraborder", type=float, default=0.0) pars.add_argument("--extraborder", type=float, default=0.0)
self.arg_parser.add_argument("--extraborder_units") pars.add_argument("--extraborder_units")
self.arg_parser.add_argument("--scalefactor", type=float, default=1.0, help="Manual scale factor") pars.add_argument("--scalefactor", type=float, default=1.0, help="Manual scale factor")
self.arg_parser.add_argument("--nomerge", type=inkex.Boolean, default=False, help="No merging of faces into single polygon") pars.add_argument("--nomerge", type=inkex.Boolean, default=False, help="No merging of faces into single polygon")
self.arg_parser.add_argument("--number", type=inkex.Boolean, default=False, help="Print face numbers (labels)") pars.add_argument("--number", type=inkex.Boolean, default=False, help="Print face numbers (labels)")
self.arg_parser.add_argument("--divide", type=inkex.Boolean, default=False, help="Draw each face separate") pars.add_argument("--divide", type=inkex.Boolean, default=False, help="Draw each face separate")
self.arg_parser.add_argument("--overlap", type=inkex.Boolean, default=False, help="Allow overlapping faces in cut-out sheet") pars.add_argument("--overlap", type=inkex.Boolean, default=False, help="Allow overlapping faces in cut-out sheet")
self.arg_parser.add_argument("--hide", type=inkex.Boolean, default=False, help="Hide glue tabs") pars.add_argument("--hide", type=inkex.Boolean, default=False, help="Hide glue tabs")
self.arg_parser.add_argument("--force", type=inkex.Boolean, default=False, help="Force glue tabs, even if intersecting faces") pars.add_argument("--force", type=inkex.Boolean, default=False, help="Force glue tabs, even if intersecting faces")
self.arg_parser.add_argument("--split", default="", help="Comma separated list of face numbers to disconnect from the rest") pars.add_argument("--split", default="", help="Comma separated list of face numbers to disconnect from the rest")
self.arg_parser.add_argument("--strategy", default=0, help="Generation strategy") pars.add_argument("--strategy", default=0, help="Generation strategy")
def effect(self): def effect(self):
dxf_input = self.options.inputfile dxf_input = self.options.inputfile

View File

@ -48,77 +48,77 @@ from ezdxf.addons.drawing.matplotlib import MatplotlibBackend #for recent ezdxf
from ezdxf.addons import Importer from ezdxf.addons import Importer
class DXFDWGImport(inkex.EffectExtension): class DXFDWGImport(inkex.EffectExtension):
def __init__(self):
inkex.Effect.__init__(self) def add_arguments(self, pars):
#blank tabs #blank tabs
self.arg_parser.add_argument("--tab") pars.add_argument("--tab")
#general #general
self.arg_parser.add_argument("--inputfile") pars.add_argument("--inputfile")
self.arg_parser.add_argument("--dxf_to_svg_parser", default="bjnortier", help="Choose a DXF to SVG parser") pars.add_argument("--dxf_to_svg_parser", default="bjnortier", help="Choose a DXF to SVG parser")
self.arg_parser.add_argument("--resizetoimport", type=inkex.Boolean, default=True, help="Resize the canvas to the imported drawing's bounding box") pars.add_argument("--resizetoimport", type=inkex.Boolean, default=True, help="Resize the canvas to the imported drawing's bounding box")
self.arg_parser.add_argument("--extraborder", type=float, default=0.0) pars.add_argument("--extraborder", type=float, default=0.0)
self.arg_parser.add_argument("--extraborder_units") pars.add_argument("--extraborder_units")
#ODA File Converter #ODA File Converter
self.arg_parser.add_argument("--oda_fileconverter", default=r"C:\Program Files\ODA\oda_fileconverter_title 21.6.0\oda_fileconverter.exe", help="Full path to 'oda_fileconverter.exe'") pars.add_argument("--oda_fileconverter", default=r"C:\Program Files\ODA\oda_fileconverter_title 21.6.0\oda_fileconverter.exe", help="Full path to 'oda_fileconverter.exe'")
self.arg_parser.add_argument("--oda_hidewindow", type=inkex.Boolean, default=True, help="Hide ODA GUI window") pars.add_argument("--oda_hidewindow", type=inkex.Boolean, default=True, help="Hide ODA GUI window")
self.arg_parser.add_argument("--oda_outputformat", default="ACAD2018_DXF", help="ODA AutoCAD Output version") pars.add_argument("--oda_outputformat", default="ACAD2018_DXF", help="ODA AutoCAD Output version")
self.arg_parser.add_argument("--oda_keepconverted_dxf", type=inkex.Boolean, default=True, help="Keep ODA converted DXF file") pars.add_argument("--oda_keepconverted_dxf", type=inkex.Boolean, default=True, help="Keep ODA converted DXF file")
self.arg_parser.add_argument("--oda_skip_dxf_to_dxf", type=inkex.Boolean, default=False, help="Skip conversion from DXF to DXF") pars.add_argument("--oda_skip_dxf_to_dxf", type=inkex.Boolean, default=False, help="Skip conversion from DXF to DXF")
self.arg_parser.add_argument("--oda_audit_repair", type=inkex.Boolean, default=True, help="Perform audit / autorepair") pars.add_argument("--oda_audit_repair", type=inkex.Boolean, default=True, help="Perform audit / autorepair")
#sk1 UniConvertor #sk1 UniConvertor
self.arg_parser.add_argument("--sk1_uniconverter", default=r"C:\Program Files (x86)\sK1 Project\UniConvertor-1.1.6\uniconvertor.cmd", help="Full path to 'uniconvertor.cmd'") pars.add_argument("--sk1_uniconverter", default=r"C:\Program Files (x86)\sK1 Project\UniConvertor-1.1.6\uniconvertor.cmd", help="Full path to 'uniconvertor.cmd'")
self.arg_parser.add_argument("--opendironerror", type=inkex.Boolean, default=True, help="Open containing output directory on conversion errors") pars.add_argument("--opendironerror", type=inkex.Boolean, default=True, help="Open containing output directory on conversion errors")
#ezdxf preprocessing #ezdxf preprocessing
self.arg_parser.add_argument("--ezdxf_output_version", default="SAME", help="ezdxf output version") pars.add_argument("--ezdxf_output_version", default="SAME", help="ezdxf output version")
self.arg_parser.add_argument("--ezdfx_keep_preprocessed", type=inkex.Boolean, default=True, help="Keep ezdxf preprocessed DXF file") pars.add_argument("--ezdfx_keep_preprocessed", type=inkex.Boolean, default=True, help="Keep ezdxf preprocessed DXF file")
self.arg_parser.add_argument("--ezdxf_preprocessing", type=inkex.Boolean, default=True) pars.add_argument("--ezdxf_preprocessing", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--allentities", type=inkex.Boolean, default=True) pars.add_argument("--allentities", type=inkex.Boolean, default=True)
#vpype-dxf (dread) #vpype-dxf (dread)
self.arg_parser.add_argument("--vpype_quantization", type=float, default=0.1, help="Maximum length of segments approximating curved elements (default 0.1mm)") pars.add_argument("--vpype_quantization", type=float, default=0.1, help="Maximum length of segments approximating curved elements (default 0.1mm)")
self.arg_parser.add_argument("--vpype_simplify", type=inkex.Boolean, default=False, help="Simplify curved elements") pars.add_argument("--vpype_simplify", type=inkex.Boolean, default=False, help="Simplify curved elements")
self.arg_parser.add_argument("--vpype_parallel", type=inkex.Boolean, default=False, help="Multiprocessing curve conversion") pars.add_argument("--vpype_parallel", type=inkex.Boolean, default=False, help="Multiprocessing curve conversion")
#sk1 compatible entities #sk1 compatible entities
self.arg_parser.add_argument("--THREE_DFACE", type=inkex.Boolean, default=True) #3DFACE pars.add_argument("--THREE_DFACE", type=inkex.Boolean, default=True) #3DFACE
self.arg_parser.add_argument("--ARC", type=inkex.Boolean, default=True) pars.add_argument("--ARC", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--BLOCK", type=inkex.Boolean, default=True) pars.add_argument("--BLOCK", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--CIRCLE", type=inkex.Boolean, default=True) pars.add_argument("--CIRCLE", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--ELLIPSE", type=inkex.Boolean, default=True) pars.add_argument("--ELLIPSE", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--LINE", type=inkex.Boolean, default=True) pars.add_argument("--LINE", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--LWPOLYLINE", type=inkex.Boolean, default=True) pars.add_argument("--LWPOLYLINE", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--POINT", type=inkex.Boolean, default=True) pars.add_argument("--POINT", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--POLYLINE", type=inkex.Boolean, default=True) pars.add_argument("--POLYLINE", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--POP_TRAFO", type=inkex.Boolean, default=True) pars.add_argument("--POP_TRAFO", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--SEQEND", type=inkex.Boolean, default=True) pars.add_argument("--SEQEND", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--SOLID", type=inkex.Boolean, default=True) pars.add_argument("--SOLID", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--SPLINE", type=inkex.Boolean, default=True) pars.add_argument("--SPLINE", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--TABLE", type=inkex.Boolean, default=True) pars.add_argument("--TABLE", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--VERTEX", type=inkex.Boolean, default=True) pars.add_argument("--VERTEX", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--VIEWPORT", type=inkex.Boolean, default=True) pars.add_argument("--VIEWPORT", type=inkex.Boolean, default=True)
#other entities #other entities
self.arg_parser.add_argument("--THREE_DSOLID", type=inkex.Boolean, default=True) #3DSOLID pars.add_argument("--THREE_DSOLID", type=inkex.Boolean, default=True) #3DSOLID
self.arg_parser.add_argument("--ATTRIB", type=inkex.Boolean, default=True) pars.add_argument("--ATTRIB", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--BODY", type=inkex.Boolean, default=True) pars.add_argument("--BODY", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--ARC_DIMENSION", type=inkex.Boolean, default=True) pars.add_argument("--ARC_DIMENSION", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--HATCH", type=inkex.Boolean, default=True) pars.add_argument("--HATCH", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--IMAGE", type=inkex.Boolean, default=True) pars.add_argument("--IMAGE", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--INSERT", type=inkex.Boolean, default=True) pars.add_argument("--INSERT", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--MESH", type=inkex.Boolean, default=True) pars.add_argument("--MESH", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--MTEXT", type=inkex.Boolean, default=True) pars.add_argument("--MTEXT", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--RAY", type=inkex.Boolean, default=True) pars.add_argument("--RAY", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--REGION", type=inkex.Boolean, default=True) pars.add_argument("--REGION", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--SHAPE", type=inkex.Boolean, default=True) pars.add_argument("--SHAPE", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--SURFACE", type=inkex.Boolean, default=True) pars.add_argument("--SURFACE", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--TRACE", type=inkex.Boolean, default=True) pars.add_argument("--TRACE", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--UNDERLAY", type=inkex.Boolean, default=True) pars.add_argument("--UNDERLAY", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--XLINE", type=inkex.Boolean, default=True) pars.add_argument("--XLINE", type=inkex.Boolean, default=True)
def openExplorer(self, temp_output_dir): def openExplorer(self, temp_output_dir):
DETACHED_PROCESS = 0x00000008 DETACHED_PROCESS = 0x00000008

View File

@ -72,51 +72,49 @@ def draw_circle_marker(x,y, radius, parent):
### ###
class Fret_ruler(inkex.Effect): class Fret_ruler(inkex.EffectExtension):
def __init__(self): def add_arguments(self, pars):
inkex.Effect.__init__(self) pars.add_argument('--method', default='12th Root of 2', help="Method to calculate scale")
# main tab pars.add_argument('--draw_style', default='Ruler', help="How to draw the Ruler/NEck")
self.arg_parser.add_argument('--method', default='12th Root of 2', help="Method to calculate scale") pars.add_argument("--nth", type=int,default=12, help="For different number of notes in a scale")
self.arg_parser.add_argument('--draw_style', default='Ruler', help="How to draw the Ruler/NEck") pars.add_argument('--scala_filename', default='12tet', help="Name of file in scales directory")
self.arg_parser.add_argument("--nth", type=int,default=12, help="For different number of notes in a scale") pars.add_argument("--units", default="in", help="The units of entered dimensions")
self.arg_parser.add_argument('--scala_filename', default='12tet', help="Name of file in scales directory") pars.add_argument("--length", type=float, default=25.5, help="Length of the Scale (and Ruler)")
self.arg_parser.add_argument("--units", default="in", help="The units of entered dimensions") pars.add_argument("--width", type=float, default=1.5, help="Width of the Ruler (= Nut if drawing a neck)")
self.arg_parser.add_argument("--length", type=float, default=25.5, help="Length of the Scale (and Ruler)") pars.add_argument("--frets", type=int, default=18, help="number of frets on the scale")
self.arg_parser.add_argument("--width", type=float, default=1.5, help="Width of the Ruler (= Nut if drawing a neck)")
self.arg_parser.add_argument("--frets", type=int, default=18, help="number of frets on the scale")
# #
self.arg_parser.add_argument("--fanned", type=inkex.Boolean, default=False, help="Two scales on either side of the Neck") pars.add_argument("--fanned", type=inkex.Boolean, default=False, help="Two scales on either side of the Neck")
self.arg_parser.add_argument("--basslength", type=float, default=25.5, help="Length of the Bass side Scale") pars.add_argument("--basslength", type=float, default=25.5, help="Length of the Bass side Scale")
self.arg_parser.add_argument("--perpendicular", type=int, default=7, help="Fret number which is perpendicular to the Neck") pars.add_argument("--perpendicular", type=int, default=7, help="Fret number which is perpendicular to the Neck")
# #
self.arg_parser.add_argument("--linewidth", type=float, default=0.1, help="Width of drawn lines") pars.add_argument("--linewidth", type=float, default=0.1, help="Width of drawn lines")
self.arg_parser.add_argument("--notch_width", type=float, default=0.125, help="Width of Fret notches on Router template") pars.add_argument("--notch_width", type=float, default=0.125, help="Width of Fret notches on Router template")
self.arg_parser.add_argument("--annotate", type=inkex.Boolean, default=True, help="Annotate with Markers etc") pars.add_argument("--annotate", type=inkex.Boolean, default=True, help="Annotate with Markers etc")
self.arg_parser.add_argument("--centerline", type=inkex.Boolean, default=True, help="Draw a centerline") pars.add_argument("--centerline", type=inkex.Boolean, default=True, help="Draw a centerline")
# Neck # Neck
self.arg_parser.add_argument("--constant_width", type=inkex.Boolean, default=True, help="Use Bridge width as well to make Neck") pars.add_argument("--constant_width", type=inkex.Boolean, default=True, help="Use Bridge width as well to make Neck")
self.arg_parser.add_argument("--width_bridge", type=float, default=2.0, help="Width at the Bridge (drawing Neck not Ruler)") pars.add_argument("--width_bridge", type=float, default=2.0, help="Width at the Bridge (drawing Neck not Ruler)")
self.arg_parser.add_argument("--show_markers", type=inkex.Boolean, default=False, help="Show Neck Marker Positions") pars.add_argument("--show_markers", type=inkex.Boolean, default=False, help="Show Neck Marker Positions")
self.arg_parser.add_argument('--markers', default='3,5,7,10,12,12,15', help="List of frets to draw markers on") pars.add_argument('--markers', default='3,5,7,10,12,12,15', help="List of frets to draw markers on")
# #
self.arg_parser.add_argument("--nutcomp", type=inkex.Boolean, default=False, help="Modify Nut position") pars.add_argument("--nutcomp", type=inkex.Boolean, default=False, help="Modify Nut position")
self.arg_parser.add_argument("--nutcomp_value", default="0.012in (0.30mm)", help="Preset (usual) Nut compensation values") pars.add_argument("--nutcomp_value", default="0.012in (0.30mm)", help="Preset (usual) Nut compensation values")
self.arg_parser.add_argument("--nutcomp_manual", type=float, default=0.014, help="Manual distance to move Nut closer to Bridge") pars.add_argument("--nutcomp_manual", type=float, default=0.014, help="Manual distance to move Nut closer to Bridge")
# #
self.arg_parser.add_argument("--show_curves", type=inkex.Boolean, default=False, help="Show a neck curvature ruler") pars.add_argument("--show_curves", type=inkex.Boolean, default=False, help="Show a neck curvature ruler")
self.arg_parser.add_argument("--neck_radius", type=float, default=2.0, help="Radius of Neck curvature") pars.add_argument("--neck_radius", type=float, default=2.0, help="Radius of Neck curvature")
self.arg_parser.add_argument("--arc_length", type=float, default=2.0, help="Length of Arc") pars.add_argument("--arc_length", type=float, default=2.0, help="Length of Arc")
self.arg_parser.add_argument("--block_mode", type=inkex.Boolean, default=False, help="Draw block or finger style") pars.add_argument("--block_mode", type=inkex.Boolean, default=False, help="Draw block or finger style")
self.arg_parser.add_argument("--arc_height", type=float, default=2.0, help="height of Arc") pars.add_argument("--arc_height", type=float, default=2.0, help="height of Arc")
self.arg_parser.add_argument("--string_spacing", type=float, default=2.0, help="Spacing between strings") pars.add_argument("--string_spacing", type=float, default=2.0, help="Spacing between strings")
# #
self.arg_parser.add_argument("--filter_tones", type=inkex.Boolean, default=True, help="Only show Scala files with this many notes in a scale.") pars.add_argument("--filter_tones", type=inkex.Boolean, default=True, help="Only show Scala files with this many notes in a scale.")
self.arg_parser.add_argument("--scale", type=int, default=12, help="number of Notes in the scale") pars.add_argument("--scale", type=int, default=12, help="number of Notes in the scale")
self.arg_parser.add_argument("--filter_label", type=inkex.Boolean, default=True, help="Only show Scala files with this keyword in them.") pars.add_argument("--filter_label", type=inkex.Boolean, default=True, help="Only show Scala files with this keyword in them.")
self.arg_parser.add_argument("--keywords", default="diatonic", help="Keywords to search for") pars.add_argument("--keywords", default="diatonic", help="Keywords to search for")
# here so we can have tabs # here so we can have tabs
self.arg_parser.add_argument("-t", "--active-tab", default='ruler', help="Active tab.") pars.add_argument("-t", "--active-tab", default='ruler', help="Active tab.")
def filter_scala_files(self, parent): def filter_scala_files(self, parent):
""" Look in the scale directory for files. """ Look in the scale directory for files.

View File

@ -12,15 +12,15 @@ from lxml import etree
from involute import * from involute import *
class Gears(inkex.Effect): class Gears(inkex.EffectExtension):
def __init__(self):
inkex.Effect.__init__(self) def add_arguments(self, pars):
self.arg_parser.add_argument("--tab", default="Options", help="The tab selected when OK was pressed") pars.add_argument("--tab", default="Options", help="The tab selected when OK was pressed")
self.arg_parser.add_argument("-t", "--teeth", type=int, default=24, help="Number of teeth") pars.add_argument("-t", "--teeth", type=int, default=24, help="Number of teeth")
self.arg_parser.add_argument("-p", "--pressure_angle", type=float, default="20", help="Pressure angle") pars.add_argument("-p", "--pressure_angle", type=float, default="20", help="Pressure angle")
self.arg_parser.add_argument("-y", "--size_type", type=int, default="1", help="Size type (1 = module (mm), 2 = pitch diameter (inches), 3 = diametral pitch (inches)") pars.add_argument("-y", "--size_type", type=int, default="1", help="Size type (1 = module (mm), 2 = pitch diameter (inches), 3 = diametral pitch (inches)")
self.arg_parser.add_argument("-s", "--size", type=float, default="5", help="Size") pars.add_argument("-s", "--size", type=float, default="5", help="Size")
self.arg_parser.add_argument("-o", "--orientation", type=int, default="1", help="Gear orientation") pars.add_argument("-o", "--orientation", type=int, default="1", help="Gear orientation")
def effect(self): def effect(self):
Z = self.options.teeth Z = self.options.teeth

View File

@ -23,7 +23,7 @@ License: GNU GPL v3
Used version of imagetracerjs: https://github.com/jankovicsandras/imagetracerjs/commit/4d0f429efbb936db1a43db80815007a2cb113b34 Used version of imagetracerjs: https://github.com/jankovicsandras/imagetracerjs/commit/4d0f429efbb936db1a43db80815007a2cb113b34
""" """
class Imagetracerjs (inkex.Effect): class Imagetracerjs (inkex.EffectExtension):
def checkImagePath(self, node): def checkImagePath(self, node):
xlink = node.get('xlink:href') xlink = node.get('xlink:href')
@ -48,27 +48,26 @@ class Imagetracerjs (inkex.Effect):
if (os.path.isfile(path)): if (os.path.isfile(path)):
return path return path
def __init__(self): def add_arguments(self, pars):
inkex.Effect.__init__(self) pars.add_argument("--tabs")
self.arg_parser.add_argument("--tabs") pars.add_argument("--keeporiginal", type=inkex.Boolean, default=False, help="Keep original image on canvas")
self.arg_parser.add_argument("--keeporiginal", type=inkex.Boolean, default=False, help="Keep original image on canvas") pars.add_argument("--ltres", type=float, default=1.0, help="Error treshold straight lines")
self.arg_parser.add_argument("--ltres", type=float, default=1.0, help="Error treshold straight lines") pars.add_argument("--qtres", type=float, default=1.0, help="Error treshold quadratic splines")
self.arg_parser.add_argument("--qtres", type=float, default=1.0, help="Error treshold quadratic splines") pars.add_argument("--pathomit", type=int, default=8, help="Noise reduction - discard edge node paths shorter than")
self.arg_parser.add_argument("--pathomit", type=int, default=8, help="Noise reduction - discard edge node paths shorter than") pars.add_argument("--rightangleenhance", type=inkex.Boolean, default=True, help="Enhance right angle corners")
self.arg_parser.add_argument("--rightangleenhance", type=inkex.Boolean, default=True, help="Enhance right angle corners") pars.add_argument("--colorsampling", default="2",help="Color sampling")
self.arg_parser.add_argument("--colorsampling", default="2",help="Color sampling") pars.add_argument("--numberofcolors", type=int, default=16, help="Number of colors to use on palette")
self.arg_parser.add_argument("--numberofcolors", type=int, default=16, help="Number of colors to use on palette") pars.add_argument("--mincolorratio", type=int, default=0, help="Color randomization ratio")
self.arg_parser.add_argument("--mincolorratio", type=int, default=0, help="Color randomization ratio") pars.add_argument("--colorquantcycles", type=int, default=3, help="Color quantization will be repeated this many times")
self.arg_parser.add_argument("--colorquantcycles", type=int, default=3, help="Color quantization will be repeated this many times") pars.add_argument("--layering", default="0",help="Layering")
self.arg_parser.add_argument("--layering", default="0",help="Layering") pars.add_argument("--strokewidth", type=float, default=1.0, help="SVG stroke-width")
self.arg_parser.add_argument("--strokewidth", type=float, default=1.0, help="SVG stroke-width") pars.add_argument("--linefilter", type=inkex.Boolean, default=False, help="Noise reduction line filter")
self.arg_parser.add_argument("--linefilter", type=inkex.Boolean, default=False, help="Noise reduction line filter") #pars.add_argument("--scale", type=float, default=1.0, help="Coordinate scale factor")
#self.arg_parser.add_argument("--scale", type=float, default=1.0, help="Coordinate scale factor") pars.add_argument("--roundcoords", type=int, default=1, help="Decimal places for rounding")
self.arg_parser.add_argument("--roundcoords", type=int, default=1, help="Decimal places for rounding") pars.add_argument("--viewbox", type=inkex.Boolean, default=False, help="Enable or disable SVG viewBox")
self.arg_parser.add_argument("--viewbox", type=inkex.Boolean, default=False, help="Enable or disable SVG viewBox") pars.add_argument("--desc", type=inkex.Boolean, default=False, help="SVG descriptions")
self.arg_parser.add_argument("--desc", type=inkex.Boolean, default=False, help="SVG descriptions") pars.add_argument("--blurradius", type=int, default=0, help="Selective Gaussian blur preprocessing")
self.arg_parser.add_argument("--blurradius", type=int, default=0, help="Selective Gaussian blur preprocessing") pars.add_argument("--blurdelta", type=float, default=20.0, help="RGBA delta treshold for selective Gaussian blur preprocessing")
self.arg_parser.add_argument("--blurdelta", type=float, default=20.0, help="RGBA delta treshold for selective Gaussian blur preprocessing")
def effect(self): def effect(self):

View File

@ -24,17 +24,14 @@ def points_to_svgd(p, close=False):
return svgd return svgd
class Recursive(inkex.Effect): class Recursive(inkex.EffectExtension):
def __init__(self): def add_arguments(self, pars):
" define how the options are mapped from the inx file " pars.add_argument("--verti", type=int, default=20, help="Height")
inkex.Effect.__init__(self) # initialize the super class pars.add_argument("--horiz", type=int, default=20, help="Length")
pars.add_argument("--size", type=float, default=10.0, help="Cell Size")
self.arg_parser.add_argument("--verti", type=int, default=20, help="Height") pars.add_argument("--algo", default=1, help="Algorithm")
self.arg_parser.add_argument("--horiz", type=int, default=20, help="Length") pars.add_argument("--width", type=float, default=10.0, help="Line width")
self.arg_parser.add_argument("--size", type=float, default=10.0, help="Cell Size")
self.arg_parser.add_argument("--algo", default=1, help="Algorithm")
self.arg_parser.add_argument("--width", type=float, default=10.0, help="Line width")
def effect(self): def effect(self):
# basic style # basic style

View File

@ -23,37 +23,37 @@ import math
import inkex import inkex
import mehr_plate import mehr_plate
class mehr_box_maker(inkex.Effect): class mehr_box_maker(inkex.EffectExtension):
def __init__(self):
inkex.Effect.__init__(self) def add_arguments(self, pars):
self.arg_parser.add_argument('--page',default='page_1') pars.add_argument('--page',default='page_1')
self.arg_parser.add_argument('--unit',default='mm') pars.add_argument('--unit',default='mm')
self.arg_parser.add_argument('--inside') pars.add_argument('--inside')
self.arg_parser.add_argument('--X_size',type=float,default='0.0') pars.add_argument('--X_size',type=float,default='0.0')
self.arg_parser.add_argument('--Y_size',type=float,default='0.0') pars.add_argument('--Y_size',type=float,default='0.0')
self.arg_parser.add_argument('--Z_size',type=float,default='0.0') pars.add_argument('--Z_size',type=float,default='0.0')
self.arg_parser.add_argument('--tab_mode',default='number') pars.add_argument('--tab_mode',default='number')
self.arg_parser.add_argument('--tab_size',type=float,default='0.0') pars.add_argument('--tab_size',type=float,default='0.0')
self.arg_parser.add_argument('--X_tabs',type=int,default='0') pars.add_argument('--X_tabs',type=int,default='0')
self.arg_parser.add_argument('--Y_tabs',type=int,default='0') pars.add_argument('--Y_tabs',type=int,default='0')
self.arg_parser.add_argument('--Z_tabs',type=int,default='0') pars.add_argument('--Z_tabs',type=int,default='0')
self.arg_parser.add_argument('--d_top',type=inkex.Boolean,default=True) pars.add_argument('--d_top',type=inkex.Boolean,default=True)
self.arg_parser.add_argument('--d_bottom',type=inkex.Boolean,default=True) pars.add_argument('--d_bottom',type=inkex.Boolean,default=True)
self.arg_parser.add_argument('--d_left',type=inkex.Boolean,default=True) pars.add_argument('--d_left',type=inkex.Boolean,default=True)
self.arg_parser.add_argument('--d_right',type=inkex.Boolean,default=True) pars.add_argument('--d_right',type=inkex.Boolean,default=True)
self.arg_parser.add_argument('--d_front',type=inkex.Boolean,default=True) pars.add_argument('--d_front',type=inkex.Boolean,default=True)
self.arg_parser.add_argument('--d_back',type=inkex.Boolean,default=True) pars.add_argument('--d_back',type=inkex.Boolean,default=True)
self.arg_parser.add_argument('--thickness',type=float,default=4,help='Thickness of Material') pars.add_argument('--thickness',type=float,default=4,help='Thickness of Material')
self.arg_parser.add_argument('--kerf',type=float,default=0.2) pars.add_argument('--kerf',type=float,default=0.2)
self.arg_parser.add_argument('--spaceing',type=float,default=1) pars.add_argument('--spaceing',type=float,default=1)
self.arg_parser.add_argument('--X_compartments',type=int,default=1) pars.add_argument('--X_compartments',type=int,default=1)
self.arg_parser.add_argument('--X_divisions') pars.add_argument('--X_divisions')
self.arg_parser.add_argument('--X_mode') pars.add_argument('--X_mode')
self.arg_parser.add_argument('--X_fit',type=inkex.Boolean) pars.add_argument('--X_fit',type=inkex.Boolean)
self.arg_parser.add_argument('--Y_compartments',type=int,default=1) pars.add_argument('--Y_compartments',type=int,default=1)
self.arg_parser.add_argument('--Y_divisions') pars.add_argument('--Y_divisions')
self.arg_parser.add_argument('--Y_mode') pars.add_argument('--Y_mode')
self.arg_parser.add_argument('--Y_fit',type=inkex.Boolean) pars.add_argument('--Y_fit',type=inkex.Boolean)
def effect(self): def effect(self):
thickness=self.svg.unittouu(str(self.options.thickness)+self.options.unit) thickness=self.svg.unittouu(str(self.options.thickness)+self.options.unit)

View File

@ -77,30 +77,30 @@ Module licenses
""" """
class Unfold(inkex.Effect): class Unfold(inkex.EffectExtension):
def __init__(self):
inkex.Effect.__init__(self) def add_arguments(self, pars):
self.arg_parser.add_argument("--tab") pars.add_argument("--tab")
self.arg_parser.add_argument("--inputfile") pars.add_argument("--inputfile")
self.arg_parser.add_argument("--generatelabels", type=inkex.Boolean, default=True, help="Generate labels for edges") pars.add_argument("--generatelabels", type=inkex.Boolean, default=True, help="Generate labels for edges")
self.arg_parser.add_argument("--resizetoimport", type=inkex.Boolean, default=True, help="Resize the canvas to the imported drawing's bounding box") pars.add_argument("--resizetoimport", type=inkex.Boolean, default=True, help="Resize the canvas to the imported drawing's bounding box")
self.arg_parser.add_argument("--extraborder", type=float, default=0.0) pars.add_argument("--extraborder", type=float, default=0.0)
self.arg_parser.add_argument("--extraborder_units") pars.add_argument("--extraborder_units")
self.arg_parser.add_argument("--show_fstl", type=inkex.Boolean, default=True, help="Show converted (and fixed) STL in fstl Viewer") pars.add_argument("--show_fstl", type=inkex.Boolean, default=True, help="Show converted (and fixed) STL in fstl Viewer")
self.arg_parser.add_argument("--exact", type=inkex.Boolean, default=True, help="Only check for perfectly matched edges") pars.add_argument("--exact", type=inkex.Boolean, default=True, help="Only check for perfectly matched edges")
self.arg_parser.add_argument("--nearby", type=inkex.Boolean, default=True, help="Find and connect nearby facets. Correct bad facets") pars.add_argument("--nearby", type=inkex.Boolean, default=True, help="Find and connect nearby facets. Correct bad facets")
self.arg_parser.add_argument("--tolerance", type=float, default=0.0, help="Initial tolerance to use for nearby check") pars.add_argument("--tolerance", type=float, default=0.0, help="Initial tolerance to use for nearby check")
self.arg_parser.add_argument("--iterations", type=int, default=1, help="Number of iterations for nearby check") pars.add_argument("--iterations", type=int, default=1, help="Number of iterations for nearby check")
self.arg_parser.add_argument("--increment", type=float, default=0.0, help="Amount to increment tolerance after iteration") pars.add_argument("--increment", type=float, default=0.0, help="Amount to increment tolerance after iteration")
self.arg_parser.add_argument("--remove_unconnected", type=inkex.Boolean, default=True, help="Remove facets that have 0 neighbors") pars.add_argument("--remove_unconnected", type=inkex.Boolean, default=True, help="Remove facets that have 0 neighbors")
self.arg_parser.add_argument("--fill_holes", type=inkex.Boolean, default=True, help="Add facets to fill holes") pars.add_argument("--fill_holes", type=inkex.Boolean, default=True, help="Add facets to fill holes")
self.arg_parser.add_argument("--normal_directions", type=inkex.Boolean, default=True, help="Check and fix direction of normals (ie cw, ccw)") pars.add_argument("--normal_directions", type=inkex.Boolean, default=True, help="Check and fix direction of normals (ie cw, ccw)")
self.arg_parser.add_argument("--reverse_all", type=inkex.Boolean, default=True, help="Reverse the directions of all facets and normals") pars.add_argument("--reverse_all", type=inkex.Boolean, default=True, help="Reverse the directions of all facets and normals")
self.arg_parser.add_argument("--normal_values", type=inkex.Boolean, default=True, help="Check and fix normal values") pars.add_argument("--normal_values", type=inkex.Boolean, default=True, help="Check and fix normal values")
self.arg_parser.add_argument("--xy_mirror", type=inkex.Boolean, default=True) pars.add_argument("--xy_mirror", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--yz_mirror", type=inkex.Boolean, default=True) pars.add_argument("--yz_mirror", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--xz_mirror", type=inkex.Boolean, default=True) pars.add_argument("--xz_mirror", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--scale", type=float, default=1.0) pars.add_argument("--scale", type=float, default=1.0)
def effect(self): def effect(self):
inputfile = self.options.inputfile inputfile = self.options.inputfile

View File

@ -189,19 +189,14 @@ def chunks(alist, max_len):
# ----- PathOps() class, methods # ----- PathOps() class, methods
class PathOps(inkex.Effect): class PathOps(inkex.EffectExtension):
"""Effect-based class to apply Inkscape path operations."""
def __init__(self): def add_arguments(self, pars):
"""Init base class.""" pars.add_argument("--ink_verb", default="SelectionDiff", help="Inkscape verb for path op")
inkex.Effect.__init__(self) pars.add_argument("--max_ops", type=int, default=500, help="Max ops per external run")
pars.add_argument("--recursive_sel", type=inkex.Boolean, help="Recurse beyond one group level")
# options pars.add_argument("--keep_top", type=inkex.Boolean, help="Keep top element when done")
self.arg_parser.add_argument("--ink_verb", default="SelectionDiff", help="Inkscape verb for path op") pars.add_argument("--dry_run", type=inkex.Boolean, default=False, help="Dry-run without exec")
self.arg_parser.add_argument("--max_ops", type=int, default=500, help="Max ops per external run")
self.arg_parser.add_argument("--recursive_sel", type=inkex.Boolean, help="Recurse beyond one group level")
self.arg_parser.add_argument("--keep_top", type=inkex.Boolean, help="Keep top element when done")
self.arg_parser.add_argument("--dry_run", type=inkex.Boolean, default=False, help="Dry-run without exec")
def get_selected_ids(self): def get_selected_ids(self):
"""Return a list of valid ids for inkscape path operations.""" """Return a list of valid ids for inkscape path operations."""

View File

@ -54,12 +54,12 @@ slotStyle = [{\
0 : { 'cut' : ['m 0,0 100,0'], 'perf' : [] }}, simpletab, notab, notab] 0 : { 'cut' : ['m 0,0 100,0'], 'perf' : [] }}, simpletab, notab, notab]
class Polyhedra(inkex.Effect): class Polyhedra(inkex.EffectExtension):
def __init__(self):
inkex.Effect.__init__(self) def add_arguments(self, pars):
self.arg_parser.add_argument("-p", "--poly", default='Cube', help="polygon net to render") pars.add_argument("-p", "--poly", default='Cube', help="polygon net to render")
self.arg_parser.add_argument("-s", "--size", type=float, default=100.0, help="size of first edge, in px") pars.add_argument("-s", "--size", type=float, default=100.0, help="size of first edge, in px")
self.arg_parser.add_argument("-t", "--tabs", type=int, default=0, help="tab style") pars.add_argument("-t", "--tabs", type=int, default=0, help="tab style")
def get_tab(self, limitAngle): def get_tab(self, limitAngle):
return(self.get_connector('tab', limitAngle)) return(self.get_connector('tab', limitAngle))

View File

@ -24,7 +24,7 @@ License: GNU GPL v3
Used version of Primitive: https://github.com/fogleman/primitive/commit/0373c216458be1c4b40655b796a3aefedf8b7d23 Used version of Primitive: https://github.com/fogleman/primitive/commit/0373c216458be1c4b40655b796a3aefedf8b7d23
""" """
class Primitive (inkex.Effect): class Primitive (inkex.EffectExtension):
def rgbToHex(self, pickerColor): def rgbToHex(self, pickerColor):
longcolor = int(pickerColor) longcolor = int(pickerColor)
@ -55,19 +55,18 @@ class Primitive (inkex.Effect):
if (os.path.isfile(path)): if (os.path.isfile(path)):
return path return path
def __init__(self): def add_arguments(self, pars):
inkex.Effect.__init__(self) pars.add_argument("--keeporiginal", type=inkex.Boolean, default=False, help="Keep original image on canvas")
self.arg_parser.add_argument("--keeporiginal", type=inkex.Boolean, default=False, help="Keep original image on canvas") pars.add_argument("--cliprect", type=inkex.Boolean, default=True, help="Draw clipping rectangle")
self.arg_parser.add_argument("--cliprect", type=inkex.Boolean, default=True, help="Draw clipping rectangle") pars.add_argument("--n", type=int, default=100, help="Number of shapes")
self.arg_parser.add_argument("--n", type=int, default=100, help="Number of shapes") pars.add_argument("--m", default=1, help="Mode")
self.arg_parser.add_argument("--m", default=1, help="Mode") pars.add_argument("--rep", type=int, default=0,help="Extra shapes/iteration")
self.arg_parser.add_argument("--rep", type=int, default=0,help="Extra shapes/iteration") pars.add_argument("--r", type=int, default=256, help="Resize to size before processing (px)")
self.arg_parser.add_argument("--r", type=int, default=256, help="Resize to size before processing (px)") pars.add_argument("--s", type=int, default=1024, help="Output image size (px)")
self.arg_parser.add_argument("--s", type=int, default=1024, help="Output image size (px)") pars.add_argument("--a", type=int, default=128, help="Color alpha")
self.arg_parser.add_argument("--a", type=int, default=128, help="Color alpha") pars.add_argument("--bg_enabled", type=inkex.Boolean, default=True, help="Use average starting background color")
self.arg_parser.add_argument("--bg_enabled", type=inkex.Boolean, default=True, help="Use average starting background color") pars.add_argument("--bg", type=Color, default=255, help="Starting background color")
self.arg_parser.add_argument("--bg", type=Color, default=255, help="Starting background color") pars.add_argument("--j", type=int, default=0, help="Number of parallel workers")
self.arg_parser.add_argument("--j", type=int, default=0, help="Number of parallel workers")
def effect(self): def effect(self):

View File

@ -65,7 +65,7 @@ default=1,help="How compound paths are handled")
""" """
class ReorderEffect(inkex.Effect): class ReorderEffect(inkex.EffectExtension):
""" """
Inkscape effect extension. Inkscape effect extension.
Re-order the objects in the SVG document for faster plotting. Re-order the objects in the SVG document for faster plotting.
@ -76,11 +76,9 @@ class ReorderEffect(inkex.Effect):
""" """
def __init__( self ): def add_arguments(self, pars):
inkex.Effect.__init__( self ) pars.add_argument( "--reordering",type=int, default=1, help="How groups are handled")
pars.add_argument( "--preview_rendering",type=inkex.Boolean, default=False, help="Preview rendering") # Rendering is available for debug purposes. It only previews pen-up movements that are reordered and typically does not include all possible movement.
self.arg_parser.add_argument( "--reordering",type=int, default=1, help="How groups are handled")
self.arg_parser.add_argument( "--preview_rendering",type=inkex.Boolean, default=False, help="Preview rendering") # Rendering is available for debug purposes. It only previews pen-up movements that are reordered and typically does not include all possible movement.
self.auto_rotate = True self.auto_rotate = True
def effect(self): def effect(self):

View File

@ -32,8 +32,10 @@ if debug:
else: else:
stderr = lambda msg: None stderr = lambda msg: None
class RotateMinAll(inkex.Effect): class RotateMinAll(inkex.EffectExtension):
def effect(self): def effect(self):
def duplicateNodes(aList): def duplicateNodes(aList):
clones={} clones={}
for id,node in aList.items(): for id,node in aList.items():

View File

@ -31,7 +31,8 @@ if debug:
else: else:
stderr = lambda msg: None stderr = lambda msg: None
class RotateMinBBox(inkex.Effect): class RotateMinBBox(inkex.EffectExtension):
def effect(self): def effect(self):
for node in self.svg.selected.values(): for node in self.svg.selected.values():
min_bbox_angle = rotate_helper.optimal_rotations(node)[1] min_bbox_angle = rotate_helper.optimal_rotations(node)[1]

View File

@ -31,7 +31,8 @@ if debug:
else: else:
stderr = lambda msg: None stderr = lambda msg: None
class RotateMinWidth(inkex.Effect): class RotateMinWidth(inkex.EffectExtension):
def effect(self): def effect(self):
for node in self.svg.selected.values(): for node in self.svg.selected.values():
min_width_angle = rotate_helper.optimal_rotations(node)[0] min_width_angle = rotate_helper.optimal_rotations(node)[0]

View File

@ -36,25 +36,24 @@ End of Licensing paragraph.
import math, inkex import math, inkex
from sewing_patterns import * from sewing_patterns import *
class ShirtWaistAllington(inkex.Effect): class ShirtWaistAllington(inkex.EffectExtension):
def __init__(self):
inkex.Effect.__init__(self) def add_arguments(self, pars):
self.arg_parser.add_argument('--m_unit', default = 'Inches', help = 'Centimeters or Inches?') pars.add_argument('--m_unit', default = 'Inches', help = 'Centimeters or Inches?')
self.arg_parser.add_argument('--m_front_waist_length', type = float, default = '15.0', help = 'Front Waist Length') pars.add_argument('--m_front_waist_length', type = float, default = '15.0', help = 'Front Waist Length')
self.arg_parser.add_argument('--m_back_waist_length', type = float, default = '15.5', help = 'Back Waist Length') pars.add_argument('--m_back_waist_length', type = float, default = '15.5', help = 'Back Waist Length')
self.arg_parser.add_argument('--m_neck_circumference', type = float, default = '13.5', help = 'Neck Circumference') pars.add_argument('--m_neck_circumference', type = float, default = '13.5', help = 'Neck Circumference')
self.arg_parser.add_argument('--m_bust_circumference', type = float, default = '39.0', help = 'Bust Circumference') pars.add_argument('--m_bust_circumference', type = float, default = '39.0', help = 'Bust Circumference')
self.arg_parser.add_argument('--m_waist_circumference', type = float, default = '25.0', help = 'Waist Circumference') pars.add_argument('--m_waist_circumference', type = float, default = '25.0', help = 'Waist Circumference')
self.arg_parser.add_argument('--m_armscye_circumference', type = float, default = '15.0', help = 'Armscye circumference') pars.add_argument('--m_armscye_circumference', type = float, default = '15.0', help = 'Armscye circumference')
self.arg_parser.add_argument('--m_across_back', type = float, default = '13.5', help = 'Across Back') pars.add_argument('--m_across_back', type = float, default = '13.5', help = 'Across Back')
self.arg_parser.add_argument('--m_shoulder', type = float, default = '6.5', help = 'Shoulder') pars.add_argument('--m_shoulder', type = float, default = '6.5', help = 'Shoulder')
self.arg_parser.add_argument('--m_side', type = float, default = '7.75', help = 'Side') pars.add_argument('--m_side', type = float, default = '7.75', help = 'Side')
self.arg_parser.add_argument('--m_upper_front_height', type = float, default = '10.75', help = 'Upper Front Height') pars.add_argument('--m_upper_front_height', type = float, default = '10.75', help = 'Upper Front Height')
self.arg_parser.add_argument('--m_overarm_length', type = float, default = '20.00', help = 'Overarm Length') pars.add_argument('--m_overarm_length', type = float, default = '20.00', help = 'Overarm Length')
self.arg_parser.add_argument('--m_elbow_height', type = float, default = '9.50', help = 'Elbow Height - from wrist to elbow') pars.add_argument('--m_elbow_height', type = float, default = '9.50', help = 'Elbow Height - from wrist to elbow')
self.arg_parser.add_argument('--m_elbow_circumference', type = float, default = '12.50', help = 'Elbow Circumference - arm bent') pars.add_argument('--m_elbow_circumference', type = float, default = '12.50', help = 'Elbow Circumference - arm bent')
self.arg_parser.add_argument('--m_hand_circumference', type = float, default = '8.00', help = 'Hand Circumference') pars.add_argument('--m_hand_circumference', type = float, default = '8.00', help = 'Hand Circumference')
def effect(self): def effect(self):

View File

@ -29,22 +29,21 @@ import subprocess
from lxml import etree from lxml import etree
from inkex import Color from inkex import Color
class SVGSudoku (inkex.Effect): class SVGSudoku (inkex.EffectExtension):
def __init__(self): def add_arguments(self, pars):
inkex.Effect.__init__(self) pars.add_argument("--tab")
self.arg_parser.add_argument("--tab") pars.add_argument("--difficulty",default="mixed", help='How difficult to make puzzles.')
self.arg_parser.add_argument("--difficulty",default="mixed", help='How difficult to make puzzles.') pars.add_argument("--rows", type=int, default=1, help='Number of puzzle rows.')
self.arg_parser.add_argument("--rows", type=int, default=1, help='Number of puzzle rows.') pars.add_argument("--cols", type=int, default=1, help='Number of puzzle columns.')
self.arg_parser.add_argument("--cols", type=int, default=1, help='Number of puzzle columns.') pars.add_argument("--puzzle_size", type=int, default=6, help='The width & height of each puzzle.')
self.arg_parser.add_argument("--puzzle_size", type=int, default=6, help='The width & height of each puzzle.') pars.add_argument("--puzzle_gap", type=int, default=1, help='The space between puzzles.')
self.arg_parser.add_argument("--puzzle_gap", type=int, default=1, help='The space between puzzles.') pars.add_argument("--color_text", type=Color, default=255, help='Color for given numbers.')
self.arg_parser.add_argument("--color_text", type=Color, default=255, help='Color for given numbers.') pars.add_argument("--color_bkgnd", type=Color, default=4243148799, help='Color for the puzzle background.')
self.arg_parser.add_argument("--color_bkgnd", type=Color, default=4243148799, help='Color for the puzzle background.') pars.add_argument("--color_puzzle",type=Color, default=2290779647, help='Border color for the puzzles.')
self.arg_parser.add_argument("--color_puzzle",type=Color, default=2290779647, help='Border color for the puzzles.') pars.add_argument("--color_boxes", type=Color, default=3298820351, help='Border color for puzzle boxes.')
self.arg_parser.add_argument("--color_boxes", type=Color, default=3298820351, help='Border color for puzzle boxes.') pars.add_argument("--color_cells", type=Color, default=1923076095, help='Border color for the puzzle cells.')
self.arg_parser.add_argument("--color_cells", type=Color, default=1923076095, help='Border color for the puzzle cells.') pars.add_argument("--units", help="The unit of the dimensions")
self.arg_parser.add_argument("--units", help="The unit of the dimensions")
def draw_grid(self, g_puz, x, y): def draw_grid(self, g_puz, x, y):
bkgnd_style = {'stroke':'none', 'stroke-width':'2', 'fill':self.options.color_bkgnd } bkgnd_style = {'stroke':'none', 'stroke-width':'2', 'fill':self.options.color_bkgnd }

View File

@ -48,25 +48,25 @@ def colorString(pickerColor):
return '#' + format(longcolor >> 8, '06X') return '#' + format(longcolor >> 8, '06X')
class Grid_Triangular(inkex.Effect): class Grid_Triangular(inkex.EffectExtension):
def __init__(self):
inkex.Effect.__init__(self) def add_arguments(self, pars):
self.arg_parser.add_argument("--tabs") pars.add_argument("--tabs")
self.arg_parser.add_argument("--size_unit", default="mm", help="Unit for grid size") pars.add_argument("--size_unit", default="mm", help="Unit for grid size")
self.arg_parser.add_argument("--y_divs", type=int, default=3, help="Major vertical divisions") pars.add_argument("--y_divs", type=int, default=3, help="Major vertical divisions")
self.arg_parser.add_argument("--x_divs", type=int, default=3, help="Major horizontal divisions") pars.add_argument("--x_divs", type=int, default=3, help="Major horizontal divisions")
self.arg_parser.add_argument("--grid_angle", type=float, default=30.0, help="Angle between X axis and triangular grid lines") pars.add_argument("--grid_angle", type=float, default=30.0, help="Angle between X axis and triangular grid lines")
self.arg_parser.add_argument("--dm", type=float, default=100.0, help="Major grid division spacing") pars.add_argument("--dm", type=float, default=100.0, help="Major grid division spacing")
self.arg_parser.add_argument("--subdivs", type=int, default=5, help="Subdivisions per major grid division") pars.add_argument("--subdivs", type=int, default=5, help="Subdivisions per major grid division")
self.arg_parser.add_argument("--subsubdivs", type=int, default=2, help="Subsubdivisions per minor grid subdivision") pars.add_argument("--subsubdivs", type=int, default=2, help="Subsubdivisions per minor grid subdivision")
self.arg_parser.add_argument("--border_th", type=float, default=3.0, help="Border Line thickness") pars.add_argument("--border_th", type=float, default=3.0, help="Border Line thickness")
self.arg_parser.add_argument("--border_color", type=int, help="Border line color") pars.add_argument("--border_color", type=int, help="Border line color")
self.arg_parser.add_argument("--major_th", type=float, default=2.0, help="Major grid division line thickness") pars.add_argument("--major_th", type=float, default=2.0, help="Major grid division line thickness")
self.arg_parser.add_argument("--major_color", type=int, help="Major grid division line color") pars.add_argument("--major_color", type=int, help="Major grid division line color")
self.arg_parser.add_argument("--subdiv_th", type=float, default=1.0, help="Minor grid subdivision line thickness") pars.add_argument("--subdiv_th", type=float, default=1.0, help="Minor grid subdivision line thickness")
self.arg_parser.add_argument("--subdiv_color", type=int, help="Minor grid subdivision line color") pars.add_argument("--subdiv_color", type=int, help="Minor grid subdivision line color")
self.arg_parser.add_argument("--subsubdiv_th", type=float, default=1.0, help="Subminor grid division line thickness") pars.add_argument("--subsubdiv_th", type=float, default=1.0, help="Subminor grid division line thickness")
self.arg_parser.add_argument("--subsubdiv_color", type=int, help="Subminor grid division line color") pars.add_argument("--subsubdiv_color", type=int, help="Subminor grid division line color")
def EdgePoints(self,x0, y0, theta): def EdgePoints(self,x0, y0, theta):
# find the intersection points of the line with the extended # find the intersection points of the line with the extended

View File

@ -34,15 +34,15 @@ from scipy.cluster.vq import kmeans2
import cv2 import cv2
import urllib.request as urllib import urllib.request as urllib
class Triangulation(inkex.Effect): class Triangulation(inkex.EffectExtension):
def __init__(self):
inkex.Effect.__init__(self) def add_arguments(self, pars):
self.arg_parser.add_argument("-n", "--num_points", type=int, default=100, help="Number of points to be sampled") pars.add_argument("-n", "--num_points", type=int, default=100, help="Number of points to be sampled")
self.arg_parser.add_argument("-m", "--edge_thresh_min", type=int, default=200, help="Minimum threshold for edge detection") pars.add_argument("-m", "--edge_thresh_min", type=int, default=200, help="Minimum threshold for edge detection")
self.arg_parser.add_argument("-M", "--edge_thresh_max", type=int, default=255, help="Maximum threshold for edge detection") pars.add_argument("-M", "--edge_thresh_max", type=int, default=255, help="Maximum threshold for edge detection")
self.arg_parser.add_argument("-c", "--add_corners", type=inkex.Boolean, default=0, help="Use corners for triangulation?") pars.add_argument("-c", "--add_corners", type=inkex.Boolean, default=0, help="Use corners for triangulation?")
self.arg_parser.add_argument("-g", "--gradient_fill", type=inkex.Boolean, default=0, help="Fill triangles with gradient?") pars.add_argument("-g", "--gradient_fill", type=inkex.Boolean, default=0, help="Fill triangles with gradient?")
self.arg_parser.add_argument("-b", "--tab", default='', help="The tab of the interface") pars.add_argument("-b", "--tab", default='', help="The tab of the interface")
def draw_SVG_path(self, points, closed, style, parent): def draw_SVG_path(self, points, closed, style, parent):
pathdesc = "M " pathdesc = "M "

View File

@ -23,9 +23,7 @@ from math import *
import inkex import inkex
from inkex.paths import Path, CubicSuperPath from inkex.paths import Path, CubicSuperPath
class VHToLine(inkex.Effect): class VHToLine(inkex.EffectExtension):
def __init__(self):
inkex.Effect.__init__(self)
def effect(self): def effect(self):
if len(self.svg.selected) == 0: exit("Please select at least one path.") if len(self.svg.selected) == 0: exit("Please select at least one path.")

View File

@ -27,9 +27,7 @@ import sys
import inkex import inkex
from inkex import Transform from inkex import Transform
class SetViewBoxEffect(inkex.Effect): class SetViewBoxEffect(inkex.EffectExtension):
def __init__(self):
inkex.Effect.__init__(self)
def effect(self): def effect(self):
if len(self.svg.selected) != 1: if len(self.svg.selected) != 1:

View File

@ -54,81 +54,80 @@ Todo's
class vpypetools (inkex.EffectExtension): class vpypetools (inkex.EffectExtension):
def __init__(self): def add_arguments(self, pars):
inkex.Effect.__init__(self)
# Line Sorting # Line Sorting
self.arg_parser.add_argument("--linesort", type=inkex.Boolean, default=False) pars.add_argument("--linesort", type=inkex.Boolean, default=False)
self.arg_parser.add_argument("--linesort_no_flip", type=inkex.Boolean, default=False, help="Disable reversing stroke direction for optimization") pars.add_argument("--linesort_no_flip", type=inkex.Boolean, default=False, help="Disable reversing stroke direction for optimization")
# Line Merging # Line Merging
self.arg_parser.add_argument("--linemerge", type=inkex.Boolean, default=False) pars.add_argument("--linemerge", type=inkex.Boolean, default=False)
self.arg_parser.add_argument("--linemerge_tolerance", type=float, default=0.500, help="Maximum distance between two line endings that should be merged (default 0.500 mm)") pars.add_argument("--linemerge_tolerance", type=float, default=0.500, help="Maximum distance between two line endings that should be merged (default 0.500 mm)")
self.arg_parser.add_argument("--linemerge_no_flip", type=inkex.Boolean, default=False, help="Disable reversing stroke direction for merging") pars.add_argument("--linemerge_no_flip", type=inkex.Boolean, default=False, help="Disable reversing stroke direction for merging")
# Trimming # Trimming
self.arg_parser.add_argument("--trim", type=inkex.Boolean, default=False) pars.add_argument("--trim", type=inkex.Boolean, default=False)
self.arg_parser.add_argument("--trim_x_margin", type=float, default=0.000, help="trim margin - x direction (mm)") # keep default at 0.000 to keep clean bbox pars.add_argument("--trim_x_margin", type=float, default=0.000, help="trim margin - x direction (mm)") # keep default at 0.000 to keep clean bbox
self.arg_parser.add_argument("--trim_y_margin", type=float, default=0.000, help="trim margin - y direction (mm)") # keep default at 0.000 to keep clean bbox pars.add_argument("--trim_y_margin", type=float, default=0.000, help="trim margin - y direction (mm)") # keep default at 0.000 to keep clean bbox
# Relooping # Relooping
self.arg_parser.add_argument("--reloop", type=inkex.Boolean, default=False) pars.add_argument("--reloop", type=inkex.Boolean, default=False)
self.arg_parser.add_argument("--reloop_tolerance", type=float, default=0.500, help="Controls how close the path beginning and end must be to consider it closed (default 0.500 mm)") pars.add_argument("--reloop_tolerance", type=float, default=0.500, help="Controls how close the path beginning and end must be to consider it closed (default 0.500 mm)")
# Multipass # Multipass
self.arg_parser.add_argument("--multipass", type=inkex.Boolean, default=False) pars.add_argument("--multipass", type=inkex.Boolean, default=False)
self.arg_parser.add_argument("--multipass_count", type=int, default=2, help="How many passes for each line (default 2)") pars.add_argument("--multipass_count", type=int, default=2, help="How many passes for each line (default 2)")
# Filter # Filter
self.arg_parser.add_argument("--filter", type=inkex.Boolean, default=False) pars.add_argument("--filter", type=inkex.Boolean, default=False)
self.arg_parser.add_argument("--filter_tolerance", type=float, default=0.050, help="Tolerance used to determined if a line is closed or not (default 0.050 mm)") pars.add_argument("--filter_tolerance", type=float, default=0.050, help="Tolerance used to determined if a line is closed or not (default 0.050 mm)")
self.arg_parser.add_argument("--filter_closed", type=inkex.Boolean, default=False, help="Keep closed lines") pars.add_argument("--filter_closed", type=inkex.Boolean, default=False, help="Keep closed lines")
self.arg_parser.add_argument("--filter_not_closed", type=inkex.Boolean, default=False, help="Keep open lines") pars.add_argument("--filter_not_closed", type=inkex.Boolean, default=False, help="Keep open lines")
self.arg_parser.add_argument("--filter_min_length_enabled", type=inkex.Boolean, default=False, help="filter by min length") pars.add_argument("--filter_min_length_enabled", type=inkex.Boolean, default=False, help="filter by min length")
self.arg_parser.add_argument("--filter_min_length", type=float, default=0.000, help="Keep lines whose length isn't shorter than value") pars.add_argument("--filter_min_length", type=float, default=0.000, help="Keep lines whose length isn't shorter than value")
self.arg_parser.add_argument("--filter_max_length_enabled", type=inkex.Boolean, default=False, help="filter by max length") pars.add_argument("--filter_max_length_enabled", type=inkex.Boolean, default=False, help="filter by max length")
self.arg_parser.add_argument("--filter_max_length", type=float, default=0.000, help="Keep lines whose length isn't greater than value") pars.add_argument("--filter_max_length", type=float, default=0.000, help="Keep lines whose length isn't greater than value")
# Split All # Split All
self.arg_parser.add_argument("--splitall", type=inkex.Boolean, default=False) pars.add_argument("--splitall", type=inkex.Boolean, default=False)
# Plugin Occult # Plugin Occult
self.arg_parser.add_argument("--plugin_occult", type=inkex.Boolean, default=False) pars.add_argument("--plugin_occult", type=inkex.Boolean, default=False)
self.arg_parser.add_argument("--plugin_occult_tolerance", type=float, default=0.01, help="Max distance between start and end point to consider a path closed (default 0.01 mm)") pars.add_argument("--plugin_occult_tolerance", type=float, default=0.01, help="Max distance between start and end point to consider a path closed (default 0.01 mm)")
self.arg_parser.add_argument("--plugin_occult_keepseparatelayer", type=inkex.Boolean, default=False, help="Put occulted lines to separate layer") pars.add_argument("--plugin_occult_keepseparatelayer", type=inkex.Boolean, default=False, help="Put occulted lines to separate layer")
# Free Mode # Free Mode
self.arg_parser.add_argument("--tab") pars.add_argument("--tab")
self.arg_parser.add_argument("--freemode", type=inkex.Boolean, default=False) pars.add_argument("--freemode", type=inkex.Boolean, default=False)
self.arg_parser.add_argument("--freemode_cmd1", default="") pars.add_argument("--freemode_cmd1", default="")
self.arg_parser.add_argument("--freemode_cmd1_enabled", type=inkex.Boolean, default=True) pars.add_argument("--freemode_cmd1_enabled", type=inkex.Boolean, default=True)
self.arg_parser.add_argument("--freemode_cmd2", default="") pars.add_argument("--freemode_cmd2", default="")
self.arg_parser.add_argument("--freemode_cmd2_enabled", type=inkex.Boolean, default=False) pars.add_argument("--freemode_cmd2_enabled", type=inkex.Boolean, default=False)
self.arg_parser.add_argument("--freemode_cmd3", default="") pars.add_argument("--freemode_cmd3", default="")
self.arg_parser.add_argument("--freemode_cmd3_enabled", type=inkex.Boolean, default=False) pars.add_argument("--freemode_cmd3_enabled", type=inkex.Boolean, default=False)
self.arg_parser.add_argument("--freemode_cmd4", default="") pars.add_argument("--freemode_cmd4", default="")
self.arg_parser.add_argument("--freemode_cmd4_enabled", type=inkex.Boolean, default=False) pars.add_argument("--freemode_cmd4_enabled", type=inkex.Boolean, default=False)
self.arg_parser.add_argument("--freemode_cmd5", default="") pars.add_argument("--freemode_cmd5", default="")
self.arg_parser.add_argument("--freemode_cmd5_enabled", type=inkex.Boolean, default=False) pars.add_argument("--freemode_cmd5_enabled", type=inkex.Boolean, default=False)
self.arg_parser.add_argument("--freemode_show_cmd", type=inkex.Boolean, default=False) pars.add_argument("--freemode_show_cmd", type=inkex.Boolean, default=False)
# General Settings # General Settings
self.arg_parser.add_argument("--input_handling", default="paths", help="Input handling") pars.add_argument("--input_handling", default="paths", help="Input handling")
self.arg_parser.add_argument("--flattenbezier", type=inkex.Boolean, default=False, help="Flatten bezier curves to polylines") pars.add_argument("--flattenbezier", type=inkex.Boolean, default=False, help="Flatten bezier curves to polylines")
self.arg_parser.add_argument("--flatness", type=float, default=0.1, help="Minimum flatness = 0.1. The smaller the value the more fine segments you will get (quantization).") pars.add_argument("--flatness", type=float, default=0.1, help="Minimum flatness = 0.1. The smaller the value the more fine segments you will get (quantization).")
self.arg_parser.add_argument("--decimals", type=int, default=3, help="Accuracy for imported lines' coordinates into vpype. Does not work for 'Multilayer/document'") pars.add_argument("--decimals", type=int, default=3, help="Accuracy for imported lines' coordinates into vpype. Does not work for 'Multilayer/document'")
self.arg_parser.add_argument("--simplify", type=inkex.Boolean, default=False, help="Reduces significantly the number of segments used to approximate the curve while still guaranteeing an accurate conversion, but may increase the execution time. Does not work for 'Singlelayer/paths'") pars.add_argument("--simplify", type=inkex.Boolean, default=False, help="Reduces significantly the number of segments used to approximate the curve while still guaranteeing an accurate conversion, but may increase the execution time. Does not work for 'Singlelayer/paths'")
self.arg_parser.add_argument("--parallel", type=inkex.Boolean, default=False, help="Enables multiprocessing for the SVG conversion. This is recommended ONLY when using 'Simplify geometry' on large SVG files with many curved elements. Does not work for 'Singlelayer/paths'") pars.add_argument("--parallel", type=inkex.Boolean, default=False, help="Enables multiprocessing for the SVG conversion. This is recommended ONLY when using 'Simplify geometry' on large SVG files with many curved elements. Does not work for 'Singlelayer/paths'")
self.arg_parser.add_argument("--apply_transformations", type=inkex.Boolean, default=False, help="Run 'Apply Transformations' extension before running vpype. Helps avoiding geometry shifting") pars.add_argument("--apply_transformations", type=inkex.Boolean, default=False, help="Run 'Apply Transformations' extension before running vpype. Helps avoiding geometry shifting")
self.arg_parser.add_argument("--output_show", type=inkex.Boolean, default=False, help="This will open a separate window showing the finished SVG data. If enabled, output is not applied to InkScape canvas (only for preview)!") pars.add_argument("--output_show", type=inkex.Boolean, default=False, help="This will open a separate window showing the finished SVG data. If enabled, output is not applied to InkScape canvas (only for preview)!")
self.arg_parser.add_argument("--output_show_points", type=inkex.Boolean, default=False, help="Enable point display in viewer") pars.add_argument("--output_show_points", type=inkex.Boolean, default=False, help="Enable point display in viewer")
self.arg_parser.add_argument("--output_stats", type=inkex.Boolean, default=False, help="Show output statistics before/after conversion") pars.add_argument("--output_stats", type=inkex.Boolean, default=False, help="Show output statistics before/after conversion")
self.arg_parser.add_argument("--output_trajectories", type=inkex.Boolean, default=False, help="Add paths for the travel trajectories") pars.add_argument("--output_trajectories", type=inkex.Boolean, default=False, help="Add paths for the travel trajectories")
self.arg_parser.add_argument("--keep_objects", type=inkex.Boolean, default=False, help="If false, selected paths will be removed") pars.add_argument("--keep_objects", type=inkex.Boolean, default=False, help="If false, selected paths will be removed")
self.arg_parser.add_argument("--strokes_to_paths", type=inkex.Boolean, default=True, help="Recommended option. Performs 'Path' > 'Stroke to Path' (CTRL + ALT + C) to convert vpype converted lines back to regular path objects") pars.add_argument("--strokes_to_paths", type=inkex.Boolean, default=True, help="Recommended option. Performs 'Path' > 'Stroke to Path' (CTRL + ALT + C) to convert vpype converted lines back to regular path objects")
self.arg_parser.add_argument("--use_style_of_first_element", type=inkex.Boolean, default=True, help="If enabled the first element in selection is scanned and we apply it's style to all imported vpype lines (but not for trajectories). Does not work for 'Multilayer/document'") pars.add_argument("--use_style_of_first_element", type=inkex.Boolean, default=True, help="If enabled the first element in selection is scanned and we apply it's style to all imported vpype lines (but not for trajectories). Does not work for 'Multilayer/document'")
self.arg_parser.add_argument("--lines_stroke_width", type=float, default=1.0, help="Stroke width of tooling lines (px). Gets overwritten if 'Use style of first selected element' is enabled") pars.add_argument("--lines_stroke_width", type=float, default=1.0, help="Stroke width of tooling lines (px). Gets overwritten if 'Use style of first selected element' is enabled")
self.arg_parser.add_argument("--trajectories_stroke_width", type=float, default=1.0, help="Stroke width of trajectory lines (px). Gets overwritten if 'Use style of first selected element' is enabled") pars.add_argument("--trajectories_stroke_width", type=float, default=1.0, help="Stroke width of trajectory lines (px). Gets overwritten if 'Use style of first selected element' is enabled")
def effect(self): def effect(self):
lc = vpype.LineCollection() # create a new array of LineStrings consisting of Points. We convert selected paths to polylines and grab their points lc = vpype.LineCollection() # create a new array of LineStrings consisting of Points. We convert selected paths to polylines and grab their points

View File

@ -11,17 +11,16 @@ def addPathCommand(a, cmd):
for x in cmd: for x in cmd:
a.append(str(x)) a.append(str(x))
class XGramEffect(inkex.Effect): class XGramEffect(inkex.EffectExtension):
def __init__(self): def add_arguments(self, pars):
inkex.Effect.__init__(self) pars.add_argument('--tab')
self.arg_parser.add_argument('--tab') pars.add_argument('--points', type=int, default=5, help='Number of points (or sides)')
self.arg_parser.add_argument('--points', type=int, default=5, help='Number of points (or sides)') pars.add_argument('--skip', type=int, default=2, help='Vertex increment when connecting points')
self.arg_parser.add_argument('--skip', type=int, default=2, help='Vertex increment when connecting points') pars.add_argument('--rotate', type=float, default=0, help='Rotation angle (clockwise, in degrees)')
self.arg_parser.add_argument('--rotate', type=float, default=0, help='Rotation angle (clockwise, in degrees)') pars.add_argument('--inner_circle', type=inkex.Boolean, default=False, help='Connect points via inner circle')
self.arg_parser.add_argument('--inner_circle', type=inkex.Boolean, default=False, help='Connect points via inner circle') pars.add_argument('--show_inner_circle', type=inkex.Boolean, default=True, help='Show inner circle')
self.arg_parser.add_argument('--show_inner_circle', type=inkex.Boolean, default=True, help='Show inner circle') pars.add_argument('--inner_ratio', type=int, default=50, help='Inner radius percentage (inner radius as a percentage of the outer radius)')
self.arg_parser.add_argument('--inner_ratio', type=int, default=50, help='Inner radius percentage (inner radius as a percentage of the outer radius)')
def effect(self): def effect(self):
layer = self.svg.get_current_layer(); layer = self.svg.get_current_layer();

View File

@ -47,11 +47,12 @@ def randomize(x,y, r):
y = math.sin(a-math.pi/2)*r y = math.sin(a-math.pi/2)*r
return [x, y] return [x, y]
class RadiusRandomize(inkex.Effect): class RadiusRandomize(inkex.EffectExtension):
def __init__(self):
inkex.Effect.__init__(self) def add_arguments(self, pars):
self.arg_parser.add_argument("--title") pars.add_argument("--title")
self.arg_parser.add_argument("--radius", type=float, default=10.0, help="Randomly move control and end points in this radius") pars.add_argument("--radius", type=float, default=10.0, help="Randomly move control and end points in this radius")
def effect(self): def effect(self):
for id, node in self.svg.selected.items(): for id, node in self.svg.selected.items():
if node.tag == inkex.addNS('path','svg'): if node.tag == inkex.addNS('path','svg'):

View File

@ -33,23 +33,22 @@ def draw_SVG_circle(parent, r, cx, cy, name, style):
Black = '#000000' Black = '#000000'
class Zoetrope(inkex.Effect): class Zoetrope(inkex.EffectExtension):
def __init__(self): def add_arguments(self, pars):
inkex.Effect.__init__(self) # initialize the super class pars.add_argument("-u", "--units", default='mm', help="Units this dialog is using")
self.arg_parser.add_argument("-u", "--units", default='mm', help="Units this dialog is using") pars.add_argument("-d", "--diameter", type=float, default=1.0, help="Diameter of disk")
self.arg_parser.add_argument("-d", "--diameter", type=float, default=1.0, help="Diameter of disk") pars.add_argument("-n", "--divisions", type=int, default=24, help="Number of divisions")
self.arg_parser.add_argument("-n", "--divisions", type=int, default=24, help="Number of divisions") pars.add_argument("-i", "--height", type=float, default=1.0, help="Image height")
self.arg_parser.add_argument("-i", "--height", type=float, default=1.0, help="Image height") pars.add_argument("-t", "--trigger", type=inkex.Boolean, default=False, help="Trigger")
self.arg_parser.add_argument("-t", "--trigger", type=inkex.Boolean, default=False, help="Trigger") pars.add_argument("-q", "--triggerradius", type=float, default=1.0, help="Height of trigger line")
self.arg_parser.add_argument("-q", "--triggerradius", type=float, default=1.0, help="Height of trigger line") pars.add_argument("-e", "--thick", type=float, default=1.0, help="Thickness of trigger line")
self.arg_parser.add_argument("-e", "--thick", type=float, default=1.0, help="Thickness of trigger line") pars.add_argument("-r", "--ratio", type=float, default=0.5, help="Ratio of trigger pulse")
self.arg_parser.add_argument("-r", "--ratio", type=float, default=0.5, help="Ratio of trigger pulse") pars.add_argument("-p", "--phase", type=float, default=0, help="Delay of trigger pulse")
self.arg_parser.add_argument("-p", "--phase", type=float, default=0, help="Delay of trigger pulse") pars.add_argument("-w", "--stroke_width", type=float, default=0.1, help="Line thickness")
self.arg_parser.add_argument("-w", "--stroke_width", type=float, default=0.1, help="Line thickness") pars.add_argument("-m", "--template", type=inkex.Boolean, default=False, help="Show Image Distortion template")
self.arg_parser.add_argument("-m", "--template", type=inkex.Boolean, default=False, help="Show Image Distortion template") pars.add_argument("-k", "--dpi", type=int, default=300, help="To calculate useful image size")
self.arg_parser.add_argument("-k", "--dpi", type=int, default=300, help="To calculate useful image size") pars.add_argument("--active-tab", default='', help="Active tab. Not used now.")
self.arg_parser.add_argument("--active-tab", default='', help="Active tab. Not used now.")
def calc_unit_factor(self): def calc_unit_factor(self):
""" return the scale factor for all dimension conversions. """ return the scale factor for all dimension conversions.