Perl だとこんな感じです
#CIRCLE.PL DXFファイルから真円データのみを出力する.
$circlef = 0;
print STDERR "\n";
print STDERR "DXFファイルから真円データを取り出す.\n";
print STDERR "------------------------------------\n";
#$*=1;
while(<>){
chop; # 改行文字の削除
s/ *//; # スペース削除
if ( /^CIRCLE/ ){ # 真円 ?
$circlef = 1;
}elsif( $circlef == 1 ){
if( /[0-9]*/ ){ # 念のため確認
$command = $_; #
$_ = <ARGV>; # 次の行の取り込み
chop; # 改行文字の削除
s/ *//; # スペース削除
$data = $_; # データ部取り出し
if( $command eq "10" ){ # 10 : x
$x = $data;
}elsif( $command eq "20" ){ # 20 : y
$y = $data;
}elsif( $command eq "8" ){ # 8 : レイヤ
$ray = $data;
}elsif( $command eq "62" ){ # 62 : 色
$col = $data;
}elsif( $command eq "40" ){ # 40 : 半径
$radius = $data;
}elsif( $command eq "0" ){ # 次のデータの先頭
print "X,",$x,",Y,",$y,",φ,",$radius * 2,",R,",$ray,",C,",$col,"\n";
$circlef = 0;
}
}
}
}
print STDERR "\n";
print STDERR "終了.\n\n";
出力結果は
X,-2740.0,Y,-2295.0,φ,8,R,V1,C,0
X,-3446.0,Y,-1854.5,φ,3,R,V1,C,0
X,-2740.0,Y,-2330.0,φ,8,R,V1,C,0
X,-3446.0,Y,-1854.5,φ,4,R,V1,C,0
X,-2740.0,Y,-2365.0,φ,6.75,R,V1,C,0
X,-3446.0,Y,-1832.5,φ,3,R,V1,C,0
拡張子をCSVにしてリダイレクトすればEXCELなどで編集できます。
DXFに変換する前にスケールを1:1に、(0,0)がDXFに出力した際に(0,0)となるように移動する必要があります。
DXFに出力した際に(0,0)となる場所は使用するCADによって異なると想いますのでメーカーに聞いてみて下さい。
標準フレームの四隅や基準マ-クなどに円を描いて試してみてもよろしいかと。
お礼
ご回答有難うございます。 現在使用しているCADにてDXFファイルの出力は可能です。 ファイルの中身は見たことがありませんが、 様々なことが出来るのですね。 ベーシックは数十年前に勉強したっきりで、 ほとんど忘れてしまっています。 当方説明不足でしたので補足致します。 出力する座標は、NC機械加工でキリ穴やタップ穴加工に使用するものです。穴数は製品にもよりますが10~400個程度です。 製品は板状のものもあれば、箱型(ベッド、コラム、ブラケット類)のものもあり、工具に対する加工面の高さが異なる場合もございます。その加工面毎に穴座標を分別して出力したいのです。CADにて作図した穴について、範囲指定などで指定し、1個1個自分の出力したいものから順番に選択して、座標出力するというやり方が出来る(CAMの機能かもしれませんが)CADソフトがあれば紹介して頂きたいのです。