SMT 扩展库器件的手动添加
本帖最后由 useronce 于 2018-11-14 22:15 编辑要贴片基础库里面没有的器件,现在官方还没有,得自己逐项往器件的参数对话框里面填。
没找到现成的自动方法,这里给个思路。
- 下单平台 > 可贴片元器件列表 > 找到自己的器件 然后在浏览器里面拿到详情的 json,提取关键信息
切到 altium design 的器件原理图属性页,用模拟按键工具,逐项把嘉立创贴片所需的属性填好。
这个过程可以自动化,但是不知道版主能不能开放器件的查询 json 查询(现在需要登录才能查)。
下面是一个实例,自动模拟按键脚本
#define VK_BACK 0x08
#define VK_TAB 0x09
#define VK_SHIFT 0x10
#define VK_CONTROL 0x11
#define VK_MENU 0x12
#define VK_PAUSE 0x13
#define VK_CAPITAL 0x14
loadll ("user32", "keybd_event", "void keybd_event(byte vk, byte scan, int flags, int ptr_extra_info);");
/*==============================================================================
* \briefSimu send Alt+A
*/
void send_Add ()
{
keybd_event(0x12, 0, 0, 0);// press alt
keybd_event('A', 0, 0, 0); // press a
keybd_event('A', 0, 2, 0); //release a
keybd_event(0x12, 0, 2, 0); //release alt
sleep ( 300 );
}
/*==============================================================================
* \briefSimu send Shift+Tab
*/
void send_shift_tab ()
{
keybd_event(0x10, 0, 0, 0);// press alt
keybd_event(0x09, 0, 0, 0); // press a
keybd_event(0x09, 0, 2, 0); //release a
keybd_event(0x10, 0, 2, 0); //release alt
sleep ( 10 );
}
/*==============================================================================
* \briefSimu send Char
*/
void send_char (char val)
{
bool bShift = false;
if(val >= 97 && val <= 122) //小写a-z
{
val -= 32;
bShift = false;
}
else if(val >= 65 && val <= 90) //大写A-Z
{
bShift = true;
}
else if(val >= 48 && val <= 57) //数字0-9
{
bShift = false;
}
else //特殊符号
{
switch(val)
{
case '`':
val = 192;
bShift = false;
break;
case '~':
val = 192;
bShift = true;
break;
case '!':
val = '1'; //!和1在同一个键盘,使用同一个键盘码,以下相同
bShift = true;
break;
case '@':
val = '2'; //@和2在同一个键盘,使用同一个键盘码,以下相同
bShift = true;
break;
case '#':
val = '3';
bShift = true;
break;
case ':
val = '4';
bShift = true;
break;
case '%':
val = '5';
bShift = true;
break;
case '^':
val = '6';
bShift = true;
break;
case '&':
val = '7';
bShift = true;
break;
case '*':
val = '8';
bShift = true;
break;
case '(':
val = '9';
bShift = true;
break;
case ')':
val = '0';
bShift = true;
break;
case '-':
val = 189;
bShift = false;
break;
case '=':
val = 187;
bShift = false;
break;
case '_':
val = 189;
bShift = true;
break;
case '+':
val = 187;
bShift = true;
break;
case '[':
val = 219;
bShift = false;
break;
case '{':
val = 219;
bShift = true;
break;
case ']':
val = 221;
bShift = false;
break;
case '}':
val = 221;
bShift = true;
break;
case '\\':
val = 220;
bShift = false;
break;
case '|':
val = 220;
bShift = true;
break;
case ';':
val = 186;
bShift = false;
break;
case ':':
val = 186;
bShift = true;
break;
case '\'':
val = 222;
bShift = false;
break;
case '\"':
val = 222;
bShift = true;
break;
case ',':
val = 188;
bShift = false;
break;
case '<':
val = 188;
bShift = true;
break;
case '.':
val = 190;
bShift = false;
break;
case '>':
val = 190;
bShift = true;
break;
case '/':
val = 191;
bShift = false;
break;
case '?':
val = 191;
bShift = true;
break;
default:
break;
}
}
if(bShift)
keybd_event(VK_SHIFT,0,0,0);
keybd_event(val,0,0,0);
keybd_event(val,0, 2,0);
if(bShift)
keybd_event(VK_SHIFT,0, 2,0);
}
/*==============================================================================
* \briefSimu send Chars
*/
void send_string (char *str)
{
char ch;
while (*str)
{
ch = *str;
printf ( "%c", ch );
send_char (ch);
str ++;
}
sleep ( 300 );
}
#define VK_RETURN 0x0D
void send_enter ()
{
keybd_event(VK_RETURN, 0, 0, 0);
}
printf ( "waiting for window rdy!\n" );
sleep ( 3000 );
printf ( "now adding chars\n" );
void add_item (char *name, char *val)
{
send_Add ();
send_string (val);
send_shift_tab ();
send_shift_tab ();
send_shift_tab ();
send_string (name);
send_enter ();
sleep ( 500 ); // wait for dialog to close
}
/** remplace the following from parse_jlc_json.py output
* ======================== replace block begin ========================
*/
char *_HelpFile="https://atta.szlcsc.com/upload/public/pdf/source/20170428/1493376825827.pdf";
char *_DataSheetFile="https://atta.szlcsc.com/upload/public/pdf/source/20170428/1493376825827.pdf";
char *_SuppliersPartNumber="C81720";
char *_Package="LQFP-48_7x7x05P";
char *_StockNum="4286";
char *_SupplierLink="https://item.szlcsc.com/82873.html";
/* ======================== replace block end ======================== */
add_item ("HelpURL", _HelpFile);
add_item ("ComponentLink1Description", "Supplier Link");
add_item ("ComponentLink1URL", _SupplierLink);
add_item ("ComponentLink2Description", "Datasheet");
add_item ("ComponentLink2URL", _DataSheetFile);
add_item ("Package", _Package);
add_item ("Supplier", "LC");
add_item ("SuppliersPartNumber", _SuppliersPartNumber);
哪位有更便捷的方法,还请分享一下。 JSON 解析脚本如下:
# -*- coding: GBK -*-
import json
// data source: https://www.sz-jlc.com/consumer/ in chrome F12
data = {"componentLibraryType":"expand","isStoryGoods":"no","model":"STM32F072CBT6","stockNum":4286,"leastNumber":1,"braidAngle":"90","remarks":"快速上架","code":"C81720","type":"ST(意法半导体)","components_img_preview_path":"","components_img_url":"https://alimg.szlcsc.com/upload/public/product/source/20180907/82717C81F4D1C1D6A68161111AB494C7.jpg","librar":"扩展库","dataBook_url":"/upload/public/pdf/source/20170428/1493376825827.pdf","leastPatchNumber":1,"name":"STM32F072CBT6 ","specification":"LQFP-48_7x7x05P","gradeFee":20,"prices":[{"price":"10.16000","startNumber":1,"endNumber":9},{"price":"8.25000","startNumber":10,"endNumber":29},{"price":"7.90000","startNumber":30,"endNumber":99},{"price":"7.55000","startNumber":100,"endNumber":499},{"price":"7.40000","startNumber":500,"endNumber":-1}],"brand":"ST(意法半导体)","componentPrice":10.16}
json_str = json.dumps (data, ensure_ascii=False, indent=4)
#print (json_str)
dic = json.loads(json_str, encoding='GBK')
print 'char *_HelpFile="https://atta.szlcsc.com' + dic.get('dataBook_url') + '";'
print 'char *_DataSheetFile="https://atta.szlcsc.com' + dic.get('dataBook_url') + '";'
print 'char *_SuppliersPartNumber="' + dic.get('code') + '";'
print 'char *_Package="' + dic.get('specification') + '";'
print 'char *_StockNum="' + str(dic.get('stockNum')) + '";'
print 'char *_SupplierLink="https://item.szlcsc.com/82873.html";'
玩法 高级. 一般电工玩不转 我还是一个一个自己填吧
页:
[1]