Japanese only. For those in other languages, please use Google translation etc.(English)
Update date 2019/08/28 20:11 JST  /  Load time 2019/09/20 6:29 JST
トップページに戻る            相互リンク(FusionPCB 1)            相互リンク(FusionPCB 2)

 PCBE で作成したデータで FusionPCB, Elecrow, JLCPCB, ALLPCB に発注する方法 

アクセスカウンター

注意 ・2019/04/17版のスクリプトにJLPCBと記載されていますが、JLCPCBの誤記です。
 スクリプト修正で他の部分にミスが出ると困るので訂正していませんがご了承下さい。
 本スクリプトでは、JLPCBのまま御利用下さい。
 なお、2019/08/05版のスクリプトは、JLCPCBに訂正済みです。
VECTORのソフト詳細説明欄を下記の様に訂正・追記させて頂きます。
 訂正前 PCBEのデータをFusionPCBに注文する形式に変換を容易にするVBスクリプトです。
 訂正後 PCBEのデータをFusionPCB注文する形式に変換する作業を容易にするVBスクリプトです。
 (BATスクリプト2019/08/05版は、FusionPCBの他にElecrow, JLCPCB, ALLPCBも対応します)

「注文履歴を読まずに本文へジャンプ」

注文履歴
●2019/07/17にFusionPCBに注文、7/24に届きました。
 2度目のBATスクリプトによる変換です。
 注文実績が2回しかないので、スクリプトに思わぬミス等が隠れている可能性が有ります。
 BATの内容を精査し、自己責任で御利用下さい。
 BAT版は、FusionPCBElecrowJLCPCB の3社に対応しています。
 注意事項:Elecrow , JLCPCB への発注実績はありません。各社のガーバーヒューアーで確認の上発注して下さい。
・2019/08/05追記  FusionPCB、Elecrow、JLCPCB、ALLPCB の4社に対応します。
 注意事項:発注実績の無いPCBメーカーがあります。各社のガーバーヒューアーで確認の上発注して下さい。

●2019/04/14にFusionPCBに注文、4/21に届きました。
 今回は新たに作成した「BATスクリプト」でFusionPCB形式に変換して注文しました。
 VBSより処理が高速になってます (^_^)
 BATスクリプトで正常に注文出来る事を確認出来ましたので、BAT版を公開します。
 
●2019/03/13
・FusionPCBの品質について。
 価格(5枚で送料込9.9ドル)から見てやむを得ないと思いますが、高品質とは言えないです。
 シルクの剥離等は、出荷検査で一目見れば判るトラブルですので、完成後の検査はしていない様です。
 商品着後全数検査し、酷い問題が有る様ならメーカーに連絡する事をお薦めします。
・FusionPCBでの基板制作
 「1/10インチピッチのスルーホール配線」は、大きな問題にはならないと思われます。
 「細かいパターン」で作成する場合や「表面実装」では、充分ご注意下さい。

 
 レジストとシルクの剥離した基板が見かけられます。
 剥離部分がハンダメッキされているので、剥離はメッキの前工程と思われます。

 
 レジストにキズ有りの基板が見かけられます。
 キズ部分がハンダメッキされているので、損傷はメッキの前工程と思われます。
 
 
 トップレイヤーにランドズレ。(全基板)
 もう少しズレが大きいと、スルーホールに掛ってしまいます。

 ・・・・

●2013/04/20
 初めてのブリント基板注文。
 当時は10cm角$4.9なんての無くて高かった。($34)(;_;)

 
■注意事項。
 本ページ記載内容及びスクリプトは十分注意して記載・作成しておりますが、
・御利用の方の環境で正常に動作する事は保証出来ません。
・御利用の方の環境でトラブルが発生しても補償出来ません。
・上記を了解の上ご利用下さい。
・このページは、ブログからの転記です。 (ブログ版)
 今後は、このページをを主に更新します。
 ブログではなく、このページを御利用下さい。
・以下の説明は、Windows8.1Pro64bitでの操作です。
 他のOSでは、状況に合わせて御利用下さい。
・FusionPCBの長穴注文方法は、ブログの記事を参照して下さい。
・FusionPCBでは、レイヤー42-孔(NO-TH)は、使いません。
 NO-TH もレイヤー8-孔 で作成して下さい。
PCBEは、なるべく新しいバージョンを御利用下さい。 最新版のDLはこちらから。
 参考:私の環境では、最新版だとテキストの編集が出来ないと言う不具合がある為、以前のバージョンを利用しています。
    PCBE_0.63.9 何故かテキストの編集が出来ない。
    PCBE_0.63.7 このバージョンだと問題無く利用出来るので、只今使用中。
 注意:極端に古いバージョンを利用するとパターン配置が異なる為、現行と互換性が有りません。
 現行=レイヤー1は、パターン-A 部品面。
 旧版=レイヤー1は、パターン1 半田面。



■本スクリプトの変遷
2013年の方法。FusionPCBの仕様が変わった為、この方法では発注出来ません。
2017年の方法。:CMDスクリプト(発注可能です)。
2018年の方法。:VBスクリプト。実績が有ります。
2019年の方法。:BATスクリプト。現行の方法です。お薦めします。(^_^)


◆◆◆◆◆◆作成開始◆◆◆◆◆◆

●現行バージョンのPCBEで基板のパターンを作成します。(事情により、私は前のバージョンを利用しています)
 PCBEの使い方については、他のサイトをご参照下さい。

●プリントパターンが完成したらDRCチェックです
 PCBEの「ファイル(F)」メニューから「DRCチェック」を行います。
 ---下画像参照---。
DRC Check

 PCBEには、FusionPCB用のチェックファイルが入っていますので[ PcbeFusion.drc ]を指定します。
 指定したら「開く」をクリック。
 ---下画像参照---。
DRC Check2

 ラインの間隔その他がPCB製造に適合するかチェックしてくれます。
 ×が出たらやり直し、配線の間隔調整等がが必要になります。
 ---下画像参照---。
DRC Error

 問題が無ければ次のステップです。
 ---下画像参照---。
DRC OK
 
●前もって、操作ミス時の対応 (VBS版を御利用の方)
 BAT版は、エラー時にVBSを起動させない対策をしています。(次項にお進み下さい)
・VBS版利用時にPCBEでガーバーファイルを作成せずに、スクリプトを実施するとエラーが発生します。
 エラー時にスクリプトが終了出来ず、バックグランドで動作し続ける場合が有ります。
・スクリプトを再実行する折に支障になります。
 VBスクリプトがエラーして終らない場合、以下をコマンドプロンプトから実施し強制終了させて下さい。
 CMDスクリプトを作成したり、ショートカットに登録しておくと便利です。
  C:\Windows\System32\taskkill.exe /F /T /IM "wscript.exe"
・コマンドプロンプトに慣れていない方は、コンピューター再起動でもOKです。
  
 Windows8.1
  
 Windows10

発注に入りますが、先ずは準備から
・先ずは、適当な名前で空のフォルダを作成します。
 注意、フォルダ名は半角英数字のみです。(日本語等は使用しないで下さい)
・作成したフォルダの中に以下の3個をコピーして下さい。 (その他は不要です)
 GERBV.EXE ([gerbv-win-static_20160713.zip])。
 上記ホームページが更新され、Windows版が見つけにくくなりました。下記リンクを御利用下さい。
 このURLから[gerbv-win-static_20160713.zip]をDLして下さい。
 圧縮ファイルを解凍し、GERBV.EXE を取り出して下さい。
 注意:ダウンロードしたら、使用前に御利用のウイルス検出ソフトで確認して下さい。  
 PCBEからプリント基板メーカー書式に変換するスクリプト。
 複数有りますが、「VBS版BAT版のどれか1つ」お好みのスクリプトを御利用下さい。
 (発注実績は少ないけどBATがお薦め)

VBS版、Pcbe2Fusion.VBS 2018年版.
 (VECTORに掲載しているスクリプトです)
 @. VBスクリプト。このページ後部に有ります。 
 A. 同上ZIPファイルはここからDLして下さい。 
 圧縮ファイルを解凍し、Pcbe2Fusion.VBS を取り出して下さい。
 初代のスクリプトです。発注実績は多数ありますが、ZIP化は手動で行って下さい。
 注意事項:作成したVBスクリプトは、エラー処理をしていません。
 何らかのエラーが発生すると、バックグランドで走り続ける場合が有ります。
 その場合は、「操作ミス時の対応」をご覧下さい。

BAT版、PcbeOrder.BAT 2019/04/17版
 @. BATスクリプト。このページ末尾に有ります。 
 A. 同上ZIP圧縮ファイルのダウンロード。 
 VBスクリプト版より使いやすいと思います。 (^_^)
 発注実績が少ないです。自己責任で御利用下さい。
 対応プリント基板メーカー。
 FusionPCB:発注実績2回。
 Elecrow:発注実績はありません。
 JLCPCB:発注実績はありません。
  (SET JLPCB=NO の行を SET JLPCB=YES と修正して御利用下さい)

BAT版、PcbOrder20190805.BAT 2019/08/05版
 JLCPCBの誤記修正、ALLPCB対応その他修正。
 @. BATスクリプト。このページ末尾に有ります。 
 A. 同上ZIP圧縮ファイルのダウンロード。 
 VBスクリプト版より使いやすいと思います。 (^_^)
 発注実績は有りません。自己責任で御利用下さい。
 対応プリント基板メーカー。
 FusionPCB:発注実績はありません。
 Elecrow:発注実績はありません。
 JLCPCB:発注実績はありません。
  (SET JLCPCB=NO の行を SET JLCPCB=YES と修正して御利用下さい)
 ALLPCB:発注実績はありません。
  (SET ALLPCB=NO の行を SET ALLPCB=YES と修正して御利用下さい)

注意:ダウンロードしたら、使用前に御利用のウイルス検出ソフトで確認して下さい。
・貴方の作成したPCBEのプリントパターンデータ。
 Sample-3.pcb 等。

●作業開始前の確認
---下画像参照---。
 BAT版を御利用の方は、Pcbe2Fusion.VBS を PcbeOrder.BAT or PcbeOrder日付.BATと読替えて下さい。
フォルダを作成して3つのファイルを格納
 上画像の様に3つのファイルが新しいフォルダにコピーされている事を確認して下さい。

●前記、フォルダ内の貴方が作成したPCBEデータをクリックしてPCBEを起動します。
 参考:上画像の例では、Sample-3.pcbをクリック又はダブルクリックしてPCBEを起動します。
 (拡張子がPCBEに紐付けられていない場合、PCBEで上記データを開いて下さい)。
 ガーバーファイルを出力します。
・ファイル(F)。
・ガーバー出力。
 と進んで下さい。
 ---下画像参照---。
PCBEでガーバー出力

●ガーバー出力するファイル。
・拡張出力にチェックを付けて下さい。
・小数部(桁)は3桁です。
・ガーバー出力するファイル名は、PCBEデフォルトから変更しないで下さい。
・必用なファイルは以下のとおりです。
 pattern-A.grb
 pattern-B.grb
 silk-A.grb
 silk-B.grb
 resist-A.grb
 resist-B.grb
 board.grb
 hole.grb
・OKなら「出力」ボタンをクリックして下さい。
 ---下の2つの画像参照---。
ガーバー出力するファイル1 ガーバー出力するファイル2

●次に、FusionPCB, Elecrow, JLCPCB, ALLPCB 形式に変換します。
 ガーバーファイルが出来ている事を確認してから、Pcbe2Fusion.VBS 、 PcbeOrder.BAT 又は PcbeOrder日付.BAT を起動(ダブルクリック)して下さい。
 エラーが出なければ、1分程度で処理が完了します。
 のんびりとお待ち下さい。
 ---下画像参照---。
 BAT版を御利用の方は、Pcbe2Fusion.VBS を PcbeOrder.BAT 又は PcbeOrder日付.BATと読替えて下さい。
作成したフォルダのスクリプトを起動します

●処理が無事終了すると。
 基板屋さんに発注出来るファイルが完成します。
 ---下画像参照---。
 BAT版を御利用の方は、Pcbe2Fusion.VBS を PcbeOrder.BAT 又は PcbeOrder日付.BATと読替えて下さい。
FusionPCB発注用ファイル

●ZIP圧縮フォルダに纏めます。
 BAT版は自動的にZIPが作成されます。以下の操作は不要です。
・FusionPCB発注書式になったファイルをすべて選択。
・右クリック。
・送る(N)。
・圧縮(zip 形式)フォルダーをクリックします。
 ---下画像参照---。
ZIPに纏めます

●完成。
 できあがったZIP書庫で基板をに発注して下さい。 (^_^) 。
 ---下画像参照---。
 BAT版を御利用の方は、FusionOrder.zip を PcbOrder.zip と読替えて下さい。
発注用zipが完成しました


 
●以下のスクリプトを Pcbe2Fusion.VBS と言う名称で保存して下さい。    ( ダウンロードはこちら )。
' ============== Pcbe2Fusion.VBS ================ ここから
' オーダーするPCBの名前は好みで「半角英数字」、全角や記号は不可。
FileName = "FusionOrder"

' 環境により待ち時間を調整して下さい ms 単位 ' Win8.1Pro + SSD + Core-i7の環境では WaitTime=100 (ms)にしてもOKでした。 ' 下は、各種環境で使える様に長めにしてあります。処理に1分程お待ち下さい。 WaitTime = 500 ' ===== 以下は、修正しないで下さい ===== ' ------------------------ ' (c) Kuni/JA1UZG 2018 ' フリーソフト ' 転載可(許諾不要) ' 動作保証不可 ' 各自の責任で使用して下さい。 ' ------------------------ Set WshShell = WScript.CreateObject("WScript.Shell") WSHShell.Exec("cmd.exe /c if exist " & FileName & ".TXT DEL " & FileName & ".TXT") WScript.Sleep(WaitTime)
WshShell.Run ("gerbv.exe hole.grb") WScript.Sleep(10 * WaitTime) ' ここは長めに! WSHShell.SendKeys "%f" ' ALT + f Fは、NG WScript.Sleep(WaitTime) WSHShell.SendKeys "e" ' e WScript.Sleep(WaitTime) WSHShell.SendKeys "e" ' e WScript.Sleep(WaitTime) WSHShell.SendKeys FileName & ".TXT" ' FileName WScript.Sleep(WaitTime) WSHShell.SendKeys "%s" ' ALT + s WScript.Sleep(WaitTime) WSHShell.SendKeys "%f" ' ALT + f WScript.Sleep(WaitTime) WSHShell.SendKeys "q" ' q quit WScript.Sleep(WaitTime)

REM 穴ガーバー削除 WSHShell.Exec("cmd.exe /c if exist " & FileName & ".TXT DEL hole.grb") REM Fusion PCB用旧ファイル削除 WScript.Sleep(WaitTime) WSHShell.Exec("cmd.exe /c if exist *.GTL DEL *.GTL") WScript.Sleep(WaitTime) WSHShell.Exec("cmd.exe /c if exist *.GBL DEL *.GBL") WScript.Sleep(WaitTime) WSHShell.Exec("cmd.exe /c if exist *.GTS DEL *.GTS") WScript.Sleep(WaitTime) WSHShell.Exec("cmd.exe /c if exist *.GBS DEL *.GBS") WScript.Sleep(WaitTime) WSHShell.Exec("cmd.exe /c if exist *.GTO DEL *.GTO") WScript.Sleep(WaitTime) WSHShell.Exec("cmd.exe /c if exist *.GBO DEL *.GBO") WScript.Sleep(WaitTime) WSHShell.Exec("cmd.exe /c if exist *.GML DEL *.GML") WScript.Sleep(WaitTime) WSHShell.Exec("cmd.exe /c if exist *.LST DEL *.LST") REM Top layer 部品面 xx.GTL WScript.Sleep(WaitTime) WSHShell.Exec("cmd.exe /c REN pattern-A.grb " & FileName & ".GTL") REM Bottom layer ハンダ面 xx.GBL WScript.Sleep(WaitTime) WSHShell.Exec("cmd.exe /c REN pattern-B.grb " & FileName & ".GBL") REM Solder Stop Mask top 部品面のレジスト層 xx.GTS WScript.Sleep(WaitTime) WSHShell.Exec("cmd.exe /c REN resist-A.grb " & FileName & ".GTS") REM Solder Stop Mask Bottom ハンダ面のレジスト層 xx.GBS WScript.Sleep(WaitTime) WSHShell.Exec("cmd.exe /c REN resist-B.grb " & FileName & ".GBS") REM Silk Top 部品面シルク xx.GTO WScript.Sleep(WaitTime) WSHShell.Exec("cmd.exe /c REN silk-A.grb " & FileName & ".GTO") REM Silk Bottom ハンダ面のシルク xx.GBO WScript.Sleep(WaitTime) WSHShell.Exec("cmd.exe /c REN silk-B.grb " & FileName & ".GBO") REM 外径 xx.GML WScript.Sleep(WaitTime) WSHShell.Exec("cmd.exe /c REN board.grb " & FileName & ".GML") ' ============== Pcbe2Fusion.VBS EOF ================ ここまで


  
●PcbeOrder.BAT 2019/04/17版
・スクリプトの会社名に誤記が有ります。(JLCPCBをJLPCBと誤記しています)
 誤記修正版は発注実績が無い為、誤記のまま掲載を続けさせて頂きますがご容赦下さい。
・以下の青色文字のスクリプトを PcbeOrder.BAT と言う名称で保存して下さい。    ( ダウンロードはこちら )
@ECHO OFF
REM ============== PcbeOrder.BAT ================
REM 対応プリント基板メーカー
REM 1. FusionPCB
REM 2. Elecrow (注意:発注実績はありません)
REM 3. JLPCB   (注意:発注実績はありません)
REM    https://support.jlcpcb.com/article/29-suggested-naming-patterns
REM    JLPCBの場合、SET JLPCB=YES として下さい。
SET JLPCB=NO
REM    JLPCBは拡張子につて寛容? NOのまま(FusionPCB形式)でもOKの様です。
REM    https://support.jlcpcb.com/article/22-how-to-generate-the-gerber-files

REM プリント基板名「半角英数字」---
REM 全角や記号は不可、=の両側の余分なスペース不可
SET FName=PcbOrder

REM ------------------------
REM 2019/04/17
REM Copyright Kuni/JA1UZG
REM フリーソフト
REM 転載可(許諾不要)
REM 動作保証不可
REM 各自の責任で使用して下さい。
REM ------------------------


REM Fusion,Elecrow 用拡張子 ---
REM Top layer 部品面 FName.GTL
SET PA=GTL
REM Bottom layer ハンダ面 FName.GBL
SET PB=GBL
REM Solder Stop Mask top 部品面のレジスト層 FName.GTS
SET RA=GTS
REM Solder Stop Mask Bottom ハンダ面のレジスト層 FName.GBS
SET RB=GBS
REM Silk Top 部品面シルク FName.GTO
SET SA=GTO
REM Silk Bottom ハンダ面のシルク FName.GBO
SET SB=GBO
REM Outline 外形 FName.GML
SET OL=GML
REM ドリル FName.TXT
SET DR=TXT
REM JLPCBの処理
IF %JLPCB%==YES SET OL=GKO
IF %JLPCB%==YES SET DR=XLN

ECHO Fusion PCB旧オーダー用ファイル等を削除します。
FOR %%f IN (*.%PA% *.%PB% *.%RA% *.%RB% *.%SA% *.%SB% *.%OL% gout.LST %FName%.%DR% %FName%.ZIP TEMP.VBS) DO (
IF EXIST %%f DEL %%f
IF EXIST %%f ECHO %%f ファイルの削除に失敗しました。
IF EXIST %%f ECHO 処理を終了します。
IF EXIST %%f goto owari
)

ECHO PCBEの出力したガーバーファイル等をチェックします。
FOR %%f IN (pattern-A.grb pattern-B.grb resist-A.grb resist-B.grb silk-A.grb silk-B.grb board.grb hole.grb gerbv.exe) DO (
IF NOT EXIST %%f echo %%f が見つかりません。
IF NOT EXIST %%f echo 処理を終了します。
IF NOT EXIST %%f goto owari
)

ECHO ガーバーエクセロン変換を開始します。
ECHO 少々お待ち下さい
GERBV.EXE hole.grb -xdrill -o%FName%.%DR%
timeout /T 2 > NUL
IF NOT EXIST %FName%.%DR% ECHO %FName%.%DR% エクセロンファイルの作成に失敗しました。
IF NOT EXIST %FName%.%DR% ECHO 処理を終了します。
IF NOT EXIST %FName%.%DR% goto owari

ECHO 穴ガーバーを削除します。
IF EXIST hole.grb DEL hole.grb
IF EXIST hole.grb hole.grb の削除に失敗しました。
IF EXIST hole.grb エクスプローラー等で削除して下さい。

ECHO Fusion PCB用にファイル名を変更します。

REN pattern-A.grb %FName%.%PA%
REN pattern-B.grb %FName%.%PB%
REN resist-A.grb %FName%.%RA%
REN resist-B.grb %FName%.%RB%
REN silk-A.grb %FName%.%SA%
REN silk-B.grb %FName%.%SB%
REN board.grb %FName%.%OL%

FOR %%f IN (%FName%.%PA% %FName%.%PB% %FName%.%RA% %FName%.%RB% %FName%.%SA% %FName%.%SB% %FName%.%OL%) DO (
IF NOT EXIST %%f ECHO %%f のリネームに失敗しました。
IF NOT EXIST %%f ECHO エクスプローラー等でリネームして下さい。
IF NOT EXIST %%f goto owari
)

ECHO 圧縮用に一時的に TEMP.VBS を作成します。
REM   ^+ ^< ^> ^&
ECHO REM 開始 > TEMP.VBS
ECHO if VbOK=MsgBox ("全てのウインドウを一時的に閉じて、デスクトップ画面を表示し、" ^& vbCrLf ^& "ZIP 圧縮処理を行います。" ^& vbCrLf ^& "ZIP 圧縮処理完了後、ウインドウを戻します。" ^& vbCrLf ^& "処理を開始してよろしいですか?", vbOKCancel ^+ vbInformation ^+ vbSystemModal, "TEMP.VBS") then >> TEMP.VBS
ECHO FileName = "%FName%" >> TEMP.VBS
ECHO FuExt = Array(".%PA%", ".%PB%", ".%RA%", ".%RB%", ".%SA%", ".%SB%", ".%OL%", ".%DR%", "" ) >> TEMP.VBS
ECHO ZipFileName = FileName ^& ".zip" >> TEMP.VBS
ECHO Set WshShell = WScript.CreateObject("WScript.Shell") >> TEMP.VBS
ECHO Set FSObj = CreateObject("Scripting.FileSystemObject") >> TEMP.VBS
ECHO Set FSObj = CreateObject("Scripting.FileSystemObject") >> TEMP.VBS
ECHO Set ZipFile = FSObj.OpentextFile(ZipFileName, 2, true) >> TEMP.VBS
ECHO ZipFile.Write "PK" ^& Chr(5) ^& Chr(6) ^& String(18, 0) >> TEMP.VBS
ECHO ZipFile.Close >> TEMP.VBS
ECHO Set ZipFile = Nothing >> TEMP.VBS
ECHO nn = 0 >> TEMP.VBS
ECHO Set WshApp = CreateObject("Shell.Application") >> TEMP.VBS
ECHO Set ZipFileSh = WshApp.NameSpace(FSObj.GetAbsolutePathName(ZipFileName)) >> TEMP.VBS
ECHO WshApp.MinimizeAll >> TEMP.VBS
ECHO while FuExt(nn) ^<^> "" >> TEMP.VBS
ECHO   WSHShell.Popup nn ^+ 1 ^& "/8 " ^& FileName ^& FuExt(nn) ^& "を圧縮します。", 1, "TEMP.VBS", vbInformation >> TEMP.VBS
ECHO   parentFolderPath = FSObj.GetAbsolutePathName(FSObj.GetParentFolderName(FileName ^& FuExt(nn))) >> TEMP.VBS
ECHO   ZipFileSh.CopyHere WshApp.NameSpace(parentFolderPath).ParseName(FSObj.getFileName(FileName ^& FuExt(nn))) >> TEMP.VBS
ECHO   nn = nn ^+ 1 >> TEMP.VBS
ECHO     Do Until ZipFileSh.Items().Count = nn >> TEMP.VBS
ECHO       WScript.Sleep(500) >> TEMP.VBS
ECHO     Loop >> TEMP.VBS
ECHO   WScript.Sleep(2000) >> TEMP.VBS ^' 御利用のPCが遅く、2000m秒で不足する場合訂正して下さい。
ECHO wend >> TEMP.VBS
ECHO WshApp.UndoMinimizeAll >> TEMP.VBS
ECHO set WshApp = Nothing >> TEMP.VBS
ECHO Set FSObj = Nothing >> TEMP.VBS
ECHO END IF >> TEMP.VBS
ECHO VBスクリプト TEMP.VBS 作成完了
ECHO ----------------------
ECHO デスクトップ画面を表示し、
ECHO VBスクリプトによりZIP圧縮します。
ECHO ZIP処理完了後に画面を戻します。
ECHO 少々お待ち下さい。
ECHO ----------------------
timeout /T 2 > NUL
TEMP.VBS
ECHO 少々お待ち下さい。
TIMEOUT /T 2 > NUL
ECHO TEMP.VBS を削除します。
IF EXIST TEMP.VBS DEL TEMP.VBS
IF EXIST TEMP.VBS ECHO TEMP.VBSの削除に失敗しました。TEMP.VBSをエクスプローラー等で削除して下さい。
IF EXIST %FName%.zip ECHO FusionPCB 形式の %FName%.zip が作成されました。
IF NOT EXIST %FName%.zip ECHO FusionPCB 形式の %FName%.zip 作成に失敗しました。
IF NOT EXIST %FName%.zip goto owari
ECHO 処理を完了しました。
:owari
ECHO ---
ECHO スペースキーを押すと終了します。
PAUSE > NUL
REM ============== PcbeOrder.BAT EOF ================ ここまで



  
●PcbOrder20190805.BAT 2019/08/05版
・本スクリプトは、発注実績が有りません。
 スクリプト内容を確認してから御利用下さい。
 作者は一切の責任を負えません。自己責任で御利用下さい。
・以下の青色文字のスクリプトを PcbeOrder.BAT 又は PcbeOrder20190805.BAT と言う名称で保存して下さい。    ( ダウンロードはこちら )
@ECHO OFF
REM ============== PcbeOrder.BAT 2019/08/05 ================
REM 対応プリント基板メーカー
REM 1. FusionPCB (注意:発注実績はありません)
REM 2. Elecrow   (注意:発注実績はありません)
REM 3. JLCPCB    (注意:発注実績はありません)
REM 4. ALLPCB    (注意:発注実績はありません)
REM ・JLCPCBの場合、SET JLCPCB=YES として下さい。
SET JLCPCB=NO
REM 
REM ・ALLPCBの場合、SET ALLPCB=YES として下さい。
SET ALLPCB=NO
REM 
REM ・蛇足JLCPCBの指定拡張子
REM    https://support.jlcpcb.com/article/29-suggested-naming-patterns
REM  JLCPCBは拡張子につて寛容? FusionPCB形式等、他社の形式でもOKの様です。
REM    https://support.jlcpcb.com/article/22-how-to-generate-the-gerber-files

REM プリント基板名「半角英数字」---
REM 全角や記号は不可、=の両側の余分なスペース不可
SET FName=PcbOrder

REM ------------------------
REM 2019/05/10
REM Copyright Kuni/JA1UZG
REM フリーソフト
REM 転載可(許諾不要)
REM 動作保証不可
REM 各自の責任で使用して下さい。
REM ------------------------


REM Fusion,Elecrow 用拡張子 ---
REM Top layer 部品面 FName.GTL
SET PA=GTL
REM Bottom layer ハンダ面 FName.GBL
SET PB=GBL
REM Solder Stop Mask top 部品面のレジスト層 FName.GTS
SET RA=GTS
REM Solder Stop Mask Bottom ハンダ面のレジスト層 FName.GBS
SET RB=GBS
REM Silk Top 部品面シルク FName.GTO
SET SA=GTO
REM Silk Bottom ハンダ面のシルク FName.GBO
SET SB=GBO
REM Outline 外形 FName.GML
SET OL=GML
REM ドリル FName.TXT
SET DR=TXT
REM JLCPCBの処理
IF %JLCPCB%==YES SET OL=GKO
IF %JLCPCB%==YES SET DR=XLN
IF %ALLPCB%==YES SET OL=GKO
IF %ALLPCB%==YES SET DR=DRL

ECHO Fusion PCB旧オーダー用ファイル等を削除します。
FOR %%f IN (*.%PA% *.%PB% *.%RA% *.%RB% *.%SA% *.%SB% *.%OL% gout.LST %FName%.%DR% %FName%.ZIP TEMP.VBS) DO (
IF EXIST %%f DEL %%f
IF EXIST %%f ECHO %%f ファイルの削除に失敗しました。
IF EXIST %%f ECHO 処理を終了します。
IF EXIST %%f goto owari
)

ECHO PCBEの出力したガーバーファイル等をチェックします。
FOR %%f IN (pattern-A.grb pattern-B.grb resist-A.grb resist-B.grb silk-A.grb silk-B.grb board.grb hole.grb gerbv.exe) DO (
IF NOT EXIST %%f echo %%f が見つかりません。
IF NOT EXIST %%f echo 処理を終了します。
IF NOT EXIST %%f goto owari
)

ECHO ガーバーエクセロン変換を開始します。
ECHO 少々お待ち下さい
GERBV.EXE hole.grb -xdrill -o%FName%.%DR%
timeout /T 2 > NUL
IF NOT EXIST %FName%.%DR% ECHO %FName%.%DR% エクセロンファイルの作成に失敗しました。
IF NOT EXIST %FName%.%DR% ECHO 処理を終了します。
IF NOT EXIST %FName%.%DR% goto owari

ECHO 穴ガーバーを削除します。
IF EXIST hole.grb DEL hole.grb
IF EXIST hole.grb hole.grb の削除に失敗しました。
IF EXIST hole.grb エクスプローラー等で削除して下さい。

ECHO Fusion PCB用にファイル名を変更します。

REN pattern-A.grb %FName%.%PA%
REN pattern-B.grb %FName%.%PB%
REN resist-A.grb %FName%.%RA%
REN resist-B.grb %FName%.%RB%
REN silk-A.grb %FName%.%SA%
REN silk-B.grb %FName%.%SB%
REN board.grb %FName%.%OL%

FOR %%f IN (%FName%.%PA% %FName%.%PB% %FName%.%RA% %FName%.%RB% %FName%.%SA% %FName%.%SB% %FName%.%OL%) DO (
IF NOT EXIST %%f ECHO %%f のリネームに失敗しました。
IF NOT EXIST %%f ECHO エクスプローラー等でリネームして下さい。
IF NOT EXIST %%f goto owari
)

ECHO 圧縮用に一時的に TEMP.VBS を作成します。
REM   ^+ ^< ^> ^&
ECHO REM 開始 > TEMP.VBS
ECHO if VbOK=MsgBox ("全てのウインドウを一時的に閉じて、デスクトップ画面を表示し、" ^& vbCrLf ^& "ZIP 圧縮処理を行います。" ^& vbCrLf ^& _ >> TEMP.VBS
ECHO    "ZIP 圧縮処理完了後、ウインドウを戻します。" ^& vbCrLf ^& "圧縮処理完了迄、パソコンの操作をしないでお待ち下さい。" ^& vbCrLf ^& _  >> TEMP.VBS
ECHO    "処理を開始してよろしいですか?", vbOKCancel ^+ vbInformation ^+ vbSystemModal, "TEMP.VBS") then >> TEMP.VBS
ECHO FileName = "%FName%" >> TEMP.VBS
ECHO FuExt = Array(".%PA%", ".%PB%", ".%RA%", ".%RB%", ".%SA%", ".%SB%", ".%OL%", ".%DR%", "" ) >> TEMP.VBS
ECHO ZipFileName = FileName ^& ".zip" >> TEMP.VBS
ECHO Set WshShell = WScript.CreateObject("WScript.Shell") >> TEMP.VBS
ECHO Set FSObj = CreateObject("Scripting.FileSystemObject") >> TEMP.VBS
ECHO Set FSObj = CreateObject("Scripting.FileSystemObject") >> TEMP.VBS
ECHO Set ZipFile = FSObj.OpentextFile(ZipFileName, 2, true) >> TEMP.VBS
ECHO ZipFile.Write "PK" ^& Chr(5) ^& Chr(6) ^& String(18, 0) >> TEMP.VBS
ECHO ZipFile.Close >> TEMP.VBS
ECHO Set ZipFile = Nothing >> TEMP.VBS
ECHO nn = 0 >> TEMP.VBS
ECHO Set WshApp = CreateObject("Shell.Application") >> TEMP.VBS
ECHO Set ZipFileSh = WshApp.NameSpace(FSObj.GetAbsolutePathName(ZipFileName)) >> TEMP.VBS
ECHO WshApp.MinimizeAll >> TEMP.VBS
ECHO while FuExt(nn) ^<^> "" >> TEMP.VBS
ECHO   WSHShell.Popup nn ^+ 1 ^& "/8 " ^& FileName ^& FuExt(nn) ^& "を圧縮します。", 1, "TEMP.VBS", vbInformation >> TEMP.VBS
ECHO   parentFolderPath = FSObj.GetAbsolutePathName(FSObj.GetParentFolderName(FileName ^& FuExt(nn))) >> TEMP.VBS
ECHO   ZipFileSh.CopyHere WshApp.NameSpace(parentFolderPath).ParseName(FSObj.getFileName(FileName ^& FuExt(nn))) >> TEMP.VBS
ECHO   nn = nn ^+ 1 >> TEMP.VBS
ECHO     Do Until ZipFileSh.Items().Count = nn >> TEMP.VBS
ECHO       WScript.Sleep(500) >> TEMP.VBS
ECHO     Loop >> TEMP.VBS
ECHO   WScript.Sleep(2000) >> TEMP.VBS ^' 御利用のPCが遅く、2000m秒で不足する場合訂正して下さい。
ECHO wend >> TEMP.VBS
ECHO WshApp.UndoMinimizeAll >> TEMP.VBS
ECHO set WshApp = Nothing >> TEMP.VBS
ECHO Set FSObj = Nothing >> TEMP.VBS
ECHO END IF >> TEMP.VBS
ECHO VBスクリプト TEMP.VBS 作成完了
ECHO ----------------------
ECHO デスクトップ画面を表示し、
ECHO VBスクリプトによりZIP圧縮します。
ECHO ZIP処理完了後に画面を戻します。
ECHO 少々お待ち下さい。
ECHO ----------------------
timeout /T 2 > NUL
TEMP.VBS
ECHO 少々お待ち下さい。
TIMEOUT /T 2 > NUL
ECHO TEMP.VBS を削除します。
IF EXIST TEMP.VBS DEL TEMP.VBS
IF EXIST TEMP.VBS ECHO TEMP.VBSの削除に失敗しました。TEMP.VBSをエクスプローラー等で削除して下さい。
IF EXIST %FName%.zip ECHO FusionPCB 形式の %FName%.zip が作成されました。
IF NOT EXIST %FName%.zip ECHO FusionPCB 形式の %FName%.zip 作成に失敗しました。
IF NOT EXIST %FName%.zip goto owari
ECHO 処理を完了しました。
:owari
ECHO ---
ECHO スペースキーを押すと終了します。
PAUSE > NUL
REM ============== PcbeOrder20190805.BAT EOF ================ ここまで


●最後に
・プリントパターンの制作にPCBEを使用させて頂きました。
 PCBEの作者様にお礼申上げます。
・ガーバー形式からExcellon形式への変換は、GERBVを利用させて頂きました。
 GERBVの作者様にお礼申上げます。
・VBSでのZIP化処理は、今日の知見を参考にさせて頂きました。
 Tosh様にお礼申し上げます。
・GERBVでのガーバーエクセロン変換の検証をして頂きました。
 FusionPCBのサポート担当者様にお礼申上げます。

トップページに戻る