<第25回目:’11年4月1日>

kicadのドリルデータをdxfに変換


1.はじめに
前回、cam.pyを使ってガーバデータをdxfに変換しました。今回はkicadのドリルデータdxfに変換します。


2.ドリルデータを見てみる
kicadの出力するドリルデータです。ミリに指定して書き出しました。緑でコメントを入れておきます。座標の指定方法などはGコードと同様です。
この形式のデータでは1行に複数のコマンドや値が区切り無く繋がっています。プログラムで解析するにはG/TやX、Yなどの大文字アルファベットの区切りでデータを解析する必要があります。今回は座標のみ変換するので頭から%まで読み飛ばします。

;DRILL file {PCBNEW 04-jan-06} date 31/3/2011-05:45:47     //コメント
;FORMAT={3:3 / absolute / millimeters / decimal format}    //コメント 絶対座標、ミリ 十進
M48
R,T
VER,1
FMAT,2
METRIC,TZ
TCST,OFF
ICI,OFF
ATC,ON
T1C0.051 // ドリル径指定 1:0.051
T2C0.635 // ドリル径指定 2:0.635
T3C0.813 // ドリル径指定 3:0.813
T4C1.524 // ドリル径指定 4:1.254
%
M47
G05
M71
T1 // ドリル1指定
X49.530Y36.830 // ドリル1で穴開け座標XY指定 以下同様
X49.530Y80.010
X130.810Y80.010
X130.810Y36.830
T2 // ドリル2指定
X124.460Y50.800 // ドリル2で穴あけ座標XY指定 以下同様
X71.120Y57.150
X85.725Y69.850
T3 // ドリル3指定
X83.820Y41.910 // ドリル3で穴あけ座標XY指定 以下同様
X93.980Y41.910
X68.580Y45.720
X58.420Y45.720
X109.220Y58.420
・             // 途中省略

T4
// ドリル4指定
X116.840Y50.800 // ドリル4で穴あけ座標XY指定 以下同様
X116.840Y55.880
X116.840Y45.720
X116.840Y60.960
X116.840Y66.040
X116.840Y71.120
T0
M30


3.ドリルデータをdxfに変換するプログラムを作成
ドリルデータをdxfに変換するプログラムを作成します。内部形式に直接変換してもいいのですが、原点からのオフセットなど直接内部形式に変換するといろいろと面倒です。ドリルデータがdxfの点に変換できればqcad上でパターンと重ねて表示して確認しながら調整も行えます。

qcadのdxfファイルを見ると1つの点(POINT)を表すのに以下のようなデータが必要です。10の行に続く値がX座標20
の行続く値がY座標です。

 POINT //点指定
   5
 43
 100
 AcDbEntity
 100
 AcDbPoint
   8 //レイヤ名=0
 0
  62 //色=7
 7
 370
 -1
   6  //線種=ByLayer
 ByLayer
  10
  // X座標値=100.0
 100.0
  20
  // Y座標値=100.0
 100.0

  30
  // Z座標値=0.0
 0.0
   0


ドリルデータのXY座標を上記のXとYの値の部分に入れればドリルデータをdxfに変換できそうです。ただし白紙のdxfファイルでも1700行くらいあり、これらの付随するデータを意味を理解して作るのは大変なので、白紙のdxfファイルを
POINTエンティティの入る部分を境に前半と後半に分割しその間にPOINTエンティティ挿入することで簡易的にdxfファイルを作成することにします。注意点としてKicadとqcadではY座標が反転しているのでdxfに変換する時にY座標をマイナスにする必要があります。

作成したプログラムはdrl2dxfでqcadの白紙の2分割されたdxfファイルとドリルファイルから標準出力にドリルの座標を点に変換して標準出力に出すプログラムです。

$ ./drl2dxf sonde.drl > sonde_drl.dxf
として変換します。

4.dxfに変換したドリルデータをqcadに読み込む
簡易的にdxfに変換したドリルデータをqcadに読み込んでみます。左上に0.05mmのドリルで開ける穴があるはずですが、それ以外は一応正常に変換できているようです。たぶん一番初めの点のみ表示されないようです。簡易的にdxfファイルを作っているためと思われます。


カーバデータのdxfにコピー&ペーストで同一図面にします。その後ドリルデータのレイヤとパターンのレイヤは分けておきます。


基準点を決めて重ねます。判別しやすいようにドリルは赤点にしました。正常に重なりました。次回はフライス盤で穴開けとパターンを切削する予定です。