From e55641095c99a1a868688ae8574a8e88a56d207d Mon Sep 17 00:00:00 2001 From: andrewc Date: Fri, 15 Mar 2024 18:25:52 +1000 Subject: [PATCH] Foot gen: support ignoring corners if part overlaps them --- .scripts/foot_gen.py | 57 ++++++++++++++++++++++++-------------------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/.scripts/foot_gen.py b/.scripts/foot_gen.py index 7803c23..23d7911 100644 --- a/.scripts/foot_gen.py +++ b/.scripts/foot_gen.py @@ -359,44 +359,49 @@ for i in range(len(corners)): j = i+1 start = deepcopy(corners[i]) end = deepcopy(start) - x_dir = True + y_dir = False if corners[i][0] == corners[j][0]: - x_dir = False + y_dir = True sign = -1 - if corners[j][not x_dir] > corners[i][not x_dir]: + if corners[j][y_dir] > corners[i][y_dir]: sign = 1 # Find intersections with keepouts intersects = [] - if x_dir: - for k in keepouts: - if abs(start[1] - k[0][1]) < k[1][1]/2: - intersects.append(k) - intersects.sort(key=lambda k: abs(start[0] - k[0][0])) - else: - for k in keepouts: - if abs(start[0] - k[0][0]) < k[1][0]/2: - intersects.append(k) - intersects.sort(key=lambda k: abs(start[1] - k[0][1])) + for k in keepouts: + if abs(start[not y_dir] - k[0][not y_dir]) < k[1][not y_dir]/2: + intersects.append(k) + intersects.sort(key=lambda k: abs(start[y_dir] - k[0][y_dir])) print("Start: ", start) print("end: ", corners[j]) - print("Flag: ", x_dir) + print("Flag: ", y_dir) print("intersects: ", intersects) - for intersect in intersects: - if x_dir: - end[0] = intersect[0][0] - sign * intersect[1][0]/2 - else: - end[1] = intersect[0][1] - sign * intersect[1][1]/2 + if len(intersects): + intersect = intersects[0] + skip_flag = abs(start[y_dir]) < abs(intersect[0][y_dir] - sign * intersect[1][y_dir]/2) + + for intersect in intersects: + end[y_dir] = intersect[0][y_dir] - sign * intersect[1][y_dir]/2 + # if y_dir: + # end[0] = intersect[0][0] - sign * intersect[1][0]/2 + # else: + # end[1] = intersect[0][1] - sign * intersect[1][1]/2 - print("Silk: ", start, end) - kicad_mod.append(Line(start=start, end=end, layer='F.SilkS', width=0.1)) - if x_dir: - start[0] = intersect[0][0] + sign * intersect[1][0]/2 - else: - start[1] = intersect[0][1] + sign * intersect[1][1]/2 + if not skip_flag: + print("Silk: ", start, end) + kicad_mod.append(Line(start=start, end=end, layer='F.SilkS', width=0.1)) + skip_flag = False + start[y_dir] = intersect[0][y_dir] + sign * intersect[1][y_dir]/2 + # if y_dir: + # start[0] = intersect[0][0] + sign * intersect[1][0]/2 + # else: + # start[1] = intersect[0][1] + sign * intersect[1][1]/2 - kicad_mod.append(Line(start=start, end=corners[j], layer='F.SilkS', width=0.1)) + if abs(start[y_dir]) < (corners[j][y_dir]): + print("End Fake: ", start, end) + print("End: ", start, corners[j]) + kicad_mod.append(Line(start=start, end=corners[j], layer='F.SilkS', width=0.1)) # kicad_mod.append(RectLine(start=[-brd_width/2,-brd_height/2], end=[brd_width/2,brd_height/2], layer='F.SilkS', width=0.15))