So-net無料ブログ作成

部品エリア内のREF番号の検出 Part.2 [Altium VB Scripts]

プログラミングではなくて手動でチェックする場合も検討してみました。
DRCでチェックできる2012以下のシルクのデジグネータだけ非表示にすればいいのではないかと
いう案を思いつきました。
そうすれば大物だけが表示されるのでそれを目でチェックすればいいということです。

そこで登場するのがスクリプトで特定のデジグネータだけを非表示するというプロセスです。
CRだけを非表示にするとチップアルミ電解コンデンサやチップタンタルコンデンサや
R3216以上の抵抗も非表示になってしまいます。

まず、CRだけというのはDesignatorの最初のアルファベットを検出して二番目が数字ならOKです。
次に大きな部品は高さ情報で制限すれば良さそうですが高さを記載していないとNGです。
そこで思いついたのがパッドサイズを判定するということです。
パッドのXYサイズの内どちらか大きい方を判定してそれが2mm未満なら非表示としています。

PX、PYのサイズということでチェックしてそれをミリにします。
PXsize = CoordToMMs(Pad.TopXsize)
PYsize = CoordToMMs(Pad.TopYsize)

しかし、ディスクリートのCRはパッドが1.4-1.6mmぐらいですから非表示になってしまいます。
そこでパッドがMultilayerの場合はディスクリート部品と判定してSMDは非表示にしますが
ディスクリート部品は表示することにしました。
その判定方法は下記のようにします。最初にSMDとしておいてIF文でチェックしてディスクリートなら
Falseにする方が2行で済みます。

SMD_Comp = "True"
If Pad.Layer = eMultilayer then SMD_Comp = "False"

最後にIF文でCRかどうか、パッドサイズの制限とSMDかどうかどうかで判定します。

全表示させる場合に認識マークなどを部品として処理している場合は表示されてしまうのが
難点です。
放熱器などの機構部品も同様です。


nice!(0)  コメント(0)