Skip to content

Only CLI fails to panelize for more than 2 x 2 #849

@dafri92

Description

@dafri92

Prerequisites

  • I have read FAQ
  • I have searched existing issues (including closed ones)
  • I use KiKit at least version 1.7.2 (older version are not supported)

KiKit version

kikit, version 1.7.2

KiCAD version (only KiCAD 8 and 9 are supported)

9.0.3

Operating system

macOS 15.6, Windows 11

Description

I'm trying to panelize the attached PCB. This is the minimal example I could get to generate the error.
Using the GUI approach with the KiCad plugin works as expected (tested on Windows).

Using these commands to panelize from CLI fails

  • "/Applications/KiCad/KiCad.app/Contents/Frameworks/Python.framework/Versions/3.9/bin/kikit" panelize --layout 'grid; rows: 4; cols: 4;' "Panelize Fail.kicad_pcb" "Panel.kicad_pcb"
  • `"${KICAD9_3RD_PARTY}\Python311\Scripts\kikit.exe" panelize --layout 'grid; rows: 4; cols: 4;' "Panelize Fail.kicad_pcb" "Panel.kicad_pcb"``

with the error message both on macOS and Windows:

An error occurred: Board rotation has to be passed as EDA_ANGLE, not a number
No output files produced

Interestingly when changing the panel size to 2 x 2 or 1 x 1 it works as expected.

Panelize Fail.zip

Steps to Reproduce

Here to output with debug option set from macOS

"/Applications/KiCad/KiCad.app/Contents/Frameworks/Python.framework/Versions/3.9/bin/kikit" panelize --debug 'trace: true' --layout 'grid; rows: 4; cols: 4;' "Panelize Fail.kicad_pcb" "Panel.kicad_pcb"
12:12:28 AM: Debug: Adding duplicate image handler for 'PNG file'
12:12:28 AM: Debug: Adding duplicate image handler for 'JPEG file'
12:12:28 AM: Debug: Adding duplicate image handler for 'TIFF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'GIF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PNM file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PCX file'
12:12:28 AM: Debug: Adding duplicate image handler for 'IFF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows icon file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows cursor file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows animated cursor file'
12:12:28 AM: Debug: Adding duplicate image handler for 'TGA file'
12:12:28 AM: Debug: Adding duplicate image handler for 'XPM file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PNG file'
12:12:28 AM: Debug: Adding duplicate image handler for 'JPEG file'
12:12:28 AM: Debug: Adding duplicate image handler for 'TIFF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'GIF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PNM file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PCX file'
12:12:28 AM: Debug: Adding duplicate image handler for 'IFF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows icon file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows cursor file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows animated cursor file'
12:12:28 AM: Debug: Adding duplicate image handler for 'TGA file'
12:12:28 AM: Debug: Adding duplicate image handler for 'XPM file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PNG file'
12:12:28 AM: Debug: Adding duplicate image handler for 'JPEG file'
12:12:28 AM: Debug: Adding duplicate image handler for 'TIFF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'GIF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PNM file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PCX file'
12:12:28 AM: Debug: Adding duplicate image handler for 'IFF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows icon file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows cursor file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows animated cursor file'
12:12:28 AM: Debug: Adding duplicate image handler for 'TGA file'
12:12:28 AM: Debug: Adding duplicate image handler for 'XPM file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PNG file'
12:12:28 AM: Debug: Adding duplicate image handler for 'JPEG file'
12:12:28 AM: Debug: Adding duplicate image handler for 'TIFF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'GIF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PNM file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PCX file'
12:12:28 AM: Debug: Adding duplicate image handler for 'IFF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows icon file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows cursor file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows animated cursor file'
12:12:28 AM: Debug: Adding duplicate image handler for 'TGA file'
12:12:28 AM: Debug: Adding duplicate image handler for 'XPM file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PNG file'
12:12:28 AM: Debug: Adding duplicate image handler for 'JPEG file'
12:12:28 AM: Debug: Adding duplicate image handler for 'TIFF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'GIF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PNM file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PCX file'
12:12:28 AM: Debug: Adding duplicate image handler for 'IFF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows icon file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows cursor file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows animated cursor file'
12:12:28 AM: Debug: Adding duplicate image handler for 'TGA file'
12:12:28 AM: Debug: Adding duplicate image handler for 'XPM file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PNG file'
12:12:28 AM: Debug: Adding duplicate image handler for 'JPEG file'
12:12:28 AM: Debug: Adding duplicate image handler for 'TIFF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'GIF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PNM file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PCX file'
12:12:28 AM: Debug: Adding duplicate image handler for 'IFF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows icon file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows cursor file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows animated cursor file'
12:12:28 AM: Debug: Adding duplicate image handler for 'TGA file'
12:12:28 AM: Debug: Adding duplicate image handler for 'XPM file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PNG file'
12:12:28 AM: Debug: Adding duplicate image handler for 'JPEG file'
12:12:28 AM: Debug: Adding duplicate image handler for 'TIFF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'GIF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PNM file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PCX file'
12:12:28 AM: Debug: Adding duplicate image handler for 'IFF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows icon file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows cursor file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows animated cursor file'
12:12:28 AM: Debug: Adding duplicate image handler for 'TGA file'
12:12:28 AM: Debug: Adding duplicate image handler for 'XPM file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PNG file'
12:12:28 AM: Debug: Adding duplicate image handler for 'JPEG file'
12:12:28 AM: Debug: Adding duplicate image handler for 'TIFF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'GIF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PNM file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PCX file'
12:12:28 AM: Debug: Adding duplicate image handler for 'IFF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows icon file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows cursor file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows animated cursor file'
12:12:28 AM: Debug: Adding duplicate image handler for 'TGA file'
12:12:28 AM: Debug: Adding duplicate image handler for 'XPM file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PNG file'
12:12:28 AM: Debug: Adding duplicate image handler for 'JPEG file'
12:12:28 AM: Debug: Adding duplicate image handler for 'TIFF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'GIF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PNM file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PCX file'
12:12:28 AM: Debug: Adding duplicate image handler for 'IFF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows icon file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows cursor file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows animated cursor file'
12:12:28 AM: Debug: Adding duplicate image handler for 'TGA file'
12:12:28 AM: Debug: Adding duplicate image handler for 'XPM file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PNG file'
12:12:28 AM: Debug: Adding duplicate image handler for 'JPEG file'
12:12:28 AM: Debug: Adding duplicate image handler for 'TIFF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'GIF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PNM file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PCX file'
12:12:28 AM: Debug: Adding duplicate image handler for 'IFF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows icon file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows cursor file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows animated cursor file'
12:12:28 AM: Debug: Adding duplicate image handler for 'TGA file'
12:12:28 AM: Debug: Adding duplicate image handler for 'XPM file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PNG file'
12:12:28 AM: Debug: Adding duplicate image handler for 'JPEG file'
12:12:28 AM: Debug: Adding duplicate image handler for 'TIFF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'GIF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PNM file'
12:12:28 AM: Debug: Adding duplicate image handler for 'PCX file'
12:12:28 AM: Debug: Adding duplicate image handler for 'IFF file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows icon file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows cursor file'
12:12:28 AM: Debug: Adding duplicate image handler for 'Windows animated cursor file'
12:12:28 AM: Debug: Adding duplicate image handler for 'TGA file'
12:12:28 AM: Debug: Adding duplicate image handler for 'XPM file'
swig/python detected a memory leak of type 'BOX2< VECTOR2< int > > *', no destructor found.
swig/python detected a memory leak of type 'VECTOR2< int > *', no destructor found.
swig/python detected a memory leak of type 'VECTOR2< int > *', no destructor found.
swig/python detected a memory leak of type 'EDA_ANGLE *', no destructor found.
An error occurred: Board rotation has to be passed as EDA_ANGLE, not a number
No output files produced
Traceback (most recent call last):
  File "/Applications/KiCad/KiCad.app/Contents/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/kikit/panelize_ui.py", line 217, in panelize
    doPanelization(input, output, preset, plugin)
  File "/Applications/KiCad/KiCad.app/Contents/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/kikit/panelize_ui.py", line 271, in doPanelization
    ki.buildLayout(preset, panel, input, sourceArea)
  File "/Applications/KiCad/KiCad.app/Contents/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/kikit/panelize_ui_impl.py", line 257, in buildLayout
    substrates = panel.makeGrid(
  File "/Applications/KiCad/KiCad.app/Contents/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/kikit/panelize.py", line 1375, in makeGrid
    boardSize = self.appendBoard(
  File "/Applications/KiCad/KiCad.app/Contents/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/kikit/panelize.py", line 1027, in appendBoard
    raise RuntimeError("Board rotation has to be passed as EDA_ANGLE, not a number")
RuntimeError: Board rotation has to be passed as EDA_ANGLE, not a number
swig/python detected a memory leak of type 'VECTOR2< int > *', no destructor found.
swig/python detected a memory leak of type 'BOX2< VECTOR2< int > > *', no destructor found.
swig/python detected a memory leak of type 'BOX2< VECTOR2< int > > *', no destructor found.
swig/python detected a memory leak of type 'VECTOR2< int > *', no destructor found.
swig/python detected a memory leak of type 'EDA_ANGLE *', no destructor found.
swig/python detected a memory leak of type 'BOX2< VECTOR2< int > > *', no destructor found.
swig/python detected a memory leak of type 'VECTOR2< int > *', no destructor found.
swig/python detected a memory leak of type 'VECTOR2< int > *', no destructor found.
swig/python detected a memory leak of type 'EDA_ANGLE *', no destructor found.
swig/python detected a memory leak of type 'VECTOR2< int > *', no destructor found.
swig/python detected a memory leak of type 'VECTOR2< int > *', no destructor found.
swig/python detected a memory leak of type 'EDA_ANGLE *', no destructor found.
swig/python detected a memory leak of type 'VECTOR2< int > *', no destructor found.
swig/python detected a memory leak of type 'VECTOR2< int > *', no destructor found.
swig/python detected a memory leak of type 'EDA_ANGLE *', no destructor found.
swig/python detected a memory leak of type 'VECTOR2< int > *', no destructor found.
swig/python detected a memory leak of type 'VECTOR2< int > *', no destructor found.
swig/python detected a memory leak of type 'EDA_ANGLE *', no destructor found.
swig/python detected a memory leak of type 'VECTOR2< int > *', no destructor found.
swig/python detected a memory leak of type 'VECTOR2< int > *', no destructor found.
swig/python detected a memory leak of type 'EDA_ANGLE *', no destructor found.
swig/python detected a memory leak of type 'VECTOR2< int > *', no destructor found.
swig/python detected a memory leak of type 'VECTOR2< int > *', no destructor found.
swig/python detected a memory leak of type 'EDA_ANGLE *', no destructor found.
swig/python detected a memory leak of type 'VECTOR2< int > *', no destructor found.
swig/python detected a memory leak of type 'VECTOR2< int > *', no destructor found.
swig/python detected a memory leak of type 'EDA_ANGLE *', no destructor found.
swig/python detected a memory leak of type 'VECTOR2< int > *', no destructor found.
swig/python detected a memory leak of type 'VECTOR2< int > *', no destructor found.
swig/python detected a memory leak of type 'EDA_ANGLE *', no destructor found.
swig/python detected a memory leak of type 'VECTOR2< int > *', no destructor found.
swig/python detected a memory leak of type 'VECTOR2< int > *', no destructor found.
swig/python detected a memory leak of type 'EDA_ANGLE *', no destructor found.
swig/python detected a memory leak of type 'VECTOR2< int > *', no destructor found.
swig/python detected a memory leak of type 'VECTOR2< int > *', no destructor found.
swig/python detected a memory leak of type 'EDA_ANGLE *', no destructor found.
swig/python detected a memory leak of type 'std::vector< ZONE * > *', no destructor found.
swig/python detected a memory leak of type 'EDA_ANGLE *', no destructor found.
swig/python detected a memory leak of type 'EDA_ANGLE *', no destructor found.
swig/python detected a memory leak of type 'EDA_ANGLE *', no destructor found.
swig/python detected a memory leak of type 'EDA_ANGLE *', no destructor found.
swig/python detected a memory leak of type 'EDA_ANGLE *', no destructor found.
swig/python detected a memory leak of type 'EDA_ANGLE *', no destructor found.
swig/python detected a memory leak of type 'EDA_ANGLE *', no destructor found.
swig/python detected a memory leak of type 'EDA_ANGLE *', no destructor found.
swig/python detected a memory leak of type 'EDA_ANGLE *', no destructor found.
swig/python detected a memory leak of type 'EDA_ANGLE *', no destructor found.
swig/python detected a memory leak of type 'EDA_ANGLE *', no destructor found.
swig/python detected a memory leak of type 'EDA_ANGLE *', no destructor found.

Panelize Fail.zip

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions