查看: 76609
回复: 66
【工具】KiCAD 一键导出生产文件。 坐标,BOM,以及Gerber

主题

回复
发表于2018-08-24 11:23:36 | 只看该作者
1# 电梯直达

更新了之前的工具 KiCAD 导出SMT贴片机用的坐标文件和BOM文件


一次性导出坐标文件,BOM文件,以及Gerber文件。工具会将钻孔文件的槽孔会根据孔径转换成多个普通孔,也可以在脚本中保留槽孔不转换

使用方法:

1 复制mf_tool.py和gerber_drill.py到"[KiCad安装目录]\share\kicad\scripting\plugins" 路径下

2 在KiCAD的Python命令行窗口中键入下列命令:

import mf_tool as mf
mf.GenSMTFiles()
  1. 或者在[工具]->[外部工具]下执行Gen Manufacture Docs命令。

4 BOM文件和位置文件会以CSV格式存放在电路板相同目录下,gerber和钻孔文件放在电路板目录下的gerber目录中。通过此方法生成的钻孔文件中的槽孔会被转换成多个普通孔。

注意:

GenMFDoc() 会改变电路板的钻孔原点。建议先用GenMFDoc()生成BOM文件和位置文件,再生成Gerber文件。

生成的BOM文件和坐标文件以及gerber和钻孔文件可以直接在sz-jlc.com进行贴装

下载地址


kicad_tools.zip 

项目地址

https://github.com/xtoolbox/kicad_tools



主题

回复
发表于2018-08-24 17:06:50   |  只看该作者
2#
cool !

主题

回复
发表于2018-09-03 14:37:51   |  只看该作者
3#

这个脚本能不能加一个开源协议授权?


我有点想给发行版打包(逃


主题

回复
发表于2018-09-05 13:28:18   |  只看该作者
4#
发表于2018-09-03 14:37:51  3# 这个脚本能不能加一个开源协议授权?我有点想给发行版打包(逃

没有协议随便搞


主题

回复
发表于2018-09-10 09:39:51   |  只看该作者
5#
这个在5.0下面执行完好像什么都没有发生,没有任何文件生成呢

主题

回复
发表于2018-09-10 12:25:16   |  只看该作者
6#
发表于2018-09-10 09:39:51  5# 这个在5.0下面执行完好像什么都没有发生,没有任何文件生成呢
你是怎么执行,是通过python命令行还是工具菜单

主题

回复
发表于2018-10-16 08:55:08   |  只看该作者
7#
发表于2018-09-10 12:25:16  6# 你是怎么执行,是通过python命令行还是工具菜单
是通过console 命令行

主题

回复
发表于2018-10-18 10:35:46   |  只看该作者
8#
发表于2018-10-16 08:55:08  7# 是通过console命令行

命令行中有没有显示什么信息

如果没有任何信息

可以在mf_tool.py中找到 sys.setdefaultencoding("utf8")

把这句话注释掉,然后重新启动脚本控制台运行脚本

可以看到输出信息


主题

回复
发表于2018-10-21 10:16:33   |  只看该作者
9#
发表于2018-10-16 08:55:08  7# 是通过console命令行

在这里获取最新版本,可以看到出错信息

https://github.com/xtoolbox/kicad_tools


主题

回复
发表于2018-11-05 17:19:35   |  只看该作者
10#
有没有谁把AD文件转成KICAD的,我转过后发现所有过孔都没有了,这是什么原因?

主题

回复
发表于2019-01-16 18:29:10   |  只看该作者
11#
我自己写了个脚本,功能跟这个差不多,用了很久了,一直没啥问题。最近下了个单子,结果二极管部分贴反了。跟嘉立创沟通后,大概原因是这样子,kicad所有层上元件的旋转角度是以top层为准。但是smt处理时嘉立创会强制镜像底层元件坐标。所以kicad的底层元件旋转角度就全错了。嘉立创说我以前所有的坐标都是错的,全靠手工修改。按这个说法,这得对kicad输出的底层元件的旋转角度做特殊处理。不知道有没有人遇到过跟我一样的问题?

主题

回复
发表于2019-02-18 09:41:58   |  只看该作者
12#
发表于2019-01-16 18:29:10  11# 我自己写了个脚本,功能跟这个差不多,用了很久了,一直没啥问题。最近下了个单子,结果二极管部分贴反了。跟嘉立创沟通后,大概...

KiCAD的坐标系和JLC的不太一样,需要做平移和旋转

现在JLC的下单助手可以预览,转出来的坐标可以先预览再发出去打样


主题

回复
发表于2019-03-11 11:45:14   |  只看该作者
13#
发表于2019-01-16 18:29:10  11# 我自己写了个脚本,功能跟这个差不多,用了很久了,一直没啥问题。最近下了个单子,结果二极管部分贴反了。跟嘉立创沟通后,大概...
kicad坐标系统应该是一样的吧!我一直都用kicad以及jlc打板。kicad旋转角度跟嘉力创规定一样,都是逆时针为正角度。只是kicad库中很多原件0度位置跟jlc规定不同,你得自己修改一套pcb封装库

主题

回复
发表于2019-03-12 09:05:30   |  只看该作者
14#
发表于2019-03-11 11:45:14  13# kicad坐标系统应该是一样的吧!我一直都用kicad以及jlc打板。kicad旋转角度跟嘉力创规定一样,都是逆时针为正...
top层一样,bottom层大概差了180度。kicad标准库中的元件还是符合规范的,第三方的就很难说了。

主题

回复
发表于2019-03-25 23:35:55   |  只看该作者
15#

发现了一个问题。

我的自用元件库某些封装是用中文命名的。只要PCB中有放置这些封装。那么这个一键导出SMT的插件就不能成功运行。

报错如下

 


主题

回复
发表于2019-03-29 17:45:54   |  只看该作者
16#
发表于2019-03-25 23:35:55  15# 发现了一个问题。我的自用元件库某些封装是用中文命名的。只要PCB中有放置这些封装。那么这个一键导出SMT的插件就不能成功...

目前中文确实会有问题,因为中文有GBK,UTF8,GB2312这些常用的编码。在这些编码之间进行转换会比较麻烦


主题

回复
发表于2019-04-16 15:19:39   |  只看该作者
17#
发表于2019-03-29 17:45:54  16# 目前中文确实会有问题,因为中文有GBK,UTF8,GB2312这些常用的编码。在这些编码之间进行转换会比较麻烦
您好,请问一下我怎么修改那个mf_tool.py脚本让它输出Kicad封装库里面自己添加的字段,我现在找不到自己添加字段的那个变量名是什么,您能指点一下吗?

主题

回复
发表于2019-05-28 19:47:21   |  只看该作者
18#


 


一直出现这个问题,我都是使用的嘉立创下载的库器件和封装。这什么原因?


主题

回复
发表于2019-06-03 11:55:25   |  只看该作者
19#
发表于2019-05-28 19:47:21  18# 一直出现这个问题,我都是使用的嘉立创下载的库器件和封装。这什么原因?

这是因为嘉立创的库文件中有中文,操作系统默认中文编码不一导致的问题。


主题

回复
发表于2019-06-03 18:01:41   |  只看该作者
20#
发表于2019-06-03 11:55:25  19# 这是因为嘉立创的库文件中有中文,操作系统默认中文编码不一导致的问题。
大佬。能不能修复这个问题呢。
库中文确实比英文好用多了。我现在尽量用英文。但是有些料用英文真没法表述。

主题

回复
发表于2019-06-05 10:41:42   |  只看该作者
21#
发表于2019-06-03 18:01:41  20# 大佬。能不能修复这个问题呢。库中文确实比英文好用多了。我现在尽量用英文。但是有些料用英文真没法表述。

这个比较麻烦,因为KiCAD自身对中文的支持就不好

KiCAD中有些地方UTF8有正确显示,有些地方GB2312能正确显示

目前我用JLC的库,在KiCAD中导出的网表是UTF8格式,用工具可以正确输出打样


主题

回复
发表于2019-06-06 17:12:44   |  只看该作者
22#

功能有所更新,增加了一个UI,可以选择生成哪些文件,以及是否生成元件编号的丝印。可以在日志框中查看错误信息。

有时候会出现 " print IOError: [Errno 9] Bad file descriptor " 这样的错误,遇到这种情况多试几次就能成功了

 点击查看大图


主题

回复
发表于2019-06-06 20:21:58   |  只看该作者
23#
应该加一级文件夹单独放一起,插件里已经够乱了。在丢一堆文件进去。谁是谁都分不清了

主题

回复
发表于2019-07-11 14:26:06   |  只看该作者
25#

群主这是什么原因:

Start generate BOM list

Error:
Traceback (most recent call last):
  File "d:\Program Files\KiCad\share\kicad\scripting\plugins/mf_tool.py", line 705, in Onclick
    GenMFDoc(needGenBOM = self.chkBOM.GetValue(), needGenPos = self.chkPos.GetValue(), logger = lambda *args: self.log(*args) )
  File "d:\Program Files\KiCad\share\kicad\scripting\plugins/mf_tool.py", line 531, in GenMFDoc
    bound = GetBoardBound(brd)
  File "d:\Program Files\KiCad\share\kicad\scripting\plugins/mf_tool.py", line 113, in GetBoardBound
    w = d.GetWidth()
AttributeError: 'NoneType' object has no attribute 'GetWidth'


主题

回复
发表于2019-07-16 15:21:13   |  只看该作者
26#
发表于2019-07-11 14:26:06  25# 群主这是什么原因:StartgenerateBOMlistError:Traceback(mostrecentcalll...
你的KiCAD是什么版本的

主题

回复
发表于2019-07-24 15:50:04   |  只看该作者
27#
发表于2019-07-16 15:21:13  26# 你的KiCAD是什么版本的
kicad 5.1.2,外框是结构工程师给我的DXF文件导入的!不能获取宽是啥意思。这个也是同样问题,你可以试试,你看看能不能把判断条件在放开一些,记得有时候有2条cut线,都会出错!顶顶顶优化成为最牛逼的插件LED Board.rar 

主题

回复
发表于2019-07-28 22:40:30   |  只看该作者
28#
发表于2019-06-06 17:12:44  22# 功能有所更新,增加了一个UI,可以选择生成哪些文件,以及是否生成元件编号的丝印。可以在日志框中查看错误信息。有时候会出现...
大神你好,可否参与贡献。

主题

回复
发表于2019-07-28 22:51:46   |  只看该作者
29#
发表于2019-06-06 20:21:58  23# 应该加一级文件夹单独放一起,插件里已经够乱了。在丢一堆文件进去。谁是谁都分不清了
可以的,我尝试一下。

主题

回复
发表于2019-07-29 09:14:35   |  只看该作者
30#
发表于2019-07-24 15:50:04  27# kicad5.1.2,外框是结构工程师给我的DXF文件导入的!不能获取宽是啥意思。这个也是同样问题,你可以试试,你看看能...

你的 PCB 板框无法识别出来。

 


主题

回复
发表于2019-07-29 14:32:33   |  只看该作者
31#
发表于2019-06-06 20:21:58  23# 应该加一级文件夹单独放一起,插件里已经够乱了。在丢一堆文件进去。谁是谁都分不清了

最新版现在已经支持子目录。


https://github.com/xtoolbox/kicad_tools


主题

回复
发表于2019-08-12 15:44:54   |  只看该作者
32#
发表于2019-07-29 09:14:35  30# 你的PCB板框无法识别出来。
有边框,dxf边是不完整的边框吗?还会必须手动画边框才支持。

主题

回复
发表于2019-09-01 21:56:39   |  只看该作者
33#

您好,在windows 版 KICAD 5.1.4成功使用了您的插件,非常的方便,感激不尽

但是LINUX版的 KICAD 5.1.4 只能使用 Python3 , 所以无法使用这个插件,我试过简单地用 2to3 插件更新py脚本也无法使用,

请问大佬能帮忙更新一个py3版本吗,KICAD今后都是主推python3了所以这个强大的插件用不了真的非常困扰啊


主题

回复
发表于2019-09-04 15:15:32   |  只看该作者
34#
发表于2019-09-01 21:56:39  33# 您好,在windows版KICAD5.1.4成功使用了您的插件,非常的方便,感激不尽但是LINUX版的KICAD5.1....
我这边没有linux的环境,后面windows版本也使用python3的时候,会将脚本更新到python3上

主题

回复
发表于2019-09-17 20:49:46   |  只看该作者
35#

  







为什么KICAD里面改了封装后坐标没了,但是BOOM表里有



主题

回复
发表于2019-11-06 14:21:33   |  只看该作者
36#
发表于2019-07-29 14:32:33  31# 最新版现在已经支持子目录。https://github.com/xtoolbox/kicad_tools
你好,我下载了插件,生成文件后里面Description都是desc,请问这个怎么弄?

主题

回复
发表于2019-12-17 00:09:29   |  只看该作者
37#
非常不错

主题

回复
发表于2020-03-28 18:55:42   |  只看该作者
38#
发表于2019-09-17 20:49:46  35# 为什么KICAD里面改了封装后坐标没了,但是BOOM表里有
请问用什么插件能生成您这样的BOM表,我生成的就是一个CSV文件,如何整理成您这样的文件?另外位置文件POS文件怎么打开?

主题

回复
发表于2020-04-17 09:58:12   |  只看该作者
39#
发表于2018-11-05 17:19:35  10# 有没有谁把AD文件转成KICAD的,我转过后发现所有过孔都没有了,这是什么原因?
您好,请教一下,您是怎么转的,可以教我不

主题

回复
发表于2020-05-26 09:36:24   |  只看该作者
40#
发表于2019-09-04 15:15:32  34# 我这边没有linux的环境,后面windows版本也使用python3的时候,会将脚本更新到python3上

请问以下,我这边在 Win10 环境,Kicad 5.1.6 版本,把脚本拷贝到了 "C:\Program Files\KiCad\share\kicad\scripting\plugins" 路径下,

可是我在软件上怎么刷新也看不到插件?

我在 github 下载了好几个插件尝试过,都是无法显示外部插件。请问这种情况如何解决呢?


主题

回复
发表于2020-05-26 10:48:36   |  只看该作者
41#
发表于2020-05-26 09:36:24  40# 请问以下,我这边在Win10环境,Kicad5.1.6版本,把脚本拷贝到了"C:\ProgramFiles\KiCad\...

新的KiCad插件目录放到这里了

C:\Users\<your user name>\AppData\Roaming\kicad\scripting\plugins\kicad_tools

把上面的<your user name>换成你的用户名


或者在【运行】中输入 %APPDATA%,进入应用程序数据目录


主题

回复
发表于2020-05-26 13:13:22   |  只看该作者
42#
发表于2020-05-26 10:48:36  41# 新的KiCad插件目录放到这里了C:\Users\&lt;yourusername&gt;\AppData\Roamin...

经过测试,放在这个目录下还是没有找到任何插件~~~~

C:\Users\jx\AppData\Roaming\kicad\scripting\plugins


我这边连软件都重装过了,还是不行。不只知道有没有什么方法判断出是什么问题导致的呢?


主题

回复
发表于2020-05-26 14:36:32   |  只看该作者
43#
发表于2020-05-26 13:13:22  42# 经过测试,放在这个目录下还是没有找到任何插件~~~~C:\Users\jx\AppData\Roaming\kicad\...

用tree /f 命令看一下你的plugins目录中的文件结构是什么样的

正常情况下是正面这样的

C:.

└─plugins

   └─kicad_tools

           gerber_drill.py

           kisexp.py

           loadnet.py

           mf_tool.py

           __init__.py







主题

回复
发表于2020-05-26 15:25:17   |  只看该作者
44#
发表于2020-05-26 14:36:32  43# 用tree/f命令看一下你的plugins目录中的文件结构是什么样的正常情况下是正面这样的C:.└─plugins└─k...

目录结构是下面这样子的,我放了各种插件去尝试过,东西太多我删除了其它插件。

这个目录在我装软件的时候是没有的,是我自己建的目录。


PS C:\Users\jx\AppData\Roaming\kicad> tree /f

C:.

│  bitmap2component

│  eeschema

│  fp-lib-table

│  kicad

│  kicad_common

│  pcbnew

│  PcbNew.hotkeys

│  PyShell_pcbnew.cfg

│  PyShell_pcbnew_startup.py

│  sym-lib-table

└─scripting

   └─plugins

       └─kicad_tools

              .gitignore

               .gitignore

               desc.png

               gerber_drill.py

               gerber_drill.pyc

               holes_with_ref.png

               kisexp.py

               kisexp.pyc

               layout_tool.py

               loadnet.pyc

               mf_tool.py

               README.md

               slot_without_ref.png

               __init__.py

               __init__.pyc

               mf_tool.pyc

               qrcode_footprint_wizard.py

               LICENSE

               loadnet.py



主题

回复
发表于2020-05-26 15:50:21   |  只看该作者
45#

目录结构是正确的

在KiCad的pcbnew的Python命令行窗口中,执行 import kicad_tools是什么结果


我的执行结果如下:

Py 0.9.8

Python 2.7.16 (default, Aug 15 2019, 17:51:40)  [GCC 9.2.0 64 bit (AMD64)] on win32

Type "help", "copyright", "credits" or "license" for more information.

Startup script executed: C:\Users\wise_dev\AppData\Roaming\kicad\PyShell_pcbnew_startup.py

import kicad_tools


Namespace窗口中的内容如下:

locals()


Type: <type 'dict'>


Value: {'pp': <bound method Display.setItem of <wx.py.crust.Display; proxy of <Swig Object of type 'wxStyledTextCtrl *' at 0xc72a4e0> >>, 'shell': <wx.py.shell.Shell; proxy of <Swig Object of type 'wxStyledTextCtrl *' at 0xc6dd670> >, '__builtins__': <module '__builtin__' (built-in)>, '__package__': None, 'filling': <wx.py.filling.Filling; proxy of <Swig Object of type 'wxSplitterWindow *' at 0x97ab770> >, 'notebook': <wx._controls.Notebook; proxy of <Swig Object of type 'wxNotebook *' at 0xa2607f0> >, 'kicad_tools': <module 'kicad_tools' from 'C:\Users\xtoolbox\AppData\Roaming\kicad\scripting\plugins/kicad_tools/__init__.pyc'>, '__name__': '__main__', '__doc__': None}






主题

回复
发表于2020-05-26 20:40:21   |  只看该作者
46#

-------------------------------------------------------------------------------------

Shell:

-------------------------------------------------------------------------------------

Py 0.9.8

Python 2.7.16 (default, Aug 15 2019, 17:51:40)  [GCC 9.2.0 64 bit (AMD64)] on win32

Type "help", "copyright", "credits" or "license" for more information.

Startup script executed: C:\Users\djx\AppData\Roaming\kicad\PyShell_pcbnew_startup.py

import kicad_tools

Traceback (most recent call last):

 File "<input>", line 1, in <module>

 File "C:\Program Files\KiCad\share\kicad\scripting\plugins/kicad_tools/__init__.py", line 1, in <module>

   from . import mf_tool

 File "C:\Program Files\KiCad\share\kicad\scripting\plugins/kicad_tools/mf_tool.py", line 11, in <module>

   import loadnet

 File "C:\Program Files\KiCad\share\kicad\scripting\plugins/kicad_tools/loadnet.py", line 1, in <module>

   import kisexp as sexp

 File "C:\Program Files\KiCad\share\kicad\scripting\plugins/kicad_tools/kisexp.py", line 86, in <module>

   loadKicadNet("D:\\work\\xtools\\usb_pv\\handware\\hw.net")

 File "C:\Program Files\KiCad\share\kicad\scripting\plugins/kicad_tools/kisexp.py", line 80, in loadKicadNet

   file = io.open(filename, "r", encoding="utf-8")

IOError: [Errno 2] No such file or directory: 'D:\\work\\xtools\\usb_pv\\handware\\hw.net'


这里为什么有个绝对路径??


-------------------------------------------------------------------------------------

Namespace 输出信息:

-------------------------------------------------------------------------------------


locals()


Type: <type 'dict'>


Value: {'pp': <bound method Display.setItem of <wx.py.crust.Display; proxy of <Swig Object of type 'wxStyledTextCtrl *' at 0xeaf4ba0> >>, 'shell': <wx.py.shell.Shell; proxy of <Swig Object of type 'wxStyledTextCtrl *' at 0xeaf3660> >, '__builtins__': <module '__builtin__' (built-in)>, '__package__': None, 'filling': <wx.py.filling.Filling; proxy of <Swig Object of type 'wxSplitterWindow *' at 0xe19baa0> >, 'notebook': <wx._controls.Notebook; proxy of <Swig Object of type 'wxNotebook *' at 0xf9191f0> >, '__name__': '__main__', '__doc__': None}





主题

回复
发表于2020-05-26 22:00:41   |  只看该作者
47#

已经可以使用啦~~

删除了那行有绝对路径的就不报错了,麻烦下次把 python 格式整理一下吧。

感觉编程习惯不是很好。。 N多空行,调试的东西不删除。。


主题

回复
发表于2020-05-26 22:08:53   |  只看该作者
48#

顺便提几个问题!

1. 能否设置 BOM、Gerber,自定义输出路径。虽然手动改 python 代码路径也可以。

但是能直接输入更方便。

2. Gerber 的命名是什么规则?

3. Gerber 的压缩文件也最好可以提供文件名输入,个人有些习惯问题。例如:项目名称_文件类型_版本_日期

其它文件也是如此最好。

最后,谢谢啦。脚本挺方便的!


主题

回复
发表于2020-05-28 13:55:55   |  只看该作者
49#
发表于2020-05-26 22:00:41  47# 已经可以使用啦~~删除了那行有绝对路径的就不报错了,麻烦下次把python格式整理一下吧。感觉编程习惯不是很好。。N多空...
对的,就是你说的这些问题。根据你的反馈修改了文件。

主题

回复
发表于2020-09-07 17:36:24   |  只看该作者
50#
请教下。
这款插件输出的gerber文件,使用CAM350无法查看,是有意限制吗?

对比过,kicad手动输出的gerber文件是能读取的。

   


主题

回复
发表于2020-09-08 10:35:14   |  只看该作者
51#
发表于2020-09-07 17:36:24  50# 请教下。这款插件输出的gerber文件,使用CAM350无法查看,是有意限制吗?对比过,kicad手动输出的gerber...

你好,Gerber的输出没有做限制,都是调用的KiCAD本身的命令完成的。

我没有用CAM350测试过,都是用KiCAD自带的Gerber查看器查看的。

你可以试试用《嘉立创下单助手》能不能正常识别输出的Gerber,如果可以,说明是和CAM350有兼容问题。

我这边一直都是输出后直接把生成的压缩包发给JLC,还没有出过问题。


主题

回复
发表于2020-09-27 23:06:36   |  只看该作者
52#
发表于2020-09-08 10:35:14  51# 你好,Gerber的输出没有做限制,都是调用的KiCAD本身的命令完成的。我没有用CAM350测试过,都是用KiCAD自...

能不能帮忙测试一下KiCad 5.99 nightly build下面怎么使用这个工具,目前nightly build使用不了这个工具

非常感谢,希望能够用上嘉立创的SMT


主题

回复
  • 温馨提示: 标题不合格、重复发帖、发布广告贴,将会被删除帖子或禁止发言。 详情请参考: 社区发帖规则
  • 您当前输入了 0 个文字。还可以输入 8000 个文字。 已添加复制上传图片功能,该功能目前仅支持chrome和火狐

禁言/删除

X
请选择禁言时长:
是否清除头像:
禁言/删除备注:
昵 称:
 
温馨提示:昵称只能设置一次,设置后无法修改。
只支持中文、英文和数字。

举报

X
请选择举报类型:
请输入详细内容:

顶部