import pcbnew
import re
def add_track(start, end, layer=pcbnew.B_Cu):
track = pcbnew.PCB_TRACK(board)
track.SetStart(start)
track.SetEnd(end)
track.SetWidth(int(0.25 * 1e6))
track.SetLayer(layer)
board.Add(track)
board = pcbnew.GetBoard()
for f in board.GetFootprints():
ref = f.GetReference()
if ref.startswith("U"):
num = int(ref[1:])
dnum = (num - 1) * 8
dnum += 2
for i in range(1, 8):
dref = "D" + str(dnum)
start = board.FindFootprintByReference(dref).FindPadByNumber("1").GetCenter()
x = start.x - 200
x *= 1.1
y = start.y - 200;
y *= 1.1
mid = pcbnew.wxPoint(x, y)
end = board.FindFootprintByReference(ref).FindPadByNumber(str(i)).GetCenter()
add_track(start, mid)
dnum += 1
pcbnew.Refresh()
When I run this script I get:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "C:\Program Files\KiCad\9.0\bin\Lib\importlib\__init__.py", line 169, in reload
_bootstrap._exec(spec, module)
File "<frozen importlib._bootstrap>", line 621, in _exec
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "C:\Users/kuro68k/Documents/KiCad/9.0/scripting\led_clock.py", line 37, in <module>
add_track(start, mid)
File "C:\Users/kuro68k/Documents/KiCad/9.0/scripting\led_clock.py", line 7, in add_track
track.SetEnd(end)
File "C:\Program Files\KiCad\9.0\bin\Lib\site-packages\pcbnew.py", line 14509, in SetEnd
return _pcbnew.PCB_TRACK_SetEnd(self, aEnd)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: in method 'PCB_TRACK_SetEnd', argument 2 of type 'VECTOR2I const &'
The script is supposed to draw some new tracks radiating out from a circle around point (200,200). I tried changing the call to this:
add_track(start, pcbnew.VECTOR2I(start, mid))
But that just gives a different error:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "C:\Program Files\KiCad\9.0\bin\Lib\importlib\__init__.py", line 169, in reload
_bootstrap._exec(spec, module)
File "<frozen importlib._bootstrap>", line 621, in _exec
File "<frozen importlib._bootstrap_external>", line 940, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "C:\Users/kuro68k/Documents/KiCad/9.0/scripting\led_clock.py", line 37, in <module>
add_track(start, mid)
File "C:\Users/kuro68k/Documents/KiCad/9.0/scripting\led_clock.py", line 7, in add_track
track.SetEnd(end)
File "C:\Program Files\KiCad\9.0\bin\Lib\site-packages\pcbnew.py", line 14509, in SetEnd
return _pcbnew.PCB_TRACK_SetEnd(self, aEnd)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: in method 'PCB_TRACK_SetEnd', argument 2 of type 'VECTOR2I const &'
How can I fix this? Thanks.