test1
<body>
#MRCパラメータのセット140905 161031積層順位を追加、設定値1μ}イナス、層間断線追加
#
#参考:SETMRC.tcl mrcctl.tcl MRCSET.tcl
#
###############################################################データを読んでidataリストへ登録し、 $dataaにヒットしたときの値を返す部品(修正)
proc idata { dataa } {
set idataall "";set fid [open iraisyo-data.txt];while { [gets $fid line] >= 0} {lappend idataall $line;};close $fid ;
foreach dddd $idataall {set idatas [split $dddd ":"];
if {[lindex $idatas 0] == $dataa} {set idatano [lindex $idatas 1];return $idatano;};
};};
###############################################################
####以下の部分はファイルがあれば!の部分
set bbb1 [query pfdfile];set bbb2 "";set bbb4 "";set bbb3 "/";set flag 0;set pall [split $bbb1 "\\"];
foreach ddd $pall {if {$flag == 0} {set bbb2 "$bbb2$ddd$bbb3";};if {[string first "PC-" $ddd ] > -1} {set flag 1;};};#PC-直下のフォルダを抽出
for { set i 1 } { $i <= [expr [llength $pall] -1] } { incr i } {set ddd [lindex $pall [expr $i -1]];set bbb4 "$bbb4$ddd$bbb3";};#開いてるファイルのあるフォルダを抽出
set iraira "iraisyo-data.txt";
if {[file exists "$bbb2$iraira"] == 0} {magbox "iraisyo-data.txt が見つからない";return;};
cd $bbb2;set ia1 [idata "補正Eg"]; cd $bbb4;
if {$ia1 == "有り"} {
####################################################################ファイルの有無で前処理をやったか確認
set bbb1 [query pfdfile];echo $bbb1;
set bbb2 "";set pall [split $bbb1 "\\"];set ffn "";
foreach ddd $pall {if {[string first ".pfd" $ddd ] > -1} {set ffn $ddd;}; };
set ffn [string range $ffn 0 [expr [string length $ffn] - 5 ] ];
set ffs "--グリッド・クリーンアップ前";
set ffn "$ffn$ffs";
set aaa [glob -nocomplain "*.pfd"];
if {[string first $ffn $aaa] == -1} {msgbox "グリッド・クリーンアップ前のpfdファイルが有りません。処理を中止します。";
echo "グリッド・クリーンアップ前のバックアップが無いので、未実行と判断";return;} else {
echo "グリッド・クリーンアップ前のバックアップファイルを確認。";
};
####################################################################
};
###入力2.5 ##2021.03.10仕様変更
combobox caption {IVHドリル−外形 クリアランス値};
combobox items {{板厚1.6t以下:0.5} {1.6t超:1.0}};
combobox active {板厚1.6t以下:0.5};
set enmen2 [combobox open];
if {$enmen2 == "板厚1.6t以下:0.5"} {set enmen 0.5;};
if {$enmen2 == "1.6t超:1.0"} {set enmen 1.0;};
if { $enmen2 == "--canceled" } {msgbox "何も入力されませんでした。終了します。";return;};
set nnflag 0;
#積層順位の設定
#レイヤー構成を上から調べながら、構築する命令を変数GOOに文字列として溜め、最後にevalで実行する方法を取っています。
set nco "";set lao "";
if {[query editst] !="CAM" || [query topst] !="CAM"} {msgbox "編集ストラクチャとTOPストラクチャがCAMではありません。終了します。";return;}
set GOO "deflay untype -pwb;";
set gaisuu2 "(";set lmax 0;set pmax 0;
foreach gaisuu [query layernames] {
if {[string range $gaisuu 0 1] != "LA" && [string range $gaisuu 0 0] == "L" && [string first $gaisuu2 $gaisuu ] == -1} {
if {[query existlay $gaisuu:1] == 1} {
if {[query uselaystruct $gaisuu:1] != "WAKU" } {
set pmax [expr $pmax + 1];set GOO "$GOO deflay type $gaisuu pattern $pmax;";lappend pto $gaisuu;
#set lll [string range $gaisuu 1 3];if { $lll > $lmax && [query uselaystruct $gaisuu:1] == "CAM"} { set lmax $lll;}
continue;
};};};
if {$gaisuu == "Mark"} {continue;};
#################外形を追加 2021.03.10
if {$gaisuu == "MRC-G"} {set GOO "$GOO deflay type MRC-G outline;";continue;};
if {$gaisuu == "GGG"} {
if {[query existlay MRC-G:1] != "1"} {set GOO "$GOO deflay type GGG outline;";continue;} else {set GOO "$GOO deflay untype GGG;";continue;};
};
if {$gaisuu == "GG"} {
if {[query existlay MRC-G:1] != "1" && [query existlay GGG:1] != "1"} {set GOO "$GOO deflay type GG outline;";continue;} else {set GOO "$GOO deflay untype GG;";continue;};
};
if {$gaisuu == "G"} {
if {[query existlay MRC-G:1] != "1" && [query existlay GG:1] != "1" && [query existlay GGG:1] != "1"} {set GOO "$GOO deflay type G outline;";continue;} else {set GOO "$GOO deflay untype G;";continue;};
};
#################
#if { [string range $gaisuu 0 1] == "NC" && [regexp {[0-9]+} [string range $gaisuu 2 2] ] == 1} {lappend nco $gaisuu;continue;}
if { [string range $gaisuu 0 1] == "LA" && [regexp {[0-9]+} [string range $gaisuu 2 2] ] == 1} {lappend lao $gaisuu;continue;}
set GOO "$GOO deflay untype $gaisuu;";
echo $gaisuu;
};
set LL "L";set NN "N";set PP "P";
if {$nco != ""} {
foreach ncp $nco {set ncppp [split $ncp "_"];set ncp2 [lindex $ncppp 0];
switch -- [string length $ncp2] {
4 {set nc1 [string range $ncp 2 2];set nc2 [string range $ncp 3 3];}
5 {set nc1 [string range $ncp 2 2];set nc2 [string range $ncp 3 4];}
6 {set nc1 [string range $ncp 2 3];set nc2 [string range $ncp 4 5];}
default {
eval "laystack pattern $pmax;laystack drill 6;laystack sresist on;laystack silk on;laystack outline on;";
eval $GOO;echo "積層順位を設定しました。NCレイヤーの数値が判別不能であるため、NCは未設定です。";
return;}
}
set p1p [lsearch $pto $LL$nc1$PP];set p1n [lsearch $pto $LL$nc1$NN];set p1 [lsearch $pto $LL$nc1];
if { $p1 != -1 && $p1n != -1 && $p1n < $p1 } {set p1 $p1n;};#無印とNがあった場合、小さい方をP1に設定
if { $p1 != -1 && $p1p != -1 && $p1p < $p1 } {set p1 $p1p;};#無印とPがあった場合、小さい方をP1に設定
if { $p1 == -1 && $p1n != -1} {set p1 $p1n;};#無印がなくてNがあった場合、P1に設定
if { $p1 == -1 && $p1p != -1} {set p1 $p1p;};#無印がなくてPがあった場合、P1に設定
set p2p [lsearch $pto $LL$nc2$PP];set p2n [lsearch $pto $LL$nc2$NN];set p2 [lsearch $pto $LL$nc2];
if { $p2 != -1 && $p2n != -1 && $p2n > $p2 } {set p2 $p2n;};#無印とNがあった場合、大きい方をP2に設定
if { $p2 != -1 && $p2p != -1 && $p2p > $p2 } {set p2 $p2p;};#無印とPがあった場合、大きい方をP2に設定
if { $p2 == -1 && $p2n != -1} {set p2 $p2n;};#無印がなくてNがあった場合、P2に設定
if { $p2 == -1 && $p2p != -1} {set p2 $p2p;};#無印がなくてPがあった場合、P2に設定
set p1 [expr $p1 + 1];set p2 [expr $p2 + 1];
set GOO "$GOO deflay type $ncp ivh drill $p1 $p2;";
};
} else {msgbox "nc数値レイヤーが見つかりませんでした。中止します。";return;};
if {$lao != ""} {
foreach lap $lao {
switch -- [string length $lap] {
4 {set la1 [string range $lap 2 2];set la2 [string range $lap 3 3];}
5 {set la1 [string range $lap 2 2];set la2 [string range $lap 3 4];}
6 {set la1 [string range $lap 2 3];set la2 [string range $lap 4 5];}
default {
eval "laystack pattern $pmax;laystack drill 6;laystack sresist on;laystack silk on;laystack outline on;";
eval $GOO;echo "積層順位を設定しました。LAレイヤーの数値が判別不能であるため、LAは未設定です。";
return;}
}
set p1p [lsearch $pto $LL$la1$PP];set p1n [lsearch $pto $LL$la1$NN];set p1 [lsearch $pto $LL$la1];
if { $p1 != -1 && $p1n != -1 && $p1n < $p1 } {set p1 $p1n;};
if { $p1 != -1 && $p1p != -1 && $p1p < $p1 } {set p1 $p1p;};
if { $p1 == -1 && $p1n != -1} {set p1 $p1n;};
if { $p1 == -1 && $p1p != -1} {set p1 $p1p;};
set p2p [lsearch $pto $LL$la2$PP];set p2n [lsearch $pto $LL$la2$NN];set p2 [lsearch $pto $LL$la2];
if { $p2 != -1 && $p2n != -1 && $p2n > $p2 } {set p2 $p2n;};
if { $p2 != -1 && $p2p != -1 && $p2p > $p2 } {set p2 $p2p;};
if { $p2 == -1 && $p2n != -1} {set p2 $p2n;};
if { $p2 == -1 && $p2p != -1} {set p2 $p2p;};
set p1 [expr $p1 + 1];set p2 [expr $p2 + 1];
set GOO "$GOO deflay type $lap ivh laser $p1 $p2;";
};
};
eval "laystack pattern $pmax;laystack drill [expr 4 + [llength $nco]];laystack sresist on;laystack silk on;laystack outline on;";
eval $GOO;echo "IVH用の積層順位を設定しました。";eval $GOO;eval $GOO;
#-----------------------------------------------------------------------------
# 説明
# MRC のパラメータ設定/実行を実{する。
#
# 使用方法
# mrc exec MRC を実行
# mrc enable 項目 ... 項目をチェックする
# mrc disable 項目 ... 項目をチェックしない
# mrc pat パラメータ パターンチェック用のパラメータを設定
# mrc drill パラメータ ドリルチェック用のパラメータを設定
# mrc vccgnd パラメータ 電源/グランドチェック用のパラメータを設定
# mrc sresist パラメータ ソルダレジストチェック用のパラメータを設定
# mrc silk パラメータ シルクチェック用のパラメータを設定
#
#-----------------------------------------------------------------------------
#MRC全体のチェックをドリルのみにする
mrc disable pat
mrc enable drill
mrc disable vccgnd
mrc disable sresist
mrc disable silk
#ドリルの重複、通過するパッドの存在、外形とのチェック、ドローのアニュラリングのみにする
#単層クリアランス
mrc drill disable ccheck
#ドリルの重複
mrc drill enable drldup
#層間断線
mrc drill enable bdown
#通過するパッドの存在
mrc drill enable padcmp
#アニュラリング
mrc drill disable annu
#ドリルの過不足
mrc drill disable unmatch
#外形とのチェック
mrc drill enable ocheck
#ドローのアニュラリング
mrc drill enable annudraw
#-----------------------------------------------------------------------------
# 説明
# ドリルチェック用のパラメータ設定を実{する(内部コ}ンド)
#
# 使用方法
# MrcDrill コ}ンド パラメータ
#
# 指示
# enable 項目 ... 項目のチェックする
# disable 項目 ... 項目のチェックしない
# ccheck コ}ンド 単層クリアランスチェックのパラメータ設定
# drldup コ}ンド ドリル重複チェックのパラメータ設定
# bdown コ}ンド 層間断線チェックのパラメータ設定
# padcmp コ}ンド 通過するパッドの存在チェックのパラメータ設定
# annu コ}ンド アニュアリングチェックのパラメータ設定
# unmatch コ}ンド ドリル過不足チェックのパラメータ設定
# ocheck コ}ンド 外形とのクリアランスチェックのパラメータ設定
# // ANNUAL-RING
# annudrawコ}ンド ドローデータとのアニュアリングチェックのパラメータ設定
#
#-----------------------------------------------------------------------------
# drldup コ}ンド ドリル重複チェックのパラメータ設定
mrc drill drldup range 0.2; #MRCSETによる影響を受ける
mrc drill drldup chrone off;
mrc drill drldup omitap { };
mrc drill drldup chktype 0;
#▽▽▽▽▽▽▽▽
#▽ 層間断線 ▽
#▽▽▽▽▽▽▽▽
#
#ドリル種別によるクリアランス値
#対ライン(貫通 非貫通 IVHドリル IVHレーザー)
mrc drill bdown d2l 0.001 0.001 0.224 0.001
#対パット(貫通 非貫通 IVHドリル IVHレーザー)
mrc drill bdown d2p 0.001 0.001 0.224 0.001
#対レジスト(貫通 非貫通 IVHドリル IVHレーザー)
mrc drill bdown d2r 0.001 0.001 0.001 0.001
#対シルク(貫通 非貫通 IVHドリル IVHレーザー)
mrc drill bdown d2s 0.001 0.001 0.001 0.001
#条件設定
#NTHの接続は全てエラーとする
mrc drill bdown nthru on
#パットのない接続は全てエラーとする
mrc drill bdown onpad on
# padcmp コ}ンド 通過するパッドの存在チェックのパラメータ設定
mrc drill padcmp range 0.2; #MRCSETによる影響を受ける
mrc drill padcmp detail off; #MRCSETによる影響を受ける
mrc drill padcmp mode off; #MRCSETによる影響を受ける
mrc drill padcmp sufpad on; #MRCSETによる影響を受ける
mrc drill padcmp sufdrl off; #MRCSETによる影響を受ける
mrc drill padcmp inpad on; #MRCSETによる影響を受ける
mrc drill padcmp indrl off; #MRCSETによる影響を受ける
mrc drill padcmp vgpad on; #MRCSETによる影響を受ける
mrc drill padcmp vgdrl on; #MRCSETによる影響を受ける
mrc drill padcmp omitap { };
#########ドリル 外形とのチェック ##2021.03.10仕様変更
mrc drill enable ocheck;
#検査項目
#ライン対ライン
mrc drill ocheck l2l on;
#ライン対パッド
mrc drill ocheck p2l on;
#パッド対パッド
mrc drill ocheck p2p on;
#検査タイプ
#交差も接続とみなす
mrc drill ocheck cross on;
#外形線幅をゼロとみなす
mrc drill ocheck zero on;
#クリアランス値
mrc drill ocheck size $enmen $enmen $enmen;
# annudrawコ}ンド ドローデータとのアニュアリングチェックのパラメータ設定
mrc drill annudraw border 0 0.0 0.0 0.0; #MRCSETによる影響を受ける
mrc drill annudraw sfpattern 0.139 0.1 0.139 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1; #MRCSETによる影響を受ける
mrc drill annudraw inpattern 0.139 0.1 0.139 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1; #MRCSETによる影響を受ける
mrc drill annudraw vgthermal 0.139 0.1 0.139 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1; #MRCSETによる影響を受ける
mrc drill annudraw vgclearance 0.279 0.1 0.279 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1; #MRCSETによる影響を受ける
mrc drill annudraw resist 0.099 0.1 0.099 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1;
mrc drill annudraw width 25.0; #MRCSETによる影響を受ける
mrc drill annudraw height 25.0; #MRCSETによる影響を受ける
mrc drill annudraw therm {in }; #MRCSETによる影響を受ける
mrc drill annudraw noobject off;
mrc drill annudraw mini_via 0.0;
#-----------------------------------------------------------------------------
##########################################################################################################################################################
#バックアップをその場で作製する。名前は「MRC前--IVH--作製時間.pfd」 となる。
set FFname "MRC前--IVH--";
set bname "$FFname[clock format [clock seconds] -format --%H%M%S]";
set bbb1 [query pfdfile];
saveas $bbb1;
file copy $bbb1 $bname.pfd;
echo "バックアップ作成 $bname.pfd";
######################################################################################################################################################
使用変数
<body>
#MRCパラメータのセット140905 161031積層順位を追加、設定値1μ}イナス、層間断線追加
#
#参考:SETMRC.tcl mrcctl.tcl MRCSET.tcl
#
###############################################################データを読んでidataリストへ登録し、 $dataaにヒットしたときの値を返す部品(修正)
proc idata { dataa } {
set idataall "";set fid [open iraisyo-data.txt];while { [gets $fid line] >= 0} {lappend idataall $line;};close $fid ;
foreach dddd $idataall {set idatas [split $dddd ":"];
if {[lindex $idatas 0] == $dataa} {set idatano [lindex $idatas 1];return $idatano;};
};};
###############################################################
####以下の部分はファイルがあれば!の部分
set bbb1 [query pfdfile];set bbb2 "";set bbb4 "";set bbb3 "/";set flag 0;set pall [split $bbb1 "\\"];
foreach ddd $pall {if {$flag == 0} {set bbb2 "$bbb2$ddd$bbb3";};if {[string first "PC-" $ddd ] > -1} {set flag 1;};};#PC-直下のフォルダを抽出
for { set i 1 } { $i <= [expr [llength $pall] -1] } { incr i } {set ddd [lindex $pall [expr $i -1]];set bbb4 "$bbb4$ddd$bbb3";};#開いてるファイルのあるフォルダを抽出
set iraira "iraisyo-data.txt";
if {[file exists "$bbb2$iraira"] == 0} {magbox "iraisyo-data.txt が見つからない";return;};
cd $bbb2;set ia1 [idata "補正Eg"]; cd $bbb4;
if {$ia1 == "有り"} {
####################################################################ファイルの有無で前処理をやったか確認
set bbb1 [query pfdfile];echo $bbb1;
set bbb2 "";set pall [split $bbb1 "\\"];set ffn "";
foreach ddd $pall {if {[string first ".pfd" $ddd ] > -1} {set ffn $ddd;}; };
set ffn [string range $ffn 0 [expr [string length $ffn] - 5 ] ];
set ffs "--グリッド・クリーンアップ前";
set ffn "$ffn$ffs";
set aaa [glob -nocomplain "*.pfd"];
if {[string first $ffn $aaa] == -1} {msgbox "グリッド・クリーンアップ前のpfdファイルが有りません。処理を中止します。";
echo "グリッド・クリーンアップ前のバックアップが無いので、未実行と判断";return;} else {
echo "グリッド・クリーンアップ前のバックアップファイルを確認。";
};
####################################################################
};
###入力2.5 ##2021.03.10仕様変更
combobox caption {IVHドリル−外形 クリアランス値};
combobox items {{板厚1.6t以下:0.5} {1.6t超:1.0}};
combobox active {板厚1.6t以下:0.5};
set enmen2 [combobox open];
if {$enmen2 == "板厚1.6t以下:0.5"} {set enmen 0.5;};
if {$enmen2 == "1.6t超:1.0"} {set enmen 1.0;};
if { $enmen2 == "--canceled" } {msgbox "何も入力されませんでした。終了します。";return;};
set nnflag 0;
#積層順位の設定
#レイヤー構成を上から調べながら、構築する命令を変数GOOに文字列として溜め、最後にevalで実行する方法を取っています。
set nco "";set lao "";
if {[query editst] !="CAM" || [query topst] !="CAM"} {msgbox "編集ストラクチャとTOPストラクチャがCAMではありません。終了します。";return;}
set GOO "deflay untype -pwb;";
set gaisuu2 "(";set lmax 0;set pmax 0;
foreach gaisuu [query layernames] {
if {[string range $gaisuu 0 1] != "LA" && [string range $gaisuu 0 0] == "L" && [string first $gaisuu2 $gaisuu ] == -1} {
if {[query existlay $gaisuu:1] == 1} {
if {[query uselaystruct $gaisuu:1] != "WAKU" } {
set pmax [expr $pmax + 1];set GOO "$GOO deflay type $gaisuu pattern $pmax;";lappend pto $gaisuu;
#set lll [string range $gaisuu 1 3];if { $lll > $lmax && [query uselaystruct $gaisuu:1] == "CAM"} { set lmax $lll;}
continue;
};};};
if {$gaisuu == "Mark"} {continue;};
#################外形を追加 2021.03.10
if {$gaisuu == "MRC-G"} {set GOO "$GOO deflay type MRC-G outline;";continue;};
if {$gaisuu == "GGG"} {
if {[query existlay MRC-G:1] != "1"} {set GOO "$GOO deflay type GGG outline;";continue;} else {set GOO "$GOO deflay untype GGG;";continue;};
};
if {$gaisuu == "GG"} {
if {[query existlay MRC-G:1] != "1" && [query existlay GGG:1] != "1"} {set GOO "$GOO deflay type GG outline;";continue;} else {set GOO "$GOO deflay untype GG;";continue;};
};
if {$gaisuu == "G"} {
if {[query existlay MRC-G:1] != "1" && [query existlay GG:1] != "1" && [query existlay GGG:1] != "1"} {set GOO "$GOO deflay type G outline;";continue;} else {set GOO "$GOO deflay untype G;";continue;};
};
#################
#if { [string range $gaisuu 0 1] == "NC" && [regexp {[0-9]+} [string range $gaisuu 2 2] ] == 1} {lappend nco $gaisuu;continue;}
if { [string range $gaisuu 0 1] == "LA" && [regexp {[0-9]+} [string range $gaisuu 2 2] ] == 1} {lappend lao $gaisuu;continue;}
set GOO "$GOO deflay untype $gaisuu;";
echo $gaisuu;
};
set LL "L";set NN "N";set PP "P";
if {$nco != ""} {
foreach ncp $nco {set ncppp [split $ncp "_"];set ncp2 [lindex $ncppp 0];
switch -- [string length $ncp2] {
4 {set nc1 [string range $ncp 2 2];set nc2 [string range $ncp 3 3];}
5 {set nc1 [string range $ncp 2 2];set nc2 [string range $ncp 3 4];}
6 {set nc1 [string range $ncp 2 3];set nc2 [string range $ncp 4 5];}
default {
eval "laystack pattern $pmax;laystack drill 6;laystack sresist on;laystack silk on;laystack outline on;";
eval $GOO;echo "積層順位を設定しました。NCレイヤーの数値が判別不能であるため、NCは未設定です。";
return;}
}
set p1p [lsearch $pto $LL$nc1$PP];set p1n [lsearch $pto $LL$nc1$NN];set p1 [lsearch $pto $LL$nc1];
if { $p1 != -1 && $p1n != -1 && $p1n < $p1 } {set p1 $p1n;};#無印とNがあった場合、小さい方をP1に設定
if { $p1 != -1 && $p1p != -1 && $p1p < $p1 } {set p1 $p1p;};#無印とPがあった場合、小さい方をP1に設定
if { $p1 == -1 && $p1n != -1} {set p1 $p1n;};#無印がなくてNがあった場合、P1に設定
if { $p1 == -1 && $p1p != -1} {set p1 $p1p;};#無印がなくてPがあった場合、P1に設定
set p2p [lsearch $pto $LL$nc2$PP];set p2n [lsearch $pto $LL$nc2$NN];set p2 [lsearch $pto $LL$nc2];
if { $p2 != -1 && $p2n != -1 && $p2n > $p2 } {set p2 $p2n;};#無印とNがあった場合、大きい方をP2に設定
if { $p2 != -1 && $p2p != -1 && $p2p > $p2 } {set p2 $p2p;};#無印とPがあった場合、大きい方をP2に設定
if { $p2 == -1 && $p2n != -1} {set p2 $p2n;};#無印がなくてNがあった場合、P2に設定
if { $p2 == -1 && $p2p != -1} {set p2 $p2p;};#無印がなくてPがあった場合、P2に設定
set p1 [expr $p1 + 1];set p2 [expr $p2 + 1];
set GOO "$GOO deflay type $ncp ivh drill $p1 $p2;";
};
} else {msgbox "nc数値レイヤーが見つかりませんでした。中止します。";return;};
if {$lao != ""} {
foreach lap $lao {
switch -- [string length $lap] {
4 {set la1 [string range $lap 2 2];set la2 [string range $lap 3 3];}
5 {set la1 [string range $lap 2 2];set la2 [string range $lap 3 4];}
6 {set la1 [string range $lap 2 3];set la2 [string range $lap 4 5];}
default {
eval "laystack pattern $pmax;laystack drill 6;laystack sresist on;laystack silk on;laystack outline on;";
eval $GOO;echo "積層順位を設定しました。LAレイヤーの数値が判別不能であるため、LAは未設定です。";
return;}
}
set p1p [lsearch $pto $LL$la1$PP];set p1n [lsearch $pto $LL$la1$NN];set p1 [lsearch $pto $LL$la1];
if { $p1 != -1 && $p1n != -1 && $p1n < $p1 } {set p1 $p1n;};
if { $p1 != -1 && $p1p != -1 && $p1p < $p1 } {set p1 $p1p;};
if { $p1 == -1 && $p1n != -1} {set p1 $p1n;};
if { $p1 == -1 && $p1p != -1} {set p1 $p1p;};
set p2p [lsearch $pto $LL$la2$PP];set p2n [lsearch $pto $LL$la2$NN];set p2 [lsearch $pto $LL$la2];
if { $p2 != -1 && $p2n != -1 && $p2n > $p2 } {set p2 $p2n;};
if { $p2 != -1 && $p2p != -1 && $p2p > $p2 } {set p2 $p2p;};
if { $p2 == -1 && $p2n != -1} {set p2 $p2n;};
if { $p2 == -1 && $p2p != -1} {set p2 $p2p;};
set p1 [expr $p1 + 1];set p2 [expr $p2 + 1];
set GOO "$GOO deflay type $lap ivh laser $p1 $p2;";
};
};
eval "laystack pattern $pmax;laystack drill [expr 4 + [llength $nco]];laystack sresist on;laystack silk on;laystack outline on;";
eval $GOO;echo "IVH用の積層順位を設定しました。";eval $GOO;eval $GOO;
#-----------------------------------------------------------------------------
# 説明
# MRC のパラメータ設定/実行を実{する。
#
# 使用方法
# mrc exec MRC を実行
# mrc enable 項目 ... 項目をチェックする
# mrc disable 項目 ... 項目をチェックしない
# mrc pat パラメータ パターンチェック用のパラメータを設定
# mrc drill パラメータ ドリルチェック用のパラメータを設定
# mrc vccgnd パラメータ 電源/グランドチェック用のパラメータを設定
# mrc sresist パラメータ ソルダレジストチェック用のパラメータを設定
# mrc silk パラメータ シルクチェック用のパラメータを設定
#
#-----------------------------------------------------------------------------
#MRC全体のチェックをドリルのみにする
mrc disable pat
mrc enable drill
mrc disable vccgnd
mrc disable sresist
mrc disable silk
#ドリルの重複、通過するパッドの存在、外形とのチェック、ドローのアニュラリングのみにする
#単層クリアランス
mrc drill disable ccheck
#ドリルの重複
mrc drill enable drldup
#層間断線
mrc drill enable bdown
#通過するパッドの存在
mrc drill enable padcmp
#アニュラリング
mrc drill disable annu
#ドリルの過不足
mrc drill disable unmatch
#外形とのチェック
mrc drill enable ocheck
#ドローのアニュラリング
mrc drill enable annudraw
#-----------------------------------------------------------------------------
# 説明
# ドリルチェック用のパラメータ設定を実{する(内部コ}ンド)
#
# 使用方法
# MrcDrill コ}ンド パラメータ
#
# 指示
# enable 項目 ... 項目のチェックする
# disable 項目 ... 項目のチェックしない
# ccheck コ}ンド 単層クリアランスチェックのパラメータ設定
# drldup コ}ンド ドリル重複チェックのパラメータ設定
# bdown コ}ンド 層間断線チェックのパラメータ設定
# padcmp コ}ンド 通過するパッドの存在チェックのパラメータ設定
# annu コ}ンド アニュアリングチェックのパラメータ設定
# unmatch コ}ンド ドリル過不足チェックのパラメータ設定
# ocheck コ}ンド 外形とのクリアランスチェックのパラメータ設定
# // ANNUAL-RING
# annudrawコ}ンド ドローデータとのアニュアリングチェックのパラメータ設定
#
#-----------------------------------------------------------------------------
# drldup コ}ンド ドリル重複チェックのパラメータ設定
mrc drill drldup range 0.2; #MRCSETによる影響を受ける
mrc drill drldup chrone off;
mrc drill drldup omitap { };
mrc drill drldup chktype 0;
#▽▽▽▽▽▽▽▽
#▽ 層間断線 ▽
#▽▽▽▽▽▽▽▽
#
#ドリル種別によるクリアランス値
#対ライン(貫通 非貫通 IVHドリル IVHレーザー)
mrc drill bdown d2l 0.001 0.001 0.224 0.001
#対パット(貫通 非貫通 IVHドリル IVHレーザー)
mrc drill bdown d2p 0.001 0.001 0.224 0.001
#対レジスト(貫通 非貫通 IVHドリル IVHレーザー)
mrc drill bdown d2r 0.001 0.001 0.001 0.001
#対シルク(貫通 非貫通 IVHドリル IVHレーザー)
mrc drill bdown d2s 0.001 0.001 0.001 0.001
#条件設定
#NTHの接続は全てエラーとする
mrc drill bdown nthru on
#パットのない接続は全てエラーとする
mrc drill bdown onpad on
# padcmp コ}ンド 通過するパッドの存在チェックのパラメータ設定
mrc drill padcmp range 0.2; #MRCSETによる影響を受ける
mrc drill padcmp detail off; #MRCSETによる影響を受ける
mrc drill padcmp mode off; #MRCSETによる影響を受ける
mrc drill padcmp sufpad on; #MRCSETによる影響を受ける
mrc drill padcmp sufdrl off; #MRCSETによる影響を受ける
mrc drill padcmp inpad on; #MRCSETによる影響を受ける
mrc drill padcmp indrl off; #MRCSETによる影響を受ける
mrc drill padcmp vgpad on; #MRCSETによる影響を受ける
mrc drill padcmp vgdrl on; #MRCSETによる影響を受ける
mrc drill padcmp omitap { };
#########ドリル 外形とのチェック ##2021.03.10仕様変更
mrc drill enable ocheck;
#検査項目
#ライン対ライン
mrc drill ocheck l2l on;
#ライン対パッド
mrc drill ocheck p2l on;
#パッド対パッド
mrc drill ocheck p2p on;
#検査タイプ
#交差も接続とみなす
mrc drill ocheck cross on;
#外形線幅をゼロとみなす
mrc drill ocheck zero on;
#クリアランス値
mrc drill ocheck size $enmen $enmen $enmen;
# annudrawコ}ンド ドローデータとのアニュアリングチェックのパラメータ設定
mrc drill annudraw border 0 0.0 0.0 0.0; #MRCSETによる影響を受ける
mrc drill annudraw sfpattern 0.139 0.1 0.139 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1; #MRCSETによる影響を受ける
mrc drill annudraw inpattern 0.139 0.1 0.139 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1; #MRCSETによる影響を受ける
mrc drill annudraw vgthermal 0.139 0.1 0.139 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1; #MRCSETによる影響を受ける
mrc drill annudraw vgclearance 0.279 0.1 0.279 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1; #MRCSETによる影響を受ける
mrc drill annudraw resist 0.099 0.1 0.099 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1;
mrc drill annudraw width 25.0; #MRCSETによる影響を受ける
mrc drill annudraw height 25.0; #MRCSETによる影響を受ける
mrc drill annudraw therm {in }; #MRCSETによる影響を受ける
mrc drill annudraw noobject off;
mrc drill annudraw mini_via 0.0;
#-----------------------------------------------------------------------------
##########################################################################################################################################################
#バックアップをその場で作製する。名前は「MRC前--IVH--作製時間.pfd」 となる。
set FFname "MRC前--IVH--";
set bname "$FFname[clock format [clock seconds] -format --%H%M%S]";
set bbb1 [query pfdfile];
saveas $bbb1;
file copy $bbb1 $bname.pfd;
echo "バックアップ作成 $bname.pfd";
######################################################################################################################################################
使用変数
$enmen2 | |
$flag | |
$gaisuu | |
$ia1 | |
$p1 | |
$p2 |