- fixed issue with calling the inform signal in the FlatCAMDefaults.load method
- fixed macro parsing in Gerber files generated by KiCAD 4.99 (KiCAD 5.0)
This commit is contained in:
parent
f643d0e4cd
commit
13d4192124
|
@ -7,6 +7,11 @@ CHANGELOG for FlatCAM beta
|
|||
|
||||
=================================================
|
||||
|
||||
18.10.2020
|
||||
|
||||
- fixed issue with calling the inform signal in the FlatCAMDefaults.load method
|
||||
- fixed macro parsing in Gerber files generated by KiCAD 4.99 (KiCAD 5.0)
|
||||
|
||||
17.10.2020
|
||||
|
||||
- updated Turkish translation (by Mehmet Kaya)
|
||||
|
|
|
@ -950,7 +950,7 @@ class PreferencesUIManager:
|
|||
|
||||
self.save_defaults(silent=False)
|
||||
# load the defaults so they are updated into the app
|
||||
self.defaults.load(filename=os.path.join(self.data_path, 'current_defaults.FlatConfig'))
|
||||
self.defaults.load(filename=os.path.join(self.data_path, 'current_defaults.FlatConfig'), inform=self.inform)
|
||||
|
||||
settgs = QSettings("Open Source", "FlatCAM")
|
||||
|
||||
|
|
|
@ -427,7 +427,7 @@ class App(QtCore.QObject):
|
|||
|
||||
current_defaults_path = os.path.join(self.data_path, "current_defaults.FlatConfig")
|
||||
if user_defaults:
|
||||
self.defaults.load(filename=current_defaults_path)
|
||||
self.defaults.load(filename=current_defaults_path, inform=self.inform)
|
||||
|
||||
if self.defaults['units'] == 'MM':
|
||||
self.decimals = int(self.defaults['decimals_metric'])
|
||||
|
@ -2576,7 +2576,7 @@ class App(QtCore.QObject):
|
|||
return
|
||||
|
||||
# Load in the defaults from the chosen file
|
||||
self.defaults.load(filename=filename)
|
||||
self.defaults.load(filename=filename, inform=self.inform)
|
||||
|
||||
self.preferencesUiManager.on_preferences_edited()
|
||||
self.inform.emit('[success] %s: %s' % (_("Imported Defaults from"), filename))
|
||||
|
@ -6971,7 +6971,7 @@ class App(QtCore.QObject):
|
|||
self.project_filename = None
|
||||
|
||||
# Load the application defaults
|
||||
self.defaults.load(filename=os.path.join(self.data_path, 'current_defaults.FlatConfig'))
|
||||
self.defaults.load(filename=os.path.join(self.data_path, 'current_defaults.FlatConfig'), inform=self.inform)
|
||||
|
||||
# Re-fresh project options
|
||||
self.on_options_app2project()
|
||||
|
|
81
camlib.py
81
camlib.py
|
@ -225,13 +225,14 @@ class ApertureMacro:
|
|||
Pads the ``mods`` list with zeros resulting in an
|
||||
list of length n.
|
||||
|
||||
:param n: Length of the resulting list.
|
||||
:type n: int
|
||||
:param mods: List to be padded.
|
||||
:type mods: list
|
||||
:return: Zero-padded list.
|
||||
:rtype: list
|
||||
:param n: Length of the resulting list.
|
||||
:type n: int
|
||||
:param mods: List to be padded.
|
||||
:type mods: list
|
||||
:return: Zero-padded list.
|
||||
:rtype: list
|
||||
"""
|
||||
|
||||
x = [0.0] * n
|
||||
na = len(mods)
|
||||
x[0:na] = mods
|
||||
|
@ -244,9 +245,12 @@ class ApertureMacro:
|
|||
:param mods: (Exposure 0/1, Diameter >=0, X-coord, Y-coord)
|
||||
:return:
|
||||
"""
|
||||
|
||||
pol, dia, x, y = ApertureMacro.default2zero(4, mods)
|
||||
|
||||
val = ApertureMacro.default2zero(4, mods)
|
||||
pol = val[0]
|
||||
dia = val[1]
|
||||
x = val[2]
|
||||
y = val[3]
|
||||
# pol, dia, x, y = ApertureMacro.default2zero(4, mods)
|
||||
return {"pol": int(pol), "geometry": Point(x, y).buffer(dia / 2)}
|
||||
|
||||
@staticmethod
|
||||
|
@ -257,7 +261,15 @@ class ApertureMacro:
|
|||
rotation angle around origin in degrees)
|
||||
:return:
|
||||
"""
|
||||
pol, width, xs, ys, xe, ye, angle = ApertureMacro.default2zero(7, mods)
|
||||
val = ApertureMacro.default2zero(7, mods)
|
||||
pol = val[0]
|
||||
width = val[1]
|
||||
xs = val[2]
|
||||
ys = val[3]
|
||||
xe = val[4]
|
||||
ye = val[5]
|
||||
angle = val[6]
|
||||
# pol, width, xs, ys, xe, ye, angle = ApertureMacro.default2zero(7, mods)
|
||||
|
||||
line = LineString([(xs, ys), (xe, ye)])
|
||||
box = line.buffer(width / 2, cap_style=2)
|
||||
|
@ -274,7 +286,14 @@ class ApertureMacro:
|
|||
:return:
|
||||
"""
|
||||
|
||||
pol, width, height, x, y, angle = ApertureMacro.default2zero(6, mods)
|
||||
# pol, width, height, x, y, angle = ApertureMacro.default2zero(4, mods)
|
||||
val = ApertureMacro.default2zero(4, mods)
|
||||
pol = val[0]
|
||||
width = val[1]
|
||||
height = val[2]
|
||||
x = val[3]
|
||||
y = val[4]
|
||||
angle = val[5]
|
||||
|
||||
box = shply_box(x - width / 2, y - height / 2, x + width / 2, y + height / 2)
|
||||
box_rotated = affinity.rotate(box, angle, origin=(0, 0))
|
||||
|
@ -290,7 +309,14 @@ class ApertureMacro:
|
|||
:return:
|
||||
"""
|
||||
|
||||
pol, width, height, x, y, angle = ApertureMacro.default2zero(6, mods)
|
||||
# pol, width, height, x, y, angle = ApertureMacro.default2zero(6, mods)
|
||||
val = ApertureMacro.default2zero(6, mods)
|
||||
pol = val[0]
|
||||
width = val[1]
|
||||
height = val[2]
|
||||
x = val[3]
|
||||
y = val[4]
|
||||
angle = val[5]
|
||||
|
||||
box = shply_box(x, y, x + width, y + height)
|
||||
box_rotated = affinity.rotate(box, angle, origin=(0, 0))
|
||||
|
@ -330,7 +356,15 @@ class ApertureMacro:
|
|||
:return:
|
||||
"""
|
||||
|
||||
pol, nverts, x, y, dia, angle = ApertureMacro.default2zero(6, mods)
|
||||
# pol, nverts, x, y, dia, angle = ApertureMacro.default2zero(6, mods)
|
||||
val = ApertureMacro.default2zero(6, mods)
|
||||
pol = val[0]
|
||||
nverts = val[1]
|
||||
x = val[2]
|
||||
y = val[3]
|
||||
dia = val[4]
|
||||
angle = val[5]
|
||||
|
||||
points = [(0, 0)] * nverts
|
||||
|
||||
for i in range(nverts):
|
||||
|
@ -354,7 +388,17 @@ class ApertureMacro:
|
|||
:return:
|
||||
"""
|
||||
|
||||
x, y, dia, thickness, gap, nrings, cross_th, cross_len, angle = ApertureMacro.default2zero(9, mods)
|
||||
# x, y, dia, thickness, gap, nrings, cross_th, cross_len, angle = ApertureMacro.default2zero(9, mods)
|
||||
val = ApertureMacro.default2zero(9, mods)
|
||||
x = val[0]
|
||||
y = val[1]
|
||||
dia = val[2]
|
||||
thickness = val[3]
|
||||
gap = val[4]
|
||||
nrings = val[5]
|
||||
cross_th = val[6]
|
||||
cross_len = val[7]
|
||||
angle = val[8]
|
||||
|
||||
r = dia / 2 - thickness / 2
|
||||
result = Point((x, y)).buffer(r).exterior.buffer(thickness / 2.0)
|
||||
|
@ -390,7 +434,14 @@ class ApertureMacro:
|
|||
:return:
|
||||
"""
|
||||
|
||||
x, y, dout, din, t, angle = ApertureMacro.default2zero(6, mods)
|
||||
# x, y, dout, din, t, angle = ApertureMacro.default2zero(6, mods)
|
||||
val = ApertureMacro.default2zero(6, mods)
|
||||
x = val[0]
|
||||
y = val[1]
|
||||
dout = val[2]
|
||||
din = val[3]
|
||||
t = val[4]
|
||||
angle = val[5]
|
||||
|
||||
ring = Point((x, y)).buffer(dout / 2.0).difference(Point((x, y)).buffer(din / 2.0))
|
||||
hline = LineString([(x - dout / 2.0, y), (x + dout / 2.0, y)]).buffer(t / 2.0, cap_style=3)
|
||||
|
|
13
defaults.py
13
defaults.py
|
@ -834,8 +834,13 @@ class FlatCAMDefaults:
|
|||
with open(filename, "w") as file:
|
||||
simplejson.dump(self.defaults, file, default=to_dict, indent=2, sort_keys=True)
|
||||
|
||||
def load(self, filename: str):
|
||||
"""Loads the defaults from a file on disk, performing migration if required."""
|
||||
def load(self, filename: str, inform):
|
||||
"""
|
||||
Loads the defaults from a file on disk, performing migration if required.
|
||||
|
||||
:param filename: a path to the file that is to be loaded
|
||||
:param inform: a pyqtSignal used to display information's in the StatusBar of the GUI
|
||||
"""
|
||||
|
||||
# Read in the file
|
||||
try:
|
||||
|
@ -844,7 +849,7 @@ class FlatCAMDefaults:
|
|||
f.close()
|
||||
except IOError:
|
||||
log.error("Could not load defaults file.")
|
||||
self.inform.emit('[ERROR] %s' % _("Could not load defaults file."))
|
||||
inform.emit('[ERROR] %s' % _("Could not load defaults file."))
|
||||
# in case the defaults file can't be loaded, show all toolbars
|
||||
self.defaults["global_toolbar_view"] = 511
|
||||
return
|
||||
|
@ -857,7 +862,7 @@ class FlatCAMDefaults:
|
|||
self.defaults["global_toolbar_view"] = 511
|
||||
e = sys.exc_info()[0]
|
||||
log.error(str(e))
|
||||
self.inform.emit('[ERROR] %s' % _("Failed to parse defaults file."))
|
||||
inform.emit('[ERROR] %s' % _("Failed to parse defaults file."))
|
||||
return
|
||||
if defaults is None:
|
||||
return
|
||||
|
|
Loading…
Reference in New Issue