|
本帖最后由 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);");
- /*==============================================================================
- * \brief Simu 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 );
- }
- /*==============================================================================
- * \brief Simu 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 );
- }
- /*==============================================================================
- * \brief Simu 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);
- }
- /*==============================================================================
- * \brief Simu 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);
复制代码
哪位有更便捷的方法,还请分享一下。 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|