色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何在EAGLE CAD中編寫一個ULP

科技觀察員 ? 來源:allaboutcircuits ? 作者:Yahya Tawil ? 2022-05-10 15:29 ? 次閱讀

在本教程中,您將學(xué)習(xí)如何在 EAGLE CAD 中編寫您的第一個 ULP,以便為您的 CAD 工具添加新功能。

用戶語言程序 (ULP) 是 EAGLE CAD 用戶的一組擴(kuò)展程序,用于以自動化方式促進(jìn)日常工作或完成在沒有 ULP 幫助的情況下無法完成的工作。例如,將圖像導(dǎo)入 PCB 設(shè)計的唯一方法是使用命令 import-bmp ULP。在原理圖中自動放置、導(dǎo)出 BOM 和重新編號零件都是 ULP 可以提供幫助的日常工作。

從開發(fā)人員的角度來看,EAGLE ULP 與 C 有很多相似之處——實際上,它是一種用于開發(fā)這些擴(kuò)展的類 C 語言。那么為什么它是一門重要的編程語言要學(xué)習(xí)呢?主要原因是開發(fā)自己的 ULP 來幫助自己和其他設(shè)計師。此外,ULP 主要由業(yè)余愛好者和工程師在空閑時間編寫,這通常意味著將來很少進(jìn)行維護(hù)或修訂。

就個人而言,我一直在使用 ULP 在 PCB 上產(chǎn)生倒置(又名負(fù))絲印。網(wǎng)絡(luò)上唯一可用的 ULP, negasilk (鏈接打開 zip 文件)可以執(zhí)行我想要的工作,但步驟繁瑣。因為這個 ULP 不能直接應(yīng)用于我的設(shè)計,所以我應(yīng)該在一個新的 PCB 文件中運(yùn)行它——復(fù)制輸出,然后將其粘貼回原始設(shè)計。了解 ULP 的基礎(chǔ)知識幫助我改進(jìn)了流程,首先讓我自己和其他人更容易。

ULP 的第一眼

EAGLE 用戶語言可用于訪問 EAGLE 數(shù)據(jù)結(jié)構(gòu)并創(chuàng)建各種輸出文件。

EAGLE 中有三種主要的數(shù)據(jù)結(jié)構(gòu)類型:lbr、sch 和 brd。我認(rèn)為稱它們?yōu)閷ο蟾髦牵驗檫@些數(shù)據(jù)結(jié)構(gòu)有兩種類型的成員:數(shù)據(jù)成員和循環(huán)成員。

數(shù)據(jù)成員存儲文件名、網(wǎng)格單元和符號名稱等數(shù)據(jù),而循環(huán)成員用于在相同對象類型的元素之間切換,如原理圖文件或庫對象中零件的循環(huán)功能。循環(huán)的每個運(yùn)行實例成員都包含數(shù)據(jù)成員。

你感到困惑嗎?別擔(dān)心,下面的例子會讓事情變得更清楚。示例 ULP 將獲取每個部件名稱并計算部件數(shù)量。基本上,要開發(fā) ULP,您需要一個文本編輯器和一個帶有 ulp 擴(kuò)展名的文本文件。

string Names,result;

int Number=0;

schematic(S)

{

S.parts(P)

{

Number++;

Names+=P.name;

Names+=“,”;

}

sprintf(result,“%d Parts, Names:%s”,Number,Names);

dlgMessageBox(result,“+OK”);

}

pYYBAGJ6FFOAaxjuAAAr_ECmC8w812.jpg

運(yùn)行上一個 ULP 的輸出。

原理圖(S)語句用于訪問原理圖的上下文以分別到達(dá)其中的所有對象。S,原理圖對象的標(biāo)識符,執(zhí)行{。.}之間的代碼塊。原理圖對象(UL_SCHEMATIC 對象)有自己的數(shù)據(jù)和循環(huán)成員來訪問其他對象(零件、圖紙等)。

如我們所見, S.parts(P)是負(fù)責(zé)為每個部分P制作循環(huán)的方法。

pYYBAGJ6FFSAJLkrAAA0acg0yTM779.jpg

UL_SCHEMATIC 對象的數(shù)據(jù)和循環(huán)成員。

在 ULP 手冊中,您可以找到有關(guān)每個對象及其成員的大量文檔。我將在樹形圖中總結(jié)它們。

poYBAGJ6FFaAOo3mAAAxqq75wpM673.png

讓我們退后一步;通常,ULP 的結(jié)構(gòu)包括聲明變量、定義函數(shù)(如果可用),最后是主程序。無需放置 main 函數(shù)(void main()),盡管我可以找到一些帶有/不帶有 main 函數(shù)的 ULP。簡單地說,函數(shù)和變量定義之后的任何語句都被認(rèn)為是主函數(shù)。

讓我們修改第一個示例以計算設(shè)計有多少張圖紙以及每張圖紙中有多少零件。

string Names,result;

int Number=0;
schematic(S)
        {
            S.parts(P)
            {
                  Number++;
               Names+=P.name;
               Names+=",";
            }
            sprintf(result,"%d Parts, Names:%s",Number,Names);
            dlgMessageBox(result,"+OK");
        }

讓我們在樹上遵循這個:

poYBAGJ6FFeAHtRFAACB92Oxzzc834.png

將命令傳遞給編輯器

有兩種方法可以將命令傳遞給 EAGLE 編輯器。

第一個選項是使用 exit()函數(shù)。這是最前沿的方式;它終止 ULP 的執(zhí)行并將命令傳遞給編輯器。命令必須是此內(nèi)置函數(shù)的字符串參數(shù)。例如, exit(“Move R1”)將使 EAGLE 在終止 ULP 后執(zhí)行該命令。

第二個選項是創(chuàng)建一個可以稍后執(zhí)行的腳本文件。雖然腳本(.src 文件)不是我們對本教程的興趣,但知道腳本包含(非常基本)一組編輯器命令就足夠了。

ULP 執(zhí)行后,會創(chuàng)建腳本文件,您可以使用SCRIPT file_name 運(yùn)行它;命令或從菜單欄中的腳本圖標(biāo)。一般來說,使用退出函數(shù)比較常見。

要查看退出函數(shù)的實際作用,我們將編寫一個簡單的程序,將當(dāng)前日期作為文本添加到第 21 層中的設(shè)計中。

string Names,result;

int Number=0,Sh_Number=0;
schematic(S)
        {
            S.sheets(Sh)
            {
                Sh_Number++;    
                Sh.parts(P)
                {
                    Number++;
                    Names+=P.name;
                    Names+=",";
                    
                }
                sprintf(result,"Sheet #%d with %d Parts, Names:%s",Sh_Number,Number,Names);
                dlgMessageBox(result,"+OK");
                Number=0;
                Names="";
            }    
        }

庫和原理圖是整數(shù)常量,如果當(dāng)前編輯器窗口是庫或原理圖則返回 1,否則返回 0。

dlgMessageBox("! Open this ULP from PCB Editor","+OK");

這將帶來一個帶有消息的彈出窗口。我們將簡要解釋 ULP 中的對話框。

exit(-1); 

將終止 ULP(錯誤情況)。

string Months[]= {"Jan","Feb","Mar","Apr","May","June","July","Aug","Sept","Oct","Nov","Dec"};
int t = time();
string CMD,text;

這是變量聲明。

time()函數(shù)是一個內(nèi)置函數(shù),它以數(shù)字格式返回系統(tǒng)時間。

CMD = "GRID INCH;LAYER 21;";
CMD += "CHANGE SIZE 0.066;";
CMD += "CHANGE RATIO 15%;";
CMD += "CHANGE FONT VECTOR;";

這些命令用于將網(wǎng)格單位設(shè)置為英寸并更改文本大小、比例和字體類型。您必須用分號分隔命令。

sprintf(text,"TEXT '%d %s %d'",t2day(t),Months[t2month(t)],t2year(t));

sprintf函數(shù)用于格式化數(shù)據(jù)字符串。

exit(CMD);

exit函數(shù)會將 CMD 字符串傳遞給編輯器并終止 ULP 執(zhí)行。

EAGLE ULP 中的對話框

ULP 為作為用戶語言程序前端的對話框提供了一組內(nèi)置函數(shù)。

dlgDialog是任何其他對話框?qū)ο蟮幕救萜鳌K鼒?zhí)行由括號{..}之間的塊定義的對話框。

作為介紹,我們將構(gòu)建一個簡單的對話框,該對話框由一個帶有“Hello”標(biāo)題和“Ok”按鈕的窗口組成。

int Result = dlgDialog("Hello") 
{
dlgLabel("Hello world");
dlgPushButton("OK") 
{
dlgMessageBox("! YOU PRESSED OK!","OK");
dlgAccept();
}
};

dlgDialog有一個字符串參數(shù)來定義對話框標(biāo)題。

dlgPushButton添加一個名為 OK 的按鈕,而 dlgMessageBox顯示一個帶有 OK 按鈕的簡單消息框。最后,退出對話框dlgAccept函數(shù)接受對話框內(nèi)容(這里沒有內(nèi)容)并關(guān)閉它。

pYYBAGJ6FFiAajUnAAAhVvlVBhQ419.jpg

運(yùn)行上一個 ULP 的輸出。

注意:對話框中的文本中使用了一些特殊字符,如&、+和-來完成特定工作。

‘&’指定熱鍵以使焦點轉(zhuǎn)到該對象/標(biāo)簽

‘+’當(dāng)您按 Enter 時選擇按鈕。

‘-’ 當(dāng)您按下 Esc 時使按鈕被選中。

例子:

int result = dlgMessageBox("Try To Press:","+Enter","&O","-Esc");

 
switch(result)
{
case 0:
dlgMessageBox("YOU PRESSED OK!");
break;
case 1:
dlgMessageBox("YOU PRESSED O!");
break;
case 2:
dlgMessageBox("YOU PRESSED Esc!");
break;
}

poYBAGJ6FFmAOz_LAAAVDMTFFWs231.jpg

運(yùn)行上一個 ULP 的輸出。

其他對話框功能用于用戶輸入,如列表視圖、單選按鈕和數(shù)據(jù)字段輸入。

閱讀其用法說明后,您可以輕松使用任何其他對話框功能。同時,在 ULP 手冊中還可以找到許多同類別的其他功能。

dlgListView

dlgListView使用給定數(shù)組的內(nèi)容定義了一個多列列表視圖。它需要三個主要參數(shù):第一個參數(shù)是定義列表視圖標(biāo)題的字符串參數(shù),第二個參數(shù)是要顯示為列表項的字符串?dāng)?shù)組,第三個參數(shù)是反映所選索引的整數(shù)數(shù)組中的 listview 元素。dlgListView可以包含在您雙擊元素時執(zhí)行的代碼塊。

dlgRadioButton

dlgRadioButton定義一個帶有給定文本的單選按鈕。它有兩個參數(shù):第一個參數(shù)是使用字符串來定義按鈕旁邊的文本,第二個參數(shù)是一個整數(shù),它反映了從使用 dlgGroup函數(shù)定義的組中選擇的單選按鈕。同一組內(nèi)的所有單選按鈕必須使用相同的選擇變量。

dlgString編輯

dlgStringEdit定義了一個字符串輸入字段。它有一個字符串參數(shù)來包含用戶輸入的值。注意:它的工作方式與 dlgRealEdit 和 dlgIntEdit 的工作方式相同。

讓我們將上述信息付諸實踐。在下面的示例中,我們將檢查dlgListView、dlgRadioButton和dlgStringEdit的用法。

string Items[] = { "Item One", "Item Two", "Item Three" }, Item ;

int L_Selected = 0,R_Selected=0; // initially selects "One"
int Result = dlgDialog("Items")
{
dlgLabel("Choose One:");
 
dlgHBoxLayout
{
dlgListView("Name\tDescription", Items, L_Selected)
 {
dlgMessageBox("You have selected " + Items[L_Selected]);
}
 
dlgGroup("Items")
 {
dlgRadioButton("&One", R_Selected);
dlgRadioButton("&Two", R_Selected) {dlgMessageBox("You have selected " + Items[L_Selected]);}
dlgRadioButton("&Three", R_Selected);
}
}
dlgVBoxLayout
{
dlgLabel("Enter &Item");
dlgStringEdit(Item);
dlgPushButton("OK")
{
dlgMessageBox("You have selected from ListView " + Items[L_Selected] + ". From RadioButton " + Items[R_Selected] + ", and entered "+ Item);
dlgAccept();
}
}
}; 

pYYBAGJ6FFqAFGdhAACHoIO-xqo545.jpg

運(yùn)行上一個 ULP 的輸出。

dlgListView(“Name\tDescription”, Items, L_Selected)

如上圖所示,列表視圖具有“名稱”和“描述”標(biāo)題,并顯示項目數(shù)組的元素。所選項目索引將存儲在L_Selected中。

如果您在列表的任何項目上單擊兩次——代碼塊將執(zhí)行。

dlgGroup("Items")

 {
dlgRadioButton("&One", R_Selected);
dlgRadioButton("&Two", R_Selected) {dlgMessageBox("You have selected " + Items[L_Selected]);}
dlgRadioButton("&Three", R_Selected);
}

單選按鈕必須使用dlgGroup組合在一起,并共享相同的選擇變量R_Selected。如果單擊單選按鈕“Two”,您將看到一條消息,這是單選按鈕如何執(zhí)行代碼的示例。

注意: dlgHBoxLayout和dlgVBoxLayout分別用于水平和垂直排列布局。

鍛煉

作為一個小練習(xí),您可以編寫一個簡單的 ULP,根據(jù)其大小使用框架庫中的可用框架將適當(dāng)?shù)目蚣芴砑拥侥氖疽鈭D中。我為您測量了框架,以便在本練習(xí)中使用它。您需要掃描圖紙以了解其尺寸。

poYBAGJ6FFuAYMGsAAAnxoQ5aAA296.png

以 Mil 為單位的尺寸

要解決此練習(xí),您將使用以下技能:

使用數(shù)據(jù)和循環(huán)成員獲取計算圖紙尺寸所需的數(shù)據(jù)的能力。

使用 EAGLE 命令將設(shè)備添加到設(shè)計中的能力。

在 ULP 中使用對話框的能力。

注意:只是為了好玩,我在菜單欄上添加了一個圖標(biāo)。您可以通過在 SCH: 部分中將以下行添加到位于安裝目錄中 src 文件夾中的 eagle.scr 文件中來做到這一點。

‘[FrameIt.png] Add Frame : Run AddFrame.ulp;’\

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • CAD
    CAD
    +關(guān)注

    關(guān)注

    17

    文章

    1092

    瀏覽量

    72523
  • EAGLE
    +關(guān)注

    關(guān)注

    4

    文章

    35

    瀏覽量

    21353
  • ULP
    ULP
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    10860
收藏 人收藏

    評論

    相關(guān)推薦

    TIDA-01350 CAD Files文件用EAGLE打開后顯示文件無效如何解決?

    參考設(shè)計High Speed, Linear Transimpedance Reference Design的TIDA-01350 CAD Files文件用EAGLE打開后顯示文件無效
    發(fā)表于 08-19 06:04

    請問CAD EAGLE和protel的電路圖能相互轉(zhuǎn)換嗎?

    CAD EAGLE和protel的電路圖能相互轉(zhuǎn)換嗎?怎么轉(zhuǎn)換? 會對電路有影響嗎?謝謝!
    發(fā)表于 04-02 18:00

    EAGLE格式的SCH和PCB如何轉(zhuǎn)成PROTEL格式的?

    可以在官方網(wǎng)站http://eagle.timll.com/eagle_ULP.asp上下載“eagle2ad_sch.ulp”用戶語言程序,執(zhí)行該文件即可將Eagle格式的原理圖轉(zhuǎn)換
    發(fā)表于 09-08 16:41

    Eagle數(shù)據(jù)交換

    使用的任何數(shù)據(jù)格式。能夠生成元件清單的 bom.ulp 文件就是很好的例子。  通過 EAGLE 用戶語言這樣的強(qiáng)大工具能夠讓用戶自定義命令,甚至可以將自定義的命令分配給特定的熱鍵
    發(fā)表于 09-23 09:06

    Eagle轉(zhuǎn)Protel PCB

    東西,叫export-protelpcb.ulp,這是eagle的用戶語言文件,專門導(dǎo)出protel格式pcb用的,導(dǎo)出protel pcb。第三步:拿protel99se打開上述pcb,然后另存
    發(fā)表于 09-29 17:02

    EAGLE格式的SCH和PCB如何轉(zhuǎn)成PROTEL格式的?

    可以在官方網(wǎng)站http://eagle.timll.com/eagle_ULP.asp上下載“eagle2ad_sch.ulp”用戶語言程序,執(zhí)行該文件即可將Eagle格式的原理圖轉(zhuǎn)換
    發(fā)表于 10-14 17:24

    Eagle轉(zhuǎn)Protel PCB

    的,看下步。第二步:下載東西,叫export-protelpcb.ulp,這是eagle
    發(fā)表于 10-21 18:07

    EAGLE如何將全部淚滴去掉?

    目前沒有全部淚滴去掉的ULP工具,在eagle淚滴的添加是線構(gòu)成的(BMP圖也樣),這樣就很難弄掉了。 切都妥當(dāng)了,再加淚滴;加淚
    發(fā)表于 11-04 17:02

    EAGLE格式的SCH和PCB如何轉(zhuǎn)成PROTEL格式的?

    可以在官方網(wǎng)站http://eagle.timll.com/eagle_ULP.asp上下載“eagle2ad_sch.ulp”用戶語言程序,執(zhí)行該文件即可將Eagle格式的原理圖轉(zhuǎn)換
    發(fā)表于 11-14 14:35

    何在CAD插入光柵圖片

    很多在使用CAD的朋友不知道如何在CAD插入光柵圖片,在CAD插入光柵圖像很簡單,直接在菜單
    發(fā)表于 10-22 09:28 ?2.1w次閱讀
    如<b class='flag-5'>何在</b><b class='flag-5'>CAD</b><b class='flag-5'>中</b>插入光柵圖片

    CAD制圖技巧:如何在CAD繪制圓柱體并輸出打印?

    CAD繪圖技巧有很多,關(guān)于怎么在CAD繪制圓柱體,這個你知道嗎?說實話,如果真的需要用到相關(guān)的三維模型,我真的寧愿去ps
    發(fā)表于 09-06 08:00 ?4次下載
    <b class='flag-5'>CAD</b>制圖技巧:如<b class='flag-5'>何在</b><b class='flag-5'>CAD</b><b class='flag-5'>中</b>繪制<b class='flag-5'>一</b><b class='flag-5'>個</b>圓柱體并輸出打印?

    何在CAD圖紙添加文字?詳細(xì)方法資料概述

    CAD圖紙文件添加文字也是很重要的步驟,不然那么復(fù)雜的CAD圖紙怎么看得懂呢?其實在CAD
    發(fā)表于 09-29 08:00 ?0次下載
    如<b class='flag-5'>何在</b><b class='flag-5'>CAD</b>圖紙<b class='flag-5'>中</b>添加文字?詳細(xì)方法資料概述

    EAGLE CAD怎樣做更簡單的PCB設(shè)計

    EAGLE CAD怎樣做更簡單的PCB設(shè)計
    的頭像 發(fā)表于 09-10 17:51 ?8969次閱讀
    <b class='flag-5'>EAGLE</b> <b class='flag-5'>CAD</b>怎樣做更簡單的PCB設(shè)計

    cad怎樣設(shè)置多線線寬?cad怎樣讓所有的線都在平面?

    經(jīng)常需要設(shè)置多線線寬、讓所有的線都在平面以及將所有的線串聯(lián)起來。下面詳細(xì)介紹如何在CAD實現(xiàn)這些功能。
    的頭像 發(fā)表于 10-19 16:53 ?4981次閱讀

    實戰(zhàn)經(jīng)驗 | 如何在用戶應(yīng)用開啟 LoRa CAD

    關(guān)鍵詞:LoRa, CAD, Channel Activity Detection 目錄預(yù)覽 1、LoRa CAD 應(yīng)用場景舉例 2、STM32WL LoRa CAD 原理和驅(qū)動 3、如何在
    的頭像 發(fā)表于 12-26 17:45 ?1575次閱讀
    實戰(zhàn)經(jīng)驗 | 如<b class='flag-5'>何在</b>用戶應(yīng)用<b class='flag-5'>中</b>開啟 LoRa <b class='flag-5'>CAD</b>
    主站蜘蛛池模板: 色久悠悠无码偷拍自怕| 免费国产黄线在线播放| 男人有噶坏| 在线观看免费毛片| 久久精品国产只有精品| 亚洲午夜久久久精品电影院| 黑人强伦姧人妻日韩那庞大的| 亚洲bt区| 九九热最新视频| 1234成人网| 嫩草国产福利视频一区二区| 国产老头与老太hd| 亚洲午夜性春猛交XXXX | 强姧伦久久久久久久久| xxx暴力xxx| 色欲精品国产AV久久久| 国产亚洲视频在线播放香蕉| 主播蜜汁丝袜精品自拍| 日本日本熟妇中文在线视频| 午夜福利电影网站鲁片大全| 国产专区青青在线视频| 97伦理97伦理2018最新| 日韩精品特黄毛片免费看| 国产视频这里只有精品| 云南14学生真实初次破初视频 | 99九九99九九九视频精品| 日日噜噜噜夜夜爽爽狠狠图片| 美女张开腿露尿口给男人亲 | 亚洲 成人网| 男人把女人桶到爽免费看视频| 久久国产欧美| 激情内射亚洲一区二区三区| chinese东北老年tv视频| 亚洲精品高清在线观看| 欧美日韩永久久一区二区三区| 国产精品热久久高潮AV袁孑怡| 伊人久久天堂| 免费鲁丝片一级在线观看| 国产精品99久久久久久AV| 自拍区偷拍亚洲视频| 伊人精品久久久大香线蕉99|