Added end type to offset paths extension

This commit is contained in:
Mario Voigt 2021-04-13 22:49:42 +02:00
parent 885b91c33d
commit a07d72dcbf
2 changed files with 24 additions and 3 deletions

View File

@ -22,6 +22,13 @@
<option value="1">Round</option>
<option value="2">Miter</option>
</param>
<param name="endtype" appearance="combo" type="optiongroup" default="3" gui-text="End type">
<option value="0">Closed Polygon</option>
<option value="1">Closed Line</option>
<option value="2">Open Butt</option>
<option value="3">Open Square</option>
<option value="4">Open Round</option>
</param>
<param name="settingsHelp" type="description">Python library pyclipper needs to be installed. Use Flatten Bezier plugin in advance of this plugin.</param>
<effect>
<object-type>all</object-type>

View File

@ -16,6 +16,7 @@ class ofsplot(inkex.Effect):
self.arg_parser.add_argument("--copy_org", type=inkex.Boolean, default=True, help="copy original path")
self.arg_parser.add_argument("--offset_increase", type=float, default=0.000, help="Offset increase between iterations")
self.arg_parser.add_argument("--jointype", default="2", help="Join type")
self.arg_parser.add_argument("--endtype", default="3", help="End type")
self.arg_parser.add_argument("--miterlimit", type=float, default=3.0, help="Miter limit")
self.arg_parser.add_argument("--clipperscale", type=float, default=1024.0, help="Scaling factor")
@ -35,13 +36,26 @@ class ofsplot(inkex.Effect):
pco = pyclipper.PyclipperOffset(self.options.miterlimit)
JT = pyclipper.JT_MITER
JT = None
if self.options.jointype == "0":
JT = pyclipper.JT_SQUARE
elif self.options.jointype == "1":
JT = pyclipper.JT_ROUND
elif self.options.jointype == "2":
JT = pyclipper.JT_MITER
JT = pyclipper.JT_MITER
ET = None
if self.options.endtype == "0":
ET = pyclipper.ET_CLOSEDPOLYGON
elif self.options.endtype == "1":
ET = pyclipper.ET_CLOSEDLINE
elif self.options.endtype == "2":
ET = pyclipper.ET_OPENBUTT
elif self.options.endtype == "3":
ET = pyclipper.ET_OPENSQUARE
elif self.options.endtype == "4":
ET = pyclipper.ET_OPENROUND
new = []
# load in initial paths
@ -50,7 +64,7 @@ class ofsplot(inkex.Effect):
for item in sub:
itemx = [float(z) * scale_factor for z in item[1]]
sub_simple.append(itemx)
pco.AddPath(sub_simple, JT, pyclipper.ET_CLOSEDPOLYGON)
pco.AddPath(sub_simple, JT, ET)
# calculate offset paths for different offset amounts
offset_list = []