女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

用 VSCode 編寫自己的 KiCad 插件(下)

KiCad ? 來源:KiCad ? 作者:KiCad ? 2025-06-19 11:44 ? 次閱讀

很多小伙伴都想自己開發(fā) KiCad 插件,但不知從何入手。本文由華秋電子的另一位 KiCad 開發(fā)者波波同學(xué)撰寫,分享了如何快速搭建環(huán)境,并開發(fā)一個(gè)簡單的插件。

wKgZPGhSNj2ACBiRAAYTeDU0iqI922.png

所有環(huán)境配置成功,接下來可以寫我們的python插件了。按照 kicad官方開發(fā)手冊,實(shí)現(xiàn)一個(gè)顯示PCB對應(yīng)圖層的插件:

https://dev-docs.kicad.org/zh-cn/apis-and-binding/pcbnew/index.html

插件文件夾結(jié)構(gòu)如下:

  • kicad_plugin/#插件目錄(Python)

  • - __init__.py #此文件在導(dǎo)入軟件包時(shí)執(zhí)行(Pcbnew啟動(dòng)時(shí))

  • - __main__.py #調(diào)試python代碼時(shí)使用

  • - action_plugin.py # ActionPlugin派生類位于此處

  • - icon.png #插件圖標(biāo)

  • - main_frame_view.py #其他Python代碼

  • - ui_main_frame.fbp # wxformbuilder生成的源代碼

  • - ui_main_frame.py # wxformbuilder生成的python代碼

[插件示例倉庫]:

https://github.com/Huaqiu-Electronics/my-kicad-plugin.git

代碼實(shí)現(xiàn)

1、插件頁面布局。

上文通過wxformbuilder生成了ui_main_frame.pyUiMainFrame類。新建 main_frame_view.py 文件,定義一個(gè)名為MainFrameView的類,它繼承自UiMainFrame,MainFrameView 繼承了 UiMainFrame 的所有屬性和方法。初始化一個(gè)帶有兩列的self.data_view_list控件,并設(shè)置列的樣式。

  • AppendTextColumn()方法用于向DataView中添加一個(gè)文本列。

fromui_main_frameimportUiMainFrame
classMainFrameView(UiMainFrame): def__init__(self, parent):   super().__init__(parent)     self.data_view_list.AppendTextColumn(     "ID",     0,      width=50,      align=wx.ALIGN_CENTER,      flags=dv.DATAVIEW_COL_RESIZABLE,    )    self.data_view_list.AppendTextColumn(     "Layer",     1,      width=170,      align=wx.ALIGN_CENTER,      flags=dv.DATAVIEW_COL_RESIZABLE,    )

2、加載PCB對象。

首先嘗試獲取當(dāng)前 PCB 文件的文件名。pcbnew.GetBoard()返回當(dāng)前加載的 PCB 對象,并將 PCB 對象賦值給self.board 。如果加載失敗,則嘗試加載一個(gè)指定路徑的文件,使用pcbnew.LoadBoard() 方法加載該pcb文件,并將返回的 PCB 對象賦值給 self.board。

   try:     #通過 kicad 打開插件時(shí)調(diào)用      pcbnew.GetBoard().GetFileName()     self.board = pcbnew.GetBoard()    exceptExceptionase:     # VSCode 調(diào)試插件時(shí)調(diào)用      fp ="C:\Program Files\demos\flat_hierarchy\flat_hierarchy.kicad_pcb"# Replace with your own PCB file path.     ifos.path.exists(fp):       self.board = pcbnew.LoadBoard(fp)     else:       print("File not find")

3、從 KiCad 的 PCB 文件中獲取可見圖層的信息,并將這些信息添加到一個(gè)DataView控件中

  • GetVisibleLayers() 方法返回一個(gè)包含所有可見圖層的集合。

  • GAL_LayerSet 是用于管理KiCad 圖層的類。

  • gal_set.Seq() 返回一個(gè)包含所有可見圖層編號(hào)的序列。

  • AppendItem(data) 方法將 data 列表中的內(nèi)容作為一行添加到 DataView 控件中。

 deffill_list_data(self):    data = []    gal_set = self.board.GetVisibleLayers()   fornumin[xforxingal_set.Seq()]:      layerName = self.board.GetLayerName(num)      data = [str( num ), layerName ]      self.data_view_list.AppendItem(data)

4、顯示特定圖層的實(shí)現(xiàn)。

on_show_layer()方法是一個(gè)事件處理函數(shù),用于在 KiCad 的 GUI 中顯示或隱藏特定的圖層。on_show_layer() 方法與一個(gè)事件項(xiàng)關(guān)聯(lián)綁定,當(dāng)用戶觸發(fā)該事件時(shí),它會(huì)根據(jù)用戶在DataView控件中的選擇來顯示特定圖層。

  • GetSelectedRow()方法返回當(dāng)前選中的行索引
  • GetValue(row, column)方法獲取指定行和列的值。
  • SetVisibleLayers(gal_set)設(shè)置可見圖層集合。
  • UpdateUserInterface()方法更新 KiCad 的用戶界面,以反映圖層的更改。

  def on_show_layer(self, event):    selection = self.data_view_list.GetSelectedRow()    item_data = self.data_view_list.GetValue(selection,0)    self.board.SetVisibleAlls()    gal_set = self.board.GetVisibleLayers()    for num in [x for x in gal_set.Seq()]:      ifstr(num) == item_data:        continue      gal_set.removeLayer(num)    self.board.SetVisibleLayers(gal_set)    pcbnew.UpdateUserInterface()    wx.CallAfter(pcbnew.Refresh)    event.Skip()    pass
使用wx.dataview.DataViewCtrlBind方法來綁定事件處理函數(shù)。通過單擊事件調(diào)用 on_show_layer() 方法。
  • dv.EVT_DATAVIEW_SELECTION_CHANGED 是一個(gè)事件類型,表示用戶通過單擊激活數(shù)據(jù)項(xiàng)。

   self.data_view_list.Bind(      dv.EVT_DATAVIEW_SELECTION_CHANGED,self.on_show_layer    )

5、啟動(dòng)一個(gè)基于wxPython的獨(dú)立應(yīng)用程序。

__main__.py中啟動(dòng)插件。從 wx 模塊中導(dǎo)入 App 類,定義一個(gè)名為StandAloneApp的類繼承自 App。StandAloneApp用于管理應(yīng)用程序的生命周期,并在主程序中實(shí)例化該類,顯示主窗口。

  • Show()方法顯示主窗口。

  • app.MainLoop()方法啟動(dòng)應(yīng)用程序的主事件循環(huán)。MainLoop負(fù)責(zé)處理用戶交互、窗口更新等事件。

fromwximportApp
classStandAloneApp(App): # StandAloneApp 類繼承自 wx.App。用于管理應(yīng)用程序的生命周期。 def__init__(self):   super().__init__()
if__name__ =="__main__":  app = StandAloneApp() frommain_frame_viewimportMainFrameView  MainFrameView(None).Show()  app.MainLoop()

6、通過VSCode調(diào)試KiCad插件,在__main__.py頁面下,點(diǎn)擊Python Debugger:Debuge Python File”,出現(xiàn)GUI圖形界面則表示運(yùn)行成功。到這里KiCad插件調(diào)試成功。

wKgZPGhSNj6AXfkaAAKXiQRTdCU350.png

7、定義 KiCad 插件。

action_plugin.py 定義一個(gè)名為 Plugin 的類,繼承自 pcbnew.ActionPlugin。ActionPlugin 是 KiCad 提供的基類,用于創(chuàng)建插件。當(dāng)用戶通過菜單或工具欄按鈕觸發(fā)插件時(shí),Run() 方法被調(diào)用,顯示插件的主界面。

  • self.name設(shè)置插件的名稱,顯示在 KiCad 的菜單或工具欄中。
  • self.category設(shè)置插件的類別,用于在 KiCad 的菜單中組織插件。
  • self.description 插件的功能描述,顯示在 KiCad 的插件管理器中。

  • self.icon_file_name 設(shè)置插件的圖標(biāo)文件路徑。

  • self.dark_icon_file_name 設(shè)置插件的深色模式圖標(biāo)文件路徑。

importpcbnewimportosimportwx
# 插件入口classPlugin(pcbnew.ActionPlugin): def__init__(self):    self.name ="MyPlugin"# 插件名稱    self.category ="Manufacturing"# 描述性類別名稱    self.description ="To show or to hide layer."# 對插件及其功能的描述    self.show_toolbar_button =True# 可選,默認(rèn)為 False    self.icon_file_name = os.path.join(os.path.dirname(__file__),"icon.png") # 可選,默認(rèn)為 ""    self.dark_icon_file_name = os.path.join(os.path.dirname(__file__),"icon.png")
 defRun(self):   frommain_frame_viewimportMainFrameView    MainFrameView(None).Show()

8、在kicad中加載和注冊插件。

__init__.py 文件,通過動(dòng)態(tài)修改sys.path來確保插件模塊可以被正確導(dǎo)入,并調(diào)用插件的注冊方法。
  • PLUGIN_ROOT設(shè)置為當(dāng)前腳本文件所在的目錄路徑。
  • Plugin().register() 創(chuàng)建Plugin類的一個(gè)實(shí)例,并調(diào)用該實(shí)例的register()方法注冊插件
importsysimportos
PLUGIN_ROOT=os.path.dirname(os.path.abspath(__file__))
ifPLUGIN_ROOT not in sys.path:  sys.path.append(PLUGIN_ROOT)
from action_pluginimportPluginPlugin().register()

9、插件代碼完成之后就可以使用自己編寫的插件了。在PCB中打開“工具-->外部插件-->打開插件目錄”,進(jìn)入到插件目錄,將插件頁面放在kicad插件目錄下面:”C:UsershafDocumentsKiCad9.0scriptingplugins或同級(jí)目錄下的C:UsershafDocumentsKiCad9.03rdpartyplugins”。插件如下圖,通過點(diǎn)擊就可以顯示對應(yīng)的PCB圖層了。

wKgZPGhSNj6AZkkyAAZZlRVfO5s414.png

結(jié)束語

編寫KiCad插件是一個(gè)需要深入了解KiCad API的過程,而且代碼的具體實(shí)現(xiàn)細(xì)節(jié)可能會(huì)比較復(fù)雜。如果你在開發(fā)過程中遇到具體的問題,可以查閱KiCad的 官方文檔或在相關(guān)的開發(fā)者社區(qū)尋求幫助。此外,確保你的代碼能夠適應(yīng)KiCad版本的更新,以保持插件的長期可用性。

另外,從 KiCad 9 開始,將逐漸使用 IPC API 逐漸取代原來的 SWIG 方式。詳情可以參考:KiCad 9 引入新的API機(jī)制


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

    關(guān)注

    0

    文章

    340

    瀏覽量

    22982
  • KiCAD
    +關(guān)注

    關(guān)注

    5

    文章

    244

    瀏覽量

    9370
  • vscode
    +關(guān)注

    關(guān)注

    1

    文章

    169

    瀏覽量

    8404
收藏 人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    VSCode編寫自己KiCad插件(上)詳細(xì)步驟教程

    “ ?很多小伙伴都想自己開發(fā) KiCad 插件,但不知從何入手。本文由華秋電子的另一位 KiCad 開發(fā)者波波同學(xué)撰寫,分享了如何快速搭建環(huán)境,并開發(fā)一個(gè)簡單的
    的頭像 發(fā)表于 06-17 11:10 ?695次閱讀
    <b class='flag-5'>用</b><b class='flag-5'>VSCode</b><b class='flag-5'>編寫</b><b class='flag-5'>自己</b>的<b class='flag-5'>KiCad</b><b class='flag-5'>插件</b>(上)詳細(xì)步驟教程

    KiCad直播活動(dòng)(三):在 Windows上編譯KiCad 手把手教您編譯/構(gòu)建 KiCad 源碼

    KiCad 貼紙,趕緊報(bào)名參加吧~ 直播安排 在 Windows 上編譯 KiCad 時(shí)間:3月27日 19:30 內(nèi)容:手把手幫助您從頭開始學(xué)習(xí)編譯 KiCad 代碼。 后續(xù)精彩內(nèi)容:
    的頭像 發(fā)表于 03-24 11:14 ?708次閱讀
    <b class='flag-5'>KiCad</b>直播活動(dòng)(三):在 Windows上編譯<b class='flag-5'>KiCad</b> 手把手教您編譯/構(gòu)建 <b class='flag-5'>KiCad</b> 源碼

    使用 QWQ:32B 模型搭配 VSCode 的 Cline 插件實(shí)現(xiàn)自動(dòng)化代碼編程!

    。結(jié)合 Visual Studio Code(VSCode)的 Cline 插件,開發(fā)者可以實(shí)現(xiàn)高效的自動(dòng)化代碼編程。本文將詳細(xì)介紹如何配置和使用 QWQ:32B 模型與 Cline 插件,以提升編程
    的頭像 發(fā)表于 03-21 18:12 ?514次閱讀
    使用 QWQ:32B 模型搭配 <b class='flag-5'>VSCode</b> 的 Cline <b class='flag-5'>插件</b>實(shí)現(xiàn)自動(dòng)化代碼編程!

    在 MAC mini4 上使用 VSCode 和 Cline 插件對接 Deepseek-R1:32b 的完整指南

    可以在 MAC mini4 上高效地編寫和調(diào)試代碼。本教程將詳細(xì)介紹如何在 MAC mini4 上配置 VSCode 和 Cline 插件,并成功對接 Deepseek-R1:32b,幫助您提升開發(fā)效率
    的頭像 發(fā)表于 03-11 17:14 ?521次閱讀
    在 MAC mini4 上使用 <b class='flag-5'>VSCode</b> 和 Cline <b class='flag-5'>插件</b>對接 Deepseek-R1:32b 的完整指南

    KiCad 9.0.0 正式發(fā)布

    /kicad/windows/stable/kicad-9.0.0-x86_64.exe 我們衷心感謝過去一年為 KiCad 作出貢獻(xiàn)的每一位成員。無論您的貢獻(xiàn)是編寫代碼、提交錯(cuò)誤報(bào)告
    的頭像 發(fā)表于 02-21 11:12 ?1422次閱讀
    <b class='flag-5'>KiCad</b> 9.0.0 正式發(fā)布

    KiCad 9 引入新的API機(jī)制

    “ ?在FOSDEM 2025的演講中,核心開發(fā)者Jon Evans揭秘了KiCad 9的全新API系統(tǒng),徹底重構(gòu)插件生態(tài),為開發(fā)者與用戶帶來更穩(wěn)定、高效的體驗(yàn)。 ? ” 舊系統(tǒng)痛點(diǎn):Python
    的頭像 發(fā)表于 02-10 11:13 ?918次閱讀
    <b class='flag-5'>KiCad</b> 9 引入新的API機(jī)制

    KiCon演講回顧(二):華秋 KiCad 發(fā)行版

    的問題);某些新功能因?yàn)?KiCad 本身的限制也無法短期內(nèi)實(shí)現(xiàn)(比如原理圖中支持插件、元器件的概念等);當(dāng)然也希望通過發(fā)行版,預(yù)裝一些插件,方便用戶打通供應(yīng)鏈、設(shè)計(jì)和制造(比如DFM插件
    的頭像 發(fā)表于 11-21 14:00 ?3970次閱讀

    KiCad插件大全

    感謝Hayden同學(xué)的整理! 插件使用方式 1. 解壓縮插件包到KICAD插件目錄。例如,在Windows上可能是:C:Program
    的頭像 發(fā)表于 11-12 12:24 ?2185次閱讀

    VSCode批量遷移插件

    代碼的路 打開之前電腦,找到原電腦VS Code的插件安裝目錄: 如: C:\\\\Users\\\\用戶名\\\\.vscode\\\\extensions 將extensions文件夾拷貝到
    的頭像 發(fā)表于 11-06 16:04 ?685次閱讀
    <b class='flag-5'>VSCode</b>批量遷移<b class='flag-5'>插件</b>

    VSCode插件的安裝和使用

    今天介紹一款我工作上經(jīng)常用到的一款VSCode插件-VsCode Action Buttons,這個(gè)插件可以釋放手敲命令行清除、編譯、運(yùn)行、部署到目標(biāo)機(jī)等操作,具體功能可由開發(fā)者自由
    的頭像 發(fā)表于 11-04 15:36 ?790次閱讀
    <b class='flag-5'>VSCode</b><b class='flag-5'>插件</b>的安裝和使用

    KiCad 中使用華秋 DFM 插件

    “在 KiCad 中使用華秋DFM插件,高效完成工藝規(guī)則檢查,且可以根據(jù)檢測結(jié)果直接在 PCB 中進(jìn)行修改。” 華秋 DFM 插件介紹 DFM 插件可以幫助您在
    發(fā)表于 08-18 22:15

    env工具生成rt-thread的工程文件,vscode編譯報(bào)錯(cuò)的原因?

    使用vscode的eide插件可以編譯裸機(jī)的國民技術(shù)芯片,我env工具生成rt-thread的工程文件,keil編譯無問題,vscode編譯報(bào)錯(cuò)
    發(fā)表于 07-11 08:31

    VSCODE安裝ESP-ADF插件失敗怎么解決?

    VSCODE安裝ADF插件時(shí),下載完后提示錯(cuò)誤ESP-ADF clone has exit with 1,我試了很多次還是不成功,看硬盤文件夾里面已經(jīng)下載了ADF這個(gè)文件夾里面有下載的文件。錯(cuò)誤提示
    發(fā)表于 06-28 07:59

    每次vscode打開工程時(shí)都需要重新配置esp-idf插件的配置,設(shè)置esp-idf與工具鏈的路徑,為什么?

    我每次vscode打開工程時(shí)都需要重新配置esp-idf插件的配置,設(shè)置esp-idf與工具鏈的路徑。這是為什么?這是正常的嗎?而且我如果沒打開某個(gè)文件夾就進(jìn)行配置還會(huì)出現(xiàn)報(bào)錯(cuò)。如下圖所示。
    發(fā)表于 06-21 07:28

    請問vscode和eclipse哪個(gè)好使?

    如題,最近開發(fā)esp32,在windows環(huán)境。 說實(shí)話,idf的開發(fā)環(huán)境比以前搭建起來簡單多了,無論是vscode還是eclipse里都有一鍵安裝的插件,從前的環(huán)境搭建失敗勸退多次噩夢不再重演
    發(fā)表于 06-21 06:43