Pcb panelizing in KiCAD v5

Hello,

I had seen severals tutorials about KiCAD panelization, but I have not clear that use beacuse most are from the year 2012~2013.

Is there anything new in Kicad v5 about this?

Best regards.

Edited: Also I has seen Geber Tools but I believe that it’s only to windows os. I’m using gnu/linux.

I tried with GerberPanelizer + wine + mono but not work, I get this error:

mono GerberPanelizer.exe  or wine64 GerberPanelizer.exe

Unhandled Exception:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.ArgumentException: XOR data length expected 2046820352, read 1370
Parameter name: stream
  at System.Drawing.Icon.InitFromStreamWithSize (System.IO.Stream stream, System.Int32 width, System.Int32 height) [0x0052e] in <2bb3052119444fb7807d658e27511cb1>:0 
  at System.Drawing.Icon..ctor (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) [0x00095] in <2bb3052119444fb7807d658e27511cb1>:0 
  at (wrapper managed-to-native) System.Reflection.MonoCMethod.InternalInvoke(System.Reflection.MonoCMethod,object,object[],System.Exception&)
  at System.Reflection.MonoCMethod.InternalInvoke (System.Object obj, System.Object[] parameters, System.Boolean wrapExceptions) [0x00005] in <04750267503a43e5929c1d1ba19daf3e>:0 
   --- End of inner exception stack trace ---
  at System.Reflection.MonoCMethod.InternalInvoke (System.Object obj, System.Object[] parameters, System.Boolean wrapExceptions) [0x00017] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Reflection.MonoCMethod.DoInvoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0007a] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Reflection.MonoCMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0002f] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Reflection.RuntimeConstructorInfo.SerializationInvoke (System.Object target, System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) [0x00000] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Runtime.Serialization.ObjectManager.CompleteISerializableObject (System.Object obj, System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) [0x00059] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Runtime.Serialization.ObjectManager.FixupSpecialObject (System.Runtime.Serialization.ObjectHolder holder) [0x00088] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Runtime.Serialization.ObjectManager.DoFixups () [0x0005a] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize (System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Runtime.Serialization.Formatters.Binary.__BinaryParser serParser, System.Boolean fCheck, System.Boolean isCrossAppDomain, System.Runtime.Remoting.Messaging.IMethodCallMessage methodCallMessage) [0x00077] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Boolean fCheck, System.Boolean isCrossAppDomain, System.Runtime.Remoting.Messaging.IMethodCallMessage methodCallMessage) [0x000a2] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Boolean fCheck, System.Runtime.Remoting.Messaging.IMethodCallMessage methodCallMessage) [0x00000] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Boolean fCheck) [0x00000] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler) [0x00000] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream) [0x00000] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Resources.ResourceReader.DeserializeObject (System.Int32 typeIndex) [0x00019] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Resources.ResourceReader._LoadObjectV2 (System.Int32 pos, System.Resources.ResourceTypeCode& typeCode) [0x0035c] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Resources.ResourceReader.LoadObjectV2 (System.Int32 pos, System.Resources.ResourceTypeCode& typeCode) [0x00000] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Resources.ResourceReader.LoadObject (System.Int32 pos, System.Resources.ResourceTypeCode& typeCode) [0x00022] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Resources.RuntimeResourceSet.GetObject (System.String key, System.Boolean ignoreCase, System.Boolean isString) [0x000be] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Resources.RuntimeResourceSet.GetObject (System.String key, System.Boolean ignoreCase) [0x00000] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Resources.ResourceManager.GetObject (System.String name, System.Globalization.CultureInfo culture, System.Boolean wrapUnmanagedMemStream) [0x00028] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Resources.ResourceManager.GetObject (System.String name) [0x00000] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at GerberCombinerBuilder.GerberPanelizerParent.InitializeComponent () [0x00c08] in <4c0c6cc0943e4803a6dcff3fea38c2f8>:0 
  at GerberCombinerBuilder.GerberPanelizerParent..ctor () [0x00006] in <4c0c6cc0943e4803a6dcff3fea38c2f8>:0 
  at (wrapper remoting-invoke-with-check) GerberCombinerBuilder.GerberPanelizerParent..ctor()
  at GerberCombinerBuilder.Program.Main () [0x0000b] in <4c0c6cc0943e4803a6dcff3fea38c2f8>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.ArgumentException: XOR data length expected 2046820352, read 1370
Parameter name: stream
  at System.Drawing.Icon.InitFromStreamWithSize (System.IO.Stream stream, System.Int32 width, System.Int32 height) [0x0052e] in <2bb3052119444fb7807d658e27511cb1>:0 
  at System.Drawing.Icon..ctor (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) [0x00095] in <2bb3052119444fb7807d658e27511cb1>:0 
  at (wrapper managed-to-native) System.Reflection.MonoCMethod.InternalInvoke(System.Reflection.MonoCMethod,object,object[],System.Exception&)
  at System.Reflection.MonoCMethod.InternalInvoke (System.Object obj, System.Object[] parameters, System.Boolean wrapExceptions) [0x00005] in <04750267503a43e5929c1d1ba19daf3e>:0 
   --- End of inner exception stack trace ---
  at System.Reflection.MonoCMethod.InternalInvoke (System.Object obj, System.Object[] parameters, System.Boolean wrapExceptions) [0x00017] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Reflection.MonoCMethod.DoInvoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0007a] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Reflection.MonoCMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0002f] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Reflection.RuntimeConstructorInfo.SerializationInvoke (System.Object target, System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) [0x00000] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Runtime.Serialization.ObjectManager.CompleteISerializableObject (System.Object obj, System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) [0x00059] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Runtime.Serialization.ObjectManager.FixupSpecialObject (System.Runtime.Serialization.ObjectHolder holder) [0x00088] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Runtime.Serialization.ObjectManager.DoFixups () [0x0005a] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize (System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Runtime.Serialization.Formatters.Binary.__BinaryParser serParser, System.Boolean fCheck, System.Boolean isCrossAppDomain, System.Runtime.Remoting.Messaging.IMethodCallMessage methodCallMessage) [0x00077] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Boolean fCheck, System.Boolean isCrossAppDomain, System.Runtime.Remoting.Messaging.IMethodCallMessage methodCallMessage) [0x000a2] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Boolean fCheck, System.Runtime.Remoting.Messaging.IMethodCallMessage methodCallMessage) [0x00000] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler, System.Boolean fCheck) [0x00000] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler) [0x00000] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream) [0x00000] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Resources.ResourceReader.DeserializeObject (System.Int32 typeIndex) [0x00019] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Resources.ResourceReader._LoadObjectV2 (System.Int32 pos, System.Resources.ResourceTypeCode& typeCode) [0x0035c] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Resources.ResourceReader.LoadObjectV2 (System.Int32 pos, System.Resources.ResourceTypeCode& typeCode) [0x00000] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Resources.ResourceReader.LoadObject (System.Int32 pos, System.Resources.ResourceTypeCode& typeCode) [0x00022] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Resources.RuntimeResourceSet.GetObject (System.String key, System.Boolean ignoreCase, System.Boolean isString) [0x000be] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Resources.RuntimeResourceSet.GetObject (System.String key, System.Boolean ignoreCase) [0x00000] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Resources.ResourceManager.GetObject (System.String name, System.Globalization.CultureInfo culture, System.Boolean wrapUnmanagedMemStream) [0x00028] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at System.Resources.ResourceManager.GetObject (System.String name) [0x00000] in <04750267503a43e5929c1d1ba19daf3e>:0 
  at GerberCombinerBuilder.GerberPanelizerParent.InitializeComponent () [0x00c08] in <4c0c6cc0943e4803a6dcff3fea38c2f8>:0 
  at GerberCombinerBuilder.GerberPanelizerParent..ctor () [0x00006] in <4c0c6cc0943e4803a6dcff3fea38c2f8>:0 
  at (wrapper remoting-invoke-with-check) GerberCombinerBuilder.GerberPanelizerParent..ctor()
  at GerberCombinerBuilder.Program.Main () [0x0000b] in <4c0c6cc0943e4803a6dcff3fea38c2f8>:0

I’ve never panelised a design, but apperently you start Pcbnew “Standalone”, which means, not from the KiCad project manager, but direct from the command line or from your OS Main menu.
This opens op some extra options in the menu in Pcbnew.
You can then do:

Pcbnew / File / Append Board

as a start to panelisation.
Just did a quick test and loaded 2 different designs into Pcbnew with “Append Board”, and it seems to work just fine:


If you do not have the “Append Board” option in the “File” menu, you have not started Pcbnew in the “standalone” mode.

Thank you very much,

I’ve been searching all day for “Append board” button.

I prefer to do it from Kicad.

I’ve designed a Audio/Video TX and Audio/Video RX 5.8Ghz for drones or other applications. And I’ve built a pnp machine for these and other kicad projects that I have done. The process to assembly one by one is very slow, the board sizes are about 26x24mm, then I want to create a panel with a size for my pnp machine, 300x300mm max

I just dragged a window around the small board on the screenshot above, then right clicked and seleged “Create Array”.
This sure is already beginning to look like a panel.

But Panelisation is not really / completely supported by KiCad.
It would be nice for example when an error is discovered in the PCB to be able to update the boards in the panel, or re-create the whole panel from a script.

When looking at the array, it sure seems a good idea to add mousebites and maybe other things to the PCB before you open it in the standalone version and start the panelisation attempt.
If you have to re-create your panel later, then all the features you’ve added before that step won’t be lost.

I’ve heared some rumors that there may be some beter panelisation tools in KiCad V6, but that will be a few years into the Future.

Yes, I was playing with it. Thank you.

panel

Hello,

I had left the panel, but the pcb shop prefers panels when it comes to more than a small batch. Then I tried again and it has not left me bad at all.

Best regards.


This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.