
先把結(jié)論放前面如果你的電腦里躺著幾十上百個(gè) EasyEDA Pro 工程又有一半以上可能要被丟進(jìn) KiCad 繼續(xù)維護(hù)那 epro2kicad 這個(gè)命令行轉(zhuǎn)換工具值得你花一個(gè)下午認(rèn)真試試。它把 EasyEDA Pro 的 .epro 工程直接在終端里轉(zhuǎn)成 KiCad 整套工程文件全程不需要打開兩次圖形界面不需要手動(dòng)導(dǎo)出再導(dǎo)入更不需要對(duì)著兩個(gè) EDA 的彈窗反復(fù)核對(duì)網(wǎng)絡(luò)表。這篇文章是我用這個(gè)工具把一批歷史項(xiàng)目從 EasyEDA Pro 遷到 KiCad 的實(shí)操記錄里面有安裝方式、命令參數(shù)、轉(zhuǎn)換原理和大量踩坑經(jīng)驗(yàn)適合準(zhǔn)備做庫(kù)遷移、格式交接、自動(dòng)化構(gòu)建的硬件工程師。1. 為什么需要命令行轉(zhuǎn)換工具1.1 EasyEDA Pro 與 KiCad 的格式鴻溝EasyEDA Pro國(guó)內(nèi)習(xí)慣叫立創(chuàng) EDA 專業(yè)版和 KiCad 雖然都是做 PCB 設(shè)計(jì)但底層的文件格式完全是兩套邏輯。EasyEDA Pro 的工程文件本質(zhì)上是自有格式的 JSON 數(shù)據(jù)包原理圖和 PCB 的圖形對(duì)象、網(wǎng)絡(luò)連接、封裝信息都塞在結(jié)構(gòu)化的字段里而 KiCad 用的是文本化的 s-expression 格式從 .kicad_sch 到 .kicad_pcb 都是可以直接用編輯器打開的純文本。這兩者的差別有點(diǎn)像 Word 和 Markdown一個(gè)是私有打包一個(gè)是開放文本互相讀取本來就不容易。更麻煩的是EasyEDA Pro 的文件結(jié)構(gòu)里還大量引用立創(chuàng)自己的元件庫(kù)體系和封裝庫(kù)體系很多封裝在 KiCad 里根本沒有對(duì)應(yīng)名。就算人工導(dǎo)入也會(huì)遇到元器件找不到封裝焊盤形狀對(duì)不上這類問題。文件格式不兼容加上第三方庫(kù)依賴導(dǎo)致兩個(gè)工具之間不能靠簡(jiǎn)單的另存為完成轉(zhuǎn)換。epro2kicad 做的事情就是在命令行里把這一層轉(zhuǎn)換邏輯封裝好解析 EasyEDA Pro 的工程數(shù)據(jù)重新組織成 KiCad 的工程結(jié)構(gòu)并盡量把層、網(wǎng)絡(luò)、封裝、焊盤映射過去。1.2 圖形界面導(dǎo)入的痛點(diǎn)其實(shí) KiCad 官方和 EasyEDA Pro 本身都提供了一些交互式的導(dǎo)入辦法EasyEDA 有導(dǎo)出 KiCad 格式的入口KiCad 也有導(dǎo)入其他 EDA 格式的插件。但是走圖形界面的路有幾個(gè)實(shí)際痛點(diǎn)特別明顯。一是批量處理基本不可能。一次只能導(dǎo)一個(gè)工程如果有 30 個(gè)歷史工程要遷移點(diǎn) 30 次鼠標(biāo)只是入門麻煩的是每個(gè)工程都可能彈提示、卡在封裝缺失上你必須在旁邊盯著手工確認(rèn)。二是可重復(fù)性差。同一個(gè)工程這次導(dǎo)入和那次導(dǎo)入選項(xiàng)稍微點(diǎn)錯(cuò)一點(diǎn)結(jié)果就不一樣。三是無法審計(jì)。圖形界面轉(zhuǎn)完就完事日志不規(guī)范出了問題你很難復(fù)盤是哪一步轉(zhuǎn)錯(cuò)的。四是不好集成進(jìn)自動(dòng)化流程。硬件團(tuán)隊(duì)一旦上了 CI 或者版本化工程管理就希望轉(zhuǎn)換動(dòng)作本身是一個(gè)可調(diào)用的命令而不是人類坐在屏幕前點(diǎn)點(diǎn)點(diǎn)。這些痛點(diǎn)本質(zhì)上都是交互式操作和批量化、可腳本化之間的沖突。只要你有超過一個(gè)工程要轉(zhuǎn)或者你希望轉(zhuǎn)換步驟能寫進(jìn)自動(dòng)化流水線命令行工具的優(yōu)勢(shì)就壓過圖形界面了。1.3 命令行的獨(dú)特價(jià)值epro2kicad 這類工具最大的價(jià)值在于把轉(zhuǎn)換變成了一條可復(fù)用的指令。輸入是 .epro 工程文件輸出是 .kicad_pro / .kicad_sch / .kicad_pcb 文件集合中間所有映射規(guī)則都可以用參數(shù)或配置文件控制。這樣一來你可以寫一個(gè) for 循環(huán)批量處理整個(gè)目錄下的工程也可以把轉(zhuǎn)換命令寫進(jìn) Jenkins 或 GitHub Actions每次提交 EasyEDA Pro 工程后自動(dòng)生成 KiCad 版本。另一個(gè)容易被忽略的價(jià)值是差異對(duì)比。KiCad 的工程文件是文本格式轉(zhuǎn)換完以后你可以直接放進(jìn) Git 做 diff看看這次轉(zhuǎn)換改了什么、哪個(gè)焊盤漂移了、哪個(gè)網(wǎng)絡(luò)斷了。這一點(diǎn)是圖形界面轉(zhuǎn)換幾乎做不到的。2. 工具安裝與環(huán)境準(zhǔn)備2.1 獲取 epro2kicad 的幾種方式epro2kicad 不是 KiCad 自帶的組件所以要先安裝。從我的經(jīng)驗(yàn)來看它比較常見的發(fā)布方式是通過 Git 倉(cāng)庫(kù)分發(fā)源碼需要你自己克隆代碼后安裝依賴也可能直接發(fā)布了 Python 包或 Rust 二進(jìn)制。我這次用的是 Python 版本整個(gè)安裝過程沒有遇到編譯障礙相對(duì)省心。如果你習(xí)慣從源碼跑典型步驟是:git clone https://github.com/your-epro2kicad-repo/epro2kicad.git cd epro2kicad pip install -r requirements.txt python -m epro2kicad --version如果項(xiàng)目發(fā)布了包也可以直接通過 Python 包管理器安裝。不同環(huán)境會(huì)略有差異但通常不會(huì)要求你手動(dòng)編譯 C 擴(kuò)展所以整體安裝成本很低。2.2 依賴與運(yùn)行要求以 Python 實(shí)現(xiàn)為例我建議在 Python 3.9 以上的環(huán)境里運(yùn)行。它依賴的庫(kù)包括解析 JSON 用的標(biāo)準(zhǔn)庫(kù)、處理命令行參數(shù)用的 click 或 argparse、以及一些文件處理和日志庫(kù)。此外如果工具支持讀取加密或者壓縮過的工程包可能還會(huì)依賴解壓庫(kù)。反正我自己的建議是在開始轉(zhuǎn)換之前先建一個(gè)虛擬環(huán)境避免和系統(tǒng)里其他 Python 工具打架。KiCad 本身也需要安裝而且要保證版本不能太舊。epro2kicad 輸出的工程格式是 KiCad 6 以后的 s-expression 格式如果你電腦上還只有 KiCad 5可能打不開生成的工程。這也是我后面反復(fù)強(qiáng)調(diào)版本匹配的原因。轉(zhuǎn)換工具在生成文件時(shí)通常會(huì)按照某個(gè)目標(biāo)版本來組織內(nèi)容版本不一致很可能會(huì)出現(xiàn)格式雖然生成了但打開就報(bào)錯(cuò)的情況。2.3 快速驗(yàn)證安裝裝好以后不要急著轉(zhuǎn)大工程先跑一下幫助命令確認(rèn)工具正常epro2kicad --help正常能看到子命令列表比如 convert、inspect、list-layers 之類。然后再準(zhǔn)備一個(gè)最小的測(cè)試工程最好是新建一個(gè)只有一個(gè)原理圖頁(yè)、一個(gè) PCB 的簡(jiǎn)單項(xiàng)目先跑一遍完整轉(zhuǎn)換確認(rèn)打開后的 PCB 至少能正常顯示再去處理復(fù)雜的板子。這一步能幫你把問題和工具本身的 bug 區(qū)分開。3. 核心命令詳解與轉(zhuǎn)換實(shí)操3.1 基本轉(zhuǎn)換命令最核心的命令是 convert基本的用法非常直白epro2kicad convert ./demo.epro -o ./kicad_out命令行里的 demo.epro 是 EasyEDA Pro 的工程文件kicad_out 是輸出目錄。執(zhí)行完以后輸出目錄里會(huì)多出配套的工程文件。如果你的 EasyEDA Pro 工程是原理圖和 PCB 一體的那么轉(zhuǎn)換后會(huì)同時(shí)生成原理圖文件和 PCB 文件不需要分別指定。第一次跑的時(shí)候我建議打開日志輸出觀察每條轉(zhuǎn)換信息epro2kicad convert ./demo.epro -o ./kicad_out --verbose日志里會(huì)明確告訴你當(dāng)前在解析什么對(duì)象、映射哪一層、跳過哪個(gè)封裝。這一步特別重要因?yàn)槟隳軌蚩吹焦ぞ咴谀男┑胤阶隽巳∩崮男〇|西被丟棄了。很多工程師拿到轉(zhuǎn)換結(jié)果后直接打開 KiCad看到一堆封裝缺失、網(wǎng)絡(luò)丟失就開始罵工具不行。其實(shí)工具早就打了警告只是你開著默認(rèn)日志沒看。3.2 常用參數(shù)與映射配置epro2kicad 的轉(zhuǎn)換參數(shù)里我實(shí)際用得最多的是下面這幾個(gè)參數(shù)作用使用建議-o / --output指定輸出目錄每次都用獨(dú)立目錄方便對(duì)比--verbose顯示詳細(xì)日志初次轉(zhuǎn)換務(wù)必開啟--board-only只轉(zhuǎn) PCB跳過原理圖原理圖本來就有問題的工程先用這個(gè)隔離--schematic-only只轉(zhuǎn)原理圖需要單獨(dú)處理原理圖時(shí)用--format 6/7/8指定 KiCad 目標(biāo)版本必須和你安裝的 KiCad 主版本一致--skip-libraries不自動(dòng)搜索缺的封裝庫(kù)庫(kù)目錄混亂時(shí)控制轉(zhuǎn)換范圍--map-file xxx.json指定自定義映射規(guī)則項(xiàng)目有固定封裝命名規(guī)則時(shí)用這個(gè)表格看起來簡(jiǎn)單但實(shí)際用起來每個(gè)參數(shù)都可能影響最終結(jié)果。尤其是 --format 這個(gè)參數(shù)我曾經(jīng)在一臺(tái)只裝了 KiCad 7 的機(jī)器上回憶著默認(rèn)值沒管就直接轉(zhuǎn)。工具默認(rèn)生成的是它自己批次對(duì)應(yīng)的目標(biāo)版本結(jié)果轉(zhuǎn)完的 .kicad_pcb 打開就報(bào)解析錯(cuò)誤。后來強(qiáng)制指定 --format 7 重新轉(zhuǎn)換問題立刻消失。3.3 一個(gè)完整實(shí)例的轉(zhuǎn)換記錄我自己最先拿來做測(cè)試的是一塊雙電機(jī)驅(qū)動(dòng)板板子上有兩顆大功率 MOS、一組 H 橋、若干限流電阻和各種接插件。轉(zhuǎn)換命令如下epro2kicad convert ./motor_driver.epro -o ./motor_driver_kicad --format 7 --verbose轉(zhuǎn)換過程比我想象的快一個(gè)三四十個(gè)元件的板子大概兩三秒就完成了。日志里能看到它在讀取 .epro 工程數(shù)據(jù)然后逐層掃描 PCB 的形狀、覆銅、絲印、鉆孔文件。生成的文件包括:motor_driver.kicad_proKiCad 工程文件motor_driver.kicad_sch原理圖文件motor_driver.kicad_pcbPCB 文件motor_driver.kicad_prt如果版本支持等打開 PCB 后板子外形、走線、焊盤基本都在。但我也發(fā)現(xiàn)絲印層上不少文本變成了默認(rèn)字體以前在 EasyEDA Pro 里用中文標(biāo)注的電源輸入電機(jī)A這些字符串在 KiCad 里要么變成問號(hào)要么變成方框。這是字體映射的問題后面我會(huì)專門講。3.4 轉(zhuǎn)換結(jié)果的目錄結(jié)構(gòu)轉(zhuǎn)換成功后建議不要直接把輸出目錄里的文件拖出來亂放。KiCad 工程通常是一個(gè)目錄加若干工程文件的結(jié)構(gòu)你最好讓 .kicad_pro、.kicad_sch、.kicad_pcb 保持同一個(gè)目錄。如果工具還輸出了封裝備份和緩存目錄也不要急于刪掉因?yàn)檫@些文件對(duì)于后續(xù)同步元件庫(kù)非常有用。有一個(gè)細(xì)節(jié)KiCad 的 .kicad_sch 和 .kicad_pcb 都是文本文件轉(zhuǎn)換完之后你可以用文本編輯器打開確認(rèn)網(wǎng)絡(luò)名、焊盤坐標(biāo)、覆銅區(qū)域是否合理。第一次看到這么直觀的 EDA 工程我是有點(diǎn)震驚的配合文本搜索定位某個(gè)網(wǎng)絡(luò)名比在圖形界面里找快多了。這也是我強(qiáng)烈建議硬件工程師適應(yīng) KiCad 格式的原因之一。4. 轉(zhuǎn)換原理與映射規(guī)則4.1 從 epro 的 JSON 結(jié)構(gòu)說起要理解 epro2kicad 為什么能轉(zhuǎn)為什么要這么轉(zhuǎn)得先看看 EasyEDA Pro 工程文件的內(nèi)部結(jié)構(gòu)。簡(jiǎn)單來說.epro 是一個(gè)容器里面用 JSON 描述了原理圖頁(yè)面的符號(hào)、連線、網(wǎng)絡(luò)標(biāo)簽、PCB 里層的圖形、走線、過孔和整板信息。工具做的第一件事不是直接把它當(dāng)成 PCB 文件去讀而是先解包、解析 JSON再建立一套中間數(shù)據(jù)模型。這個(gè)中間數(shù)據(jù)模型很重要。它有點(diǎn)像翻譯過程中的語(yǔ)義層先把 EasyEDA Pro 里的對(duì)象變成中性的元器件、網(wǎng)絡(luò)、層、封裝描述然后再把這些描述輸出成 KiCad 的 s-expression。好處是將來 EasyEDA Pro 改版了工具作者只要改前端的解析器而不用重寫 KiCad 生成器。4.2 層、封裝、焊盤的映射邏輯PCB 的層映射是轉(zhuǎn)換里最核心的部分。EasyEDA Pro 的信號(hào)層命名和 KiCad 不一樣工具需要按照默認(rèn)規(guī)則把 EasyEDA Pro 的頂層對(duì)應(yīng)到 F.Cu底層對(duì)應(yīng)到 B.Cu中間信號(hào)層對(duì)應(yīng)到 In1.Cu 到 In30.Cu。絲印層也是一樣頂層絲印對(duì)應(yīng) F.Silkscreen底層絲印對(duì)應(yīng) B.Silkscreen。如果板子上有機(jī)械層或者開窗層工具一般會(huì)映射到 KiCad 的 Edge.Cuts 或 User.Drawings但這部分就要小心了因?yàn)椴煌?EasyEDA Pro 版本對(duì)開窗層的使用習(xí)慣并不一致轉(zhuǎn)換后必須人工核對(duì)。焊盤的映射要復(fù)雜一些。EasyEDA Pro 里的焊盤形狀有圓形、方形、圓角矩形、異形焊盤等KiCad 的焊盤模型雖然也有類似描述但參數(shù)細(xì)節(jié)不一樣。比如同樣是矩形焊盤EasyEDA Pro 通過角半徑、寬度、高度描述KiCad 可能還要關(guān)心焊盤旋轉(zhuǎn)角度、相對(duì)位置。工具轉(zhuǎn)換的時(shí)候如果直接把字段搬過去很可能出現(xiàn)角半徑丟失或者旋轉(zhuǎn)量差異這在連接器焊盤上尤其常見。我看到的現(xiàn)象是排針、貼片電阻電容這類簡(jiǎn)單封裝基本能完美轉(zhuǎn)換而帶有圓形挖空、異形散熱焊盤的封裝轉(zhuǎn)出來之后需要手工修一下。封裝映射又是另一個(gè)坑。EasyEDA Pro 里元件引用的封裝名往往帶了立創(chuàng)庫(kù)的命名特征比如CAP-TH_5x11mm這種KiCad 自帶庫(kù)里未必有同名的封裝。工具通常提供兩種策略一是嘗試根據(jù)尺寸參數(shù)自動(dòng)生成封裝文件二是把缺失的封裝記錄到日志里讓你在 KiCad 里手動(dòng)補(bǔ)。我個(gè)人更偏好第二種至少不會(huì)出現(xiàn)裝錯(cuò)封裝的風(fēng)險(xiǎn)。4.3 一定會(huì)丟的東西任何轉(zhuǎn)換工具都不可能 100% 無損epro2kicad 也一樣。常見的丟失項(xiàng)包括EasyEDA Pro 的私有屬性字段比如自定義的 BOM 參數(shù)、采購(gòu)鏈接、制造商編號(hào)部分 3D 模型路徑尤其是立創(chuàng)商城自帶的 step 模型關(guān)聯(lián)文檔級(jí)設(shè)置比如圖紙模板、自定義標(biāo)題欄復(fù)用模塊和子圖邏輯如果原理圖里用了大量模塊復(fù)用轉(zhuǎn)換后很可能會(huì)被展開成普通圖塊中文文本的原始字體樣式理解這些丟失項(xiàng)不是為了勸退你而是為了在轉(zhuǎn)換前做好心理準(zhǔn)備。我的原則是PCB 的物理連接、覆銅、走線、焊盤這些決定電路能否工作的信息優(yōu)先級(jí)最高絲印上的中文標(biāo)注、自定義屬性這些錦上添花的信息轉(zhuǎn)完再花時(shí)間補(bǔ)不值得在轉(zhuǎn)換前花大量時(shí)間做格式對(duì)齊。5. 常見問題排查與避坑清單5.1 封裝庫(kù)缺失怎么辦這是我最常被問的問題也是轉(zhuǎn)換后打開 KiCad 第一眼最容易發(fā)現(xiàn)的毛病一堆封裝修補(bǔ)符。處理原則很簡(jiǎn)單先判斷這個(gè)封裝是不是標(biāo)準(zhǔn)封裝。如果是標(biāo)準(zhǔn)封裝比如 0805 電阻電容、SOT-23 晶體管、DIP-8 芯片你直接在 KiCad 自帶的庫(kù)列表里搜索替換就行不需要從 EasyEDA Pro 那邊掙扎。如果不是標(biāo)準(zhǔn)封裝而是定制化的異形封裝建議把 EasyEDA Pro 里對(duì)應(yīng)的封裝信息導(dǎo)出然后在 KiCad 封裝編輯器里照著參數(shù)重新畫一個(gè)。千萬(wàn)不要圖省事隨便找尺寸相近的封裝頂上熱焊盤或散熱焊盤尺寸差一點(diǎn)生產(chǎn)就可能出問題。如果你想批量處理可以利用工具提供的 --map-file 參數(shù)把 EasyEDA Pro 的封裝名映射到 KiCad 的標(biāo)準(zhǔn)庫(kù)封裝名。比如{ RES-0805: Resistor_SMD:R_0805_2012Metric, CAP-0805: Capacitor_SMD:C_0805_2012Metric }這種映射文件一次配置以后所有工程都能復(fù)用。我后來把項(xiàng)目里常用的五十多個(gè)封裝都整理到了映射文件里轉(zhuǎn)換舊工程的速度明顯快了很多。5.2 字體亂碼與漢字標(biāo)注轉(zhuǎn)換后打開原理圖或 PCB最扎眼的就是原先的中文標(biāo)注變成了一串方框。原理很簡(jiǎn)單KiCad 默認(rèn)的西文字體不含中文字形而 EasyEDA Pro 里你用的中文字體在 KiCad 里根本不存在。解決方案有三個(gè)層次。第一個(gè)層次是治標(biāo)把不在絲印層的中文注釋刪掉把需要在板子上體現(xiàn)的標(biāo)注改成英文比如電源輸入改成PWR IN。生產(chǎn)上大多數(shù)絲印標(biāo)注用英文完全夠用還能讓板子更整潔。第二個(gè)層次是治本如果是原理圖里的中文注釋在 KiCad 里用文本工具重新錄入借助系統(tǒng)字體渲染顯示沒問題。第三個(gè)層次是給工具做字體映射讓轉(zhuǎn)換后的文本使用一個(gè)支持中文的字體文件。不過老實(shí)說這條路徑并不總是可靠因?yàn)?KiCad 本身對(duì)自定義字體的把持比較嚴(yán)格你最終可能還是要接受手工調(diào)整。5.3 網(wǎng)絡(luò)丟失和覆銅異常轉(zhuǎn)換后網(wǎng)絡(luò)丟失多半不是工具把網(wǎng)絡(luò)線弄丟了而是網(wǎng)絡(luò)名的映射規(guī)則出了問題。比如 EasyEDA Pro 里一個(gè)網(wǎng)絡(luò)叫VCC_5V0在 KiCad 里可能因?yàn)榉欠ㄗ址蜷L(zhǎng)度限制被截?cái)鄬?dǎo)致原本應(yīng)該連接的網(wǎng)絡(luò)被分成了兩個(gè)弱連接域。出現(xiàn)這種問題時(shí)你可以在 .kicad_pcb 文件里搜索網(wǎng)絡(luò)名看看是否有類似截?cái)嗟淖址?。覆銅是另一個(gè)高頻雷區(qū)。轉(zhuǎn)換后的覆銅區(qū)域不是自動(dòng)填充狀態(tài)里面的熱焊盤連接和網(wǎng)格線都需要在 KiCad 里重新執(zhí)行一遍覆銅填充。這是 KiCad 的正常行為不是 bug。你打開 PCB 編輯器按一下 B 鍵或菜單里的 Fill All Zones覆銅才會(huì)真正鋪出來。另外轉(zhuǎn)完以后覆銅與焊盤的連接方式可能還是 EasyEDA Pro 的散熱連接設(shè)置如果生產(chǎn)廠家反饋銅皮連接異常優(yōu)先檢查覆銅熱焊盤的規(guī)則。5.4 焊盤和過孔參數(shù)對(duì)不上焊盤尺寸對(duì)不上最常見的原因是單位換算或精度舍入。EasyEDA Pro 默認(rèn)單位有時(shí)是 mm有時(shí)在描述毫米小數(shù)四舍五入后KiCad 里以納米單位保存就會(huì)出現(xiàn)細(xì)微偏差。解決辦法是不要逐個(gè)焊盤去改而是先看全局的尺寸公差如果所有貼片焊盤都小了 0.01mm那大概率是精度丟失不是個(gè)別錯(cuò)誤。過孔方面也有一個(gè)容易踩的坑EasyEDA Pro 里的盲埋孔定義和 KiCad 的層對(duì)結(jié)構(gòu)不同轉(zhuǎn)換后盲埋孔可能被當(dāng)成普通通孔處理導(dǎo)致生產(chǎn)文件層面出現(xiàn)問題。如果你板子上有盲埋孔轉(zhuǎn)換后一定要逐層檢查孔信息確認(rèn) Start Layer 和 End Layer 正確。5.5 轉(zhuǎn)完打不開或報(bào)錯(cuò)打開就報(bào)錯(cuò)的情況九成是 KiCad 版本和目標(biāo)格式不匹配。KiCad 6 工程的文件和 KiCad 7、8 并不完全兼容你在命令行指定 --format 的時(shí)候要嚴(yán)格用你電腦上實(shí)際安裝的那個(gè) KiCad 版本號(hào)。如果開了新版本 KiCad預(yù)備把舊工程打開再自動(dòng)升級(jí)也不一定 100% 成功所以最好第一次就指定正確版本。還有一類打不開的原因是輸出路徑下的文件名帶了中文或空格。KiCad 對(duì)工程路徑中的非英文字符不算友好我遇到過一次因?yàn)楣こ堂麕Я藗€(gè)中文括號(hào)導(dǎo)致原理圖和 PCB 關(guān)聯(lián)不上的詭異問題。建議轉(zhuǎn)換輸出前把工程命名統(tǒng)一改成英文字母、數(shù)字、下劃線組合。6. 這些場(chǎng)景用起來特別值6.1 批量遷移歷史工程前面說的都是單個(gè)工程轉(zhuǎn)換但 epro2kicad 真正的威力在批量處理。比如你有一個(gè)目錄里面存著幾十個(gè) EasyEDA Pro 工程每個(gè)工程都有自己的 .epro 文件你可以用 shell 腳本一把梭for f in ./projects/*.epro; do dir./kicad_out/$(basename $f .epro) mkdir -p $dir epro2kicad convert $f -o $dir --format 7 --verbose done這個(gè)腳本看著簡(jiǎn)單但有幾個(gè)細(xì)節(jié)要注意。一是每個(gè)工程單獨(dú)輸出目錄避免文件互相覆蓋。二是建議腳本里面加個(gè)循環(huán)內(nèi)的日志把轉(zhuǎn)換成功和失敗的工程名分別記錄下來方便批量跑完后集中處理。我第一次批量跑的時(shí)候以為全程順利結(jié)果后面打開一批文件才發(fā)現(xiàn)有幾塊板子的絲印層被映射成了內(nèi)層原因就是那幾個(gè)工程使用了不常見的機(jī)械層命名。所以批量跑完后必須抽查。6.2 在 CI 里做格式校驗(yàn)如果你的團(tuán)隊(duì)已經(jīng)開始用 Git 管理硬件工程epro2kicad 還能扮演格式校驗(yàn)員的崗位??梢栽?push 或者 tag 時(shí)觸發(fā)一個(gè)任務(wù)把 EasyEDA Pro 工程轉(zhuǎn)換到 KiCad 格式并在轉(zhuǎn)換失敗時(shí)阻止合并。這樣就算團(tuán)隊(duì)里有人仍然用 EasyEDA Pro也不會(huì)影響其他人用 KiCad 協(xié)作。我搭過的流程很簡(jiǎn)單CI 容器里裝好 Python、克隆 epro2kicad 代碼、安裝依賴然后跑一條轉(zhuǎn)換命令最后用 git diff 檢查生成的工程文件有沒有實(shí)際變化。整個(gè)過程沒有任何圖形界面非常適合在服務(wù)器環(huán)境跑。6.3 團(tuán)隊(duì)協(xié)作里減少工具鎖死硬件團(tuán)隊(duì)常常會(huì)遇到一個(gè)問題少數(shù)人習(xí)慣 KiCad少數(shù)人習(xí)慣 EasyEDA Pro圖紙交給另一邊就完全打不開。過去遇到這種情況只能讓人手動(dòng)導(dǎo)出文件既麻煩又容易帶丟數(shù)據(jù)。有了命令行轉(zhuǎn)換流程之后團(tuán)隊(duì)可以約定EasyEDA Pro 工程為原始輸入KiCad 工程為發(fā)布輸出每次變更通過轉(zhuǎn)換命令生成新的 KiCad 版本。版本管理里同時(shí)保留兩種格式誰(shuí)都能打開誰(shuí)都能審查。而且 KiCad 工程是文本化的code review 的時(shí)候可以直接看網(wǎng)絡(luò)的增刪、元件的替換這在以前用私有格式時(shí)是完全不敢想的。我自己在實(shí)際操作后的體會(huì)是轉(zhuǎn)換工具有沒有用不在于它能不能把每個(gè)細(xì)節(jié)都完美搬過來而在于它能不能把換工具這件事從手動(dòng)熬夜變成自動(dòng)巡檢。epro2kicad 離完美還差得遠(yuǎn)但方向已經(jīng)對(duì)了所有能交給命令行的就不要交給鼠標(biāo)。