查看: 20868
回复: 11
我用的是KICAD。不会用AD,PAD之类的
飞过海的嘎嘎嘎
13
主题
102
回复
发表于2017-03-23 21:55:13 | 显示全部楼层
1# 电梯直达

要想贴片要改好久坐标文件了



AD之类的学了好久好久学不会。哈哈哈哈

乱十七
2
主题
27
回复
发表于2017-04-04 11:39:05   |  显示全部楼层
5#

我用python写的转换程序。吧kicad的pos文件转为jlc需要的格式。

import re;


filestr = r"C:\Kicad\Test\Control17123\gerber\c17132.pos";   //要转换的文件。pos文件

tup_del = ('TST', 'LOGO'); //要过滤掉不贴片的元件表,可自行添加
dict_replace = {'C_0805':'0805',     //kicad里面的一些封装名称和jlc不同,替换表。可自行添加
                'C_B':'3528',
                'c_tant_B':'3528',
                'SMA':'DO-214AC',
                'SMA_Standard':'DO-214AC',
                'Crystal_SMD_5032_2Pads':'SMD-5032',
                'SO-4':'SOP-4_P2.54',
                'SO16':'SOIC-16',
                'LED-0805':'0805',
                'SOT23-EBC':'SOT-23',
                'SOT23':'SOT-23',
                'SOT223':'SOT-223',
                'R_1812':'1812',
                'TQFP_64':'LQFP-64',
                'DO-214AC':'LL-34',
                'crystal_FA238-TSX3225':'SMD-3225',
                '5032_2':'SMD-5032',
                'SO16':'SOIC-16',
                'SOIC-8_3.9X4.9MM_PITCH1.27MM':'SOIC-8'
                };

dict_replace_name = { //kicad里面的一些元件名称和jlc不同,替换表。可自行添加
        'ULN2003':'ULN2003AFWG',
        '1N4148':'LL4148LL'
        };


f=open(filestr,"r");
txt=f.readlines();
f.close();


n = filestr.rfind('\\');
if n==-1:
        filename = filestr;
        filepath = "";
else:
        filename = filestr[n+1:];
        filepath = filestr[0:n+1];

n = filename.rfind('.');
if n==-1:
        filename_noext = filename;
else:
        filename_noext = filename[0:n];

posfilename = filepath + "SMT_Coordinate_" + filename_noext + ".csv";
bomfilename = filepath + "SMT_BOM_" + filename_noext + ".csv";

goods = dict();
pos = list();


for i in txt:
        if re.match('#', i):
                continue;
        l = re.split('[ \n\r]+', i);
        if l[1] in tup_del:
                continue;
        if l[1] in dict_replace_name.keys():
                l[1] = dict_replace_name[l[1]];        
        if l[2] in dict_replace.keys():
                l[2] = dict_replace[l[2]];
        x = [l[0], l[2], l[3]+'mm', l[4]+'mm', 'T', l[5]];
        #print(x);
        pos.append(x);
        #print(l);
        l1 = str(l[1]).upper();
        l2 = str(l[2]).upper();
        x = tuple((l1,l2));
        if x not in goods.keys():
                goods[x] = list();
        goods[x].append(l[0]);

#write pos file
f = open(posfilename, 'w');
f.write('Designator,Footprint,Mid X,Mid Y,Layer,Rotation\n');
for i in pos:
        s = str(i[0])+','+\
                str(i[1])+','+\
                str(i[2])+','+\
                str(i[3])+','+\
                str(i[4])+','+\
                str(i[5])+'\n';
        f.write(s);
f.close();

#write bom file
f = open(bomfilename, 'w');
f.write('Comment,Designator,Footprint\n');
for i in goods:
        ss = i[0]+",";
        comp = goods[i];
        if len(comp)>1:
                ss = ss + '"' + comp[0];
                for x in comp[1:]:
                        ss = ss + "," + x;
                ss = ss + '",';
        else:
                ss = ss + comp[0] + ",";
        ss = ss + i[1]+"\n";
        f.write(ss);

f.close();


乱十七
2
主题
27
回复
发表于2017-04-04 11:42:16   |  显示全部楼层
6#

kicad最大的好处就是简单高效。还有源代码,可以添加自己特殊需要的功能。另外,无版权问题。

不用ad很多年。。。。


主题

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

禁言/删除

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

举报

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

顶部