So-net無料ブログ作成

部品エリア内のREF番号の検出 Part.4 [Altium VB Scripts(E/J)]

部品のシルク内にDesignatorのシルクを移動し忘れる場合をどう検出するかの話の続きです。
デジグネータのシルクを四角形としてスクリプトで処理しようと考えています。

最小値である左下のXY座標と最大値である右上のXY座標から四角形として認識すればいいと
最初は考えていましたがそれだと一部分が掛かっている場合が組み合わせによっては検出できません。
そこで四角形としたシルクの四隅を左下からABCDとして座標を計算させています。

配置された部品自体はシルクなどのトラックの数値を個別にチェックして同様に四角形と
して認識させます。
その数値内に四隅のシルクの座標が入っていたらエラーとしてレポートすればいいという考え方です。

デジグネータの座標と文字高で計算しますが、座標は部品面の場合は左下の数値です。
また角度によって最小最大値とは違うので処理する必要があります。
シルクが0度(水平の場合)では、文字高の0.8倍と文字数を掛け合わせたものが横幅と推測します。
(0.8倍というのは、サンセリフの場合の複数の文字から計算した平均値です。)

つまり、文字高が1mmでR100というシルクであれば文字数が4個なので1(mm) x 0.8 x 4 = 3.2(mm)
左下のXY座標が、もし0、0であれば右上は3.2、1(文字高そのもの)という意味です。

半田面の場合はX座標が反転されるので角度との絡みで複雑になります。
その場合も部品面視で処理します。

Des_Rect_Pos4.png

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