diff --git a/keyboard_pcb/diodes_positionning.py b/keyboard_pcb/diodes_positionning.py index 2415ade..2ba8965 100644 --- a/keyboard_pcb/diodes_positionning.py +++ b/keyboard_pcb/diodes_positionning.py @@ -1,18 +1,35 @@ - -import pcbnew board = pcbnew.GetBoard() -mods = board.GetModules() - -for i in mods: - ref = i.GetReference() - if not ref.startswith('D'): - continue - k_ref = "K" + ref[1:] - k = board.FindModuleByReference(k_ref) - print k_ref, k - k_center = k.GetCenter() - d_center = pcbnew.wxPoint(k_center.x - 3808700, k_center.y - 6200000) - i.SetPosition(d_center) - i.SetOrientation(2700) - print k_ref, ref, d_center +for i in range(1, 97): + keyName = "K_20%02d" % i + diodeName = "D_20%02d" % i + key = board.FindModuleByReference(keyName) + diode = board.FindModuleByReference(diodeName) + resistor = board.FindModuleByReference("R30%02d" % i) + led = board.FindModuleByReference("D30%02d" % i) + if diode is None: + print("Missing diode {}".format(diodeName)) + continue + + keyCenterPoint = key.GetPosition() + + diodeCenterPoint = pcbnew.wxPoint(keyCenterPoint.x - pcbnew.FromMM(6.4), keyCenterPoint.y - pcbnew.FromMM(1.4)) + diode.SetPosition(diodeCenterPoint) + diode.SetOrientation(2700) + + if (diode.GetLayer() == 0): + diode.Flip(diode.GetPosition()) + + ledCenterPoint = pcbnew.wxPoint(keyCenterPoint.x - pcbnew.FromMM(2.46), keyCenterPoint.y + pcbnew.FromMM(10)) + led.SetPosition(ledCenterPoint) + + resistorCenterPoint = pcbnew.wxPoint(ledCenterPoint.x - pcbnew.FromMM(0), ledCenterPoint.y + pcbnew.FromMM(3)) + resistor.SetPosition(resistorCenterPoint) + + print("key {}({}) on {}({})" + .format(key.GetReference(), + key.GetValue(), + key.GetPosition().x, key.GetPosition().y + )) + +pcbnew.Refresh()