2001.07.23更新
1.ファイルデータの頭出し<
2.タップの描画・Z並目
(注) Screw6b
のデータファィルを使います。
データファィルの入れたディレクトリーをマクロの最初の方で指定して下さい。
** 座金の描画 **
3.先頭の1文字を取る
2001.07.22
4.文字データの取得
2001.07.22
5.数値データの取得
2001.07.22
6.先頭データを取る
2001.07.22>
7.方向判断
2002.04.24 2001.07.22
8.座金の描画・描画
2001.07.22
9.座金の描画・位置、方向入力
2001.07.23 2001.07.22
10.座金の描画・メイン
2001.07.22
11.座金の描画・枠の内容定義
2001.07.22
12.座金の描画・枠の定義
2001.07.22
13.座金の描画・枠の表示
2001.07.22
14.座金の描画・データベースの作成
2001.07.22
15.座金の描画・データの表示
2001.07.22
16.座金作図の使用方法
2001.07.22
DEFINE Ma_data_line_jump
PARAMETER Pa_id
PARAMETER Pa_line
LOCAL Kioku
LOCAL Kari
LET Kioku 1
LOOP
READ_FILE 1 Kari
EXIT_IF (Kioku = Pa_line)
LET Kioku (Kioku + 1)
{カウントUP}
END_LOOP
END_DEFINE
DEFINE Ma_figure_tap_zn
LOCAL Figur_type
LOCAL Figur_color
LOCAL Env_dir
LOCAL Hole
LOCAL Center_point
LOCAL Line_data
LOCAL Iti
LOCAL P1
LOCAL Line_xf
LOCAL Line_xs
LOCAL Line_yf
LOCAL Line_ys
LOCAL Kioku
LOCAL Kazu
{ データファィルのあるディレクトリー
もし、データのファィルが仮にe:\me10\data に有れば、このマクロブロックを下記のように変更して下さい。
LET Part_dir ('e:\me10\data')
}
READ STRING '** Screw6b
ファィルのあるドライブとバス名を入力して下さい。最後の \ を忘れないように!
**'
LET Part_dir STRING
{ 現在の環境の記憶}
INQ_ENV 0
LET Env_dir (INQ 302)
{現在のカレントパス}
INQ_ENV 3
LET Figur_type (INQ 301)
{図形の現在の線種}
LET Figur_color (INQ 201)
{図形の現在の色}
READ NUMBER '** タップ穴の呼び径の値を入力して下さい **'
Hole
{デフォルトを設定の事}
{ タップデータの読み込み}
CURRENT_DIRECTORY Part_dir
{カレントパスの移動}
OPEN_INFILE 1 'Screw6b>'
{ハンドル1でファイルを開く}
CURRENT_DIRECTORY Env_dir
Ma_data_line_jump 1 4 {データの頭出し}
{ データの取得}
LET Kioku 2
{0=無 1=有 2=処理中}
LOOP
READ_FILE 1 Line_data
IF (Line_data = '-1')
{読み出しデータ終了なら}
LET Kioku 0
ELSE
LET Iti (POS Line_data ',')
IF (Hole = (VAL (SUBSTR Line_data
1 (Iti - 1)))) {有れば}
LET Kazu 1
LOOP
LET Iti
(POS Line_data ',')
LET Line_data
(SUBSTR Line_data (Iti + 1) (LEN Line_data))
EXIT_IF ( Kazu = 2)
LET Kazu
(Kazu + 1)
END_LOOP
LET Iti (POS Line_data
',')
LET P1 (VAL (SUBSTR
Line_data 1 (Iti - 1))) {データの取得}
LET Kioku 1
{Okフラグ}
END_IF
END_IF
EXIT_IF (Kioku < 2)
END_LOOP
CLOSE_FILE 1
{ファイルを閉じる}
IF (Kioku = 0)
{データがなければ}
READ NUMBER '** タップのピッチの値を入力して下さい
**' P1
LOOP
IF ((P1 * 0.541266) < (Hole /
4)) {引っかかり高が径の1/4以下}
LET Kioku 1
{Okフラグ}
END_IF
EXIT_IF (Kioku = 1)
READ NUMBER '** タップのピッチの値を入力して下さい。(入力されたピッチの値は大きすぎます。!)
**' P1
END_LOOP
END_IF
IF (Kioku = 1)
{データが有るなら}
LOOP
READ PNT '** 穴の位置を指定して下さい
**' Center_point
{ 穴}
LINE
LINEPATTERN SOLID
COLOR YELLOW
CIRCLE CENTER Center_point (Hole
/ 2)
COLOR WHITE
CIRCLE CENTER Center_point ((Hole
/ 2) - (P1 * 0.541266))
END
{ 中心線}
LINEPATTERN DASH_CENTER
COLOR GREEN
LET Line_xf (Center_point + (PNT_XY
(Hole * 0.75) 0))
LET Line_xs (Center_point + (PNT_XY
(- Hole * 0.75) 0))
LINE Line_xf Line_xs
LET Line_yf (Center_point + (PNT_XY
0 (Hole * 0.75)))
LET Line_ys (Center_point + (PNT_XY
0 (- Hole * 0.75)))
LINE Line_yf Line_ys
END
{ 復元}
LINE
LINEPATTERN Figur_type
COLOR Figur_color
END
END_LOOP
END_IF
END_DEFINE
LET Gl_fruit (SUBSTR Data00 2 (LEN Data00))
{取る}
END_DEFINE
後の文字区切りが見つからなければ、データは無いとします。
}
DEFINE Ma_data_fruit_letter
PARAMETER Data00
LOCAL Iti01
LET Iti01 (POS Data00 '"')
IF (Iti01 < 1)
LET Gl_fruit ''
ELSE
LET Gl_fruit (SUBSTR Data00 1 (Iti01 - 1))
END_IF
END_DEFINE
LOCAL Nagasa
LOCAL Iti01
LET Nagasa (LEN Data00)
LET Iti01 (POS Data00 ',')
IF ((Iti01 = 1) OR (Nagasa = 0))
{データがなければ}
LET Gl_fruit ''
ELSE_IF (Iti01 = 0)
LET Gl_fruit Data00
ELSE
LET Gl_fruit (SUBSTR Data00 1 (Iti01 - 1))
END_IF
END_DEFINE
DEFINE Ma_data_headcut_all
PARAMETER Data00
IF ((num Data00) = 34)
{文字区切りなら}
Ma_data_prowcut
Data00
{先頭の1文字を取る}
Ma_data_headcut_letter Gl_fruit
{先頭の数字データを取る}
ELSE
Ma_data_headcut_number Data00
{先頭の数字データを取る}
END_IF
END_DEFINE
DEFINE Ma_data_fruit_all
PARAMETER Data00
IF ((num Data00) = 34)
{文字区切りなら}
Ma_data_prowcut Data00
{先頭の1文字を取る}
Ma_data_fruit_letter
Gl_fruit
{文字データの取得}
ELSE
Ma_data_fruit_number
Data00
{数値データの取得}
END_IF
END_DEFINE
DEFINE Ma_figure_direction
{ 角度はラディアンで指定すること。360°を8分割しています。}
PARAMETER Direction
LET Direction (Direction MOD PI)
{一周以内にする}
{ 符号の調整}
IF (Direction > PI)
LET Direction (Direction - (PI * 2))
ELSE_IF (Direction < -PI)
LET Direction (Direction + (PI * 2))
END_IF
IF ((Direction < (PI / 8)) AND (Direction > (-PI / 8)))
{右}
LET Gl_fruit 1
ELSE_IF ((Direction >= (PI / 8)) AND (Direction < (PI
* (3 / 8)))) {右上}
LET Gl_fruit 2
ELSE_IF ((Direction >= (PI * (3 / 8))) AND (Direction <
(PI * (5 / 8)))) {上}
LET Gl_fruit 3
ELSE_IF ((Direction >= (PI * (5 / 8))) AND (Direction <
(PI * (7 / 8)))) {左上}
LET Gl_fruit 4
ELSE_IF ((Direction >= (PI * (7 / 8))) OR (Direction <=
(-PI * (7 / 8)))) {左}
LET Gl_fruit 5
ELSE_IF ((Direction <= (-PI * (5 / 8))) AND (Direction
> (-PI * (7 / 8)))) {左下}
LET Gl_fruit 6
ELSE_IF ((Direction <= (-PI * (3 / 8))) AND (Direction
> (-PI * (5 / 8)))) {下}
LET Gl_fruit 7
ELSE_IF ((Direction <= (-PI / 8)) AND (Direction > (-PI
* (3 / 8)))) {右下}
LET Gl_fruit 8
END_IF
END_DEFINE
DEFINE Ma_figure_washer
{ Dide_componen に隠れ線の色、Dide_Pattern
に隠れ線の線種が指定されています。}
PARAMETER Data00
{描画データ}
PARAMETER Kind
{ばね座金 = 1 平座金 = 2 }
PARAMETER View
{平面 = 1 側面 = 2 断面 = 3}
PARAMETER Point00
{描画位置}
PARAMETER Angle
{描画角度(ラディアン)}
LOCAL Dide_component
{隠れ線の色}
LOCAL Dide_Pattern
{隠れ線の線種}
LOCAL Color_line
{図形の現在の色}
LOCAL Type_line
{図形の現在の線種}
LOCAL Color_cline
{下書き線の現在の色}
LOCAL Type_cline
{下書き線の現在の線種}
LOCAL Color_center
{中心線の現在の色}
LOCAL Type_center
{中心線の現在の線種}
LOCAL Data01
{データ・呼び径}
LOCAL Data02
{データ・区別}
LOCAL Data03
{データ・d}
LOCAL Data04
{データ・b}
LOCAL Data05
{データ・t}
LOCAL Data06
{データ・D}
LOCAL Centeroffset
{中心線の相対伸長量}
LOCAL Point01
{基準点}
LOCAL Point02
LOCAL Point03
LOCAL Point04
LOCAL Point05
LOCAL Point06
LOCAL Point07
LOCAL Point08
LOCAL Point09
LOCAL Point10
LOCAL Point11
LOCAL Point12
LOCAL Thickness
{厚み}
LOCAL Angle_unit
{ラディアンへの変換値}
LET Dide_componen 'YELLOW'
{隠れ線の色}
LET Dide_Pattern 'DASHED'
{隠れ線の線種}
INQ_ENV 6
LET Angle_unit (INQ 3)
{ラディアンへの変換値}
{ 現在の環境の記憶}
INQ_ENV 3
LET Color_line (INQ 201)
{図形の現在の色}
LET Type_line (INQ 301)
{図形の現在の線種}
LET Color_cline (INQ 202)
{下書き線の現在の色}
LET Type_cline (INQ 302)
{下書き線の現在の線種}
LET Color_center (INQ 314)
{中心線の現在の色}
LET Type_center (INQ 307)
{中心線の現在の線種}
{ データの分解}
Ma_data_fruit_all Data00
{先頭データの取得}
LET Data01 (VAL Gl_fruit)
{呼び径}
Ma_data_headcut_all Data00
{先頭データを取る}
LET Data00 Gl_fruit
{記憶}
Ma_data_fruit_all Data00
{先頭データの取得}
LET Data02 (VAL Gl_fruit)
{区別}
Ma_data_headcut_all Data00
{先頭データを取る}
LET Data00 Gl_fruit
{記憶}
Ma_data_fruit_all Data00
{先頭データの取得}
LET Data03 (VAL Gl_fruit)
{内径 d}
IF (Kind = 1)
{ばね座金なら}
Ma_data_headcut_all
Data00
{先頭データを取る}
LET Data00 Gl_fruit
{記憶}
Ma_data_fruit_all
Data00
{先頭データの取得}
LET Data04 (VAL Gl_fruit)
{幅 b}
Ma_data_headcut_all
Data00
{先頭データを取る}
LET Data00 Gl_fruit
{記憶}
Ma_data_fruit_all
Data00
{先頭データの取得}
LET Data05 (VAL Gl_fruit)
{厚 t}
Ma_data_headcut_all
Data00
{先頭データを取る}
LET Data00 Gl_fruit
{記憶}
Ma_data_fruit_all
Data00
{先頭データの取得}
LET Data06 (VAL Gl_fruit)
{外径 D}
ELSE
{平座金なら}
Ma_data_headcut_all
Data00
{先頭データを取る}
LET Data00 Gl_fruit
{記憶}
Ma_data_fruit_all
Data00
{先頭データの取得}
LET Data06 (VAL Gl_fruit)
{外径 D}
Ma_data_headcut_all
Data00
{先頭データを取る}
LET Data00 Gl_fruit
{記憶}
Ma_data_fruit_all
Data00
{先頭データの取得}
LET Data05 (VAL Gl_fruit)
{厚 t}
END_IF
{ 描画}
IF (View = 1)
{平面なら}
CIRCLE CENTER Point00 (Data03 / 2) (Data06 /
2)
CENTERLINE (Point00 + (PNT_XY (Data03 / 2) 0))
END
ELSE
{側面・断面}
INQ_ENV 15
LET Centeroffset (INQ 7)
{中心線の相対伸長量}
{ 基準位置の算出}
LET Thickness (PNT_XY 0 Data05)
LET Point01 (PNT_XY (Data06 / 2) 0)
LET Point02 (Point01 + Thickness)
LET Point03 (PNT_XY (Data03 / 2) 0)
LET Point04 (Point03 + Thickness)
IF (Kind = 1)
{ばね座金なら}
IF (View = 2)
{側面なら}
LET Point05 (PNT_XY
(Data05 * (TAN ((PI / 12) / Angle_unit)) / 2) 0)
LET Point06 (PNT_XY
(-(Data05) * (TAN ((PI / 12) / Angle_unit)) / 2) Data05)
ELSE
{断面なら}
LET Point05 (PNT_XY
(-(Data05) * (TAN ((PI / 12) / Angle_unit)) / 2) 0)
LET Point06 (PNT_XY
(Data05 * (TAN ((PI / 12) / Angle_unit)) / 2) Data05)
END_IF
END_IF
LET Point07 (PNT_XY 0 ((Data05 / 2) - (Data03
/ 2 * (1 + Centeroffset))))
LET Point08 (PNT_XY 0 ((Data05 / 2) + (Data03
/ 2 * (1 + Centeroffset))))
LET Point09 (PNT_XY (-(Data03 / 2)) 0)
LET Point10 (Point09 + Thickness)
LET Point11 (PNT_XY (-(Data06 / 2)) 0)
LET Point12 (Point11 + Thickness)
{ 回転後の位置}
LET Point01 (Point00 + (ROT Point01 (Angle /
Angle_unit)))
LET Point02 (Point00 + (ROT Point02 (Angle /
Angle_unit)))
LET Point03 (Point00 + (ROT Point03 (Angle /
Angle_unit)))
LET Point04 (Point00 + (ROT Point04 (Angle /
Angle_unit)))
IF (Kind = 1)
{ばね座金なら}
LET Point05 (Point00 + (ROT Point05
(Angle / Angle_unit)))
LET Point06 (Point00 + (ROT Point06
(Angle / Angle_unit)))
END_IF
LET Point07 (Point00 + (ROT Point07 (Angle /
Angle_unit)))
LET Point08 (Point00 + (ROT Point08 (Angle /
Angle_unit)))
LET Point09 (Point00 + (ROT Point09 (Angle /
Angle_unit)))
LET Point10 (Point00 + (ROT Point10 (Angle /
Angle_unit)))
LET Point11 (Point00 + (ROT Point11 (Angle /
Angle_unit)))
LET Point12 (Point00 + (ROT Point12 (Angle /
Angle_unit)))
{ 描画}
LINE TWO_PTS Point01 Point02 Point11 Point12
Point01 Point11 Point02 Point12
IF (Kind = 1)
{ばね座金なら}
Point05 Point06
END_IF
END
LINE Ma_color_component
Color_center END {中心線の色}
LINE Ma_line_Pattern
Type_center END {中心線の線種}
LINE TWO_PTS Point07 Point08 END
LINE Ma_color_component
Color_line END {色を復元}
LINE Ma_line_Pattern
Type_line END
{線種を復元}
IF ((FRACT (View / 10)) > 0.2)
{断面なら}
LINE TWO_PTS Point03 Point04 Point09
Point10 END
ELSE
{側面なら}
LINE Ma_color_component
Dide_componen END {隠れ線の色}
LINE Ma_line_Pattern
Dide_Pattern END {隠れ線の線種}
LINE TWO_PTS Point03 Point04 Point09
Point10 END
LINE Ma_color_component
Color_line END {色を復元}
LINE Ma_line_Pattern
Type_line END {線種を復元}
END_IF
END_IF
END_DEFINE
DEFINE Ma_figure_washer_pointin
PARAMETER Data00
{基本描画データ}
PARAMETER Kind
{ばね座金 = 1 平座金 = 2 }
PARAMETER View
{平面 = 1 側面 = 2 断面 = 3}
LOCAL Point00
{基準指示位置}
LOCAL Point01
{方向用指示位置}
LOCAL Angle_unit
{ラディアンへの変換値}
LOCAL Direction
{方向}
LOCAL Angle
{描画角度 (平面の場合はダミーとなる)}
LOCAL Data01
{データ・呼び径}
LOCAL Data02
{データ・区別}
LOCAL Data03
{データ・d}
LOCAL Data04
{データ・b}
LOCAL Data05
{データ・t}
LOCAL Data06
{データ・D}
READ PNT '** 座金の描画位置を入力して下さい。 **' Point00
IF (View > 1)
{側面又は断面なら}
READ PNT '** 描画方向を入力しますので、上向きは上、左向きは左
下向きは下 右向きは右の位置をクリックして下さい。(斜め方向は、数値入力)
**' RUBBER_LINE Point00 Point01
INQ_ENV 6
LET Angle_unit (INQ 3)
{ラディアンへの変換値}
LET Direction (ANG (Point01 - Point00))
LET Direction (Direction * Angle_unit)
{ラディアンへ変換}
{ 角度値入力(ラディアン)}
Ma_figure_direction Direction
{方向判断}
IF (Gl_fruit = 1)
{右なら}
LET Angle (-PI / 2)
ELSE_IF (Gl_fruit = 3)
{上向きなら}
LET Angle 0
ELSE_IF (Gl_fruit = 5)
{左向きなら}
LET Angle (PI / 2)
ELSE_IF (Gl_fruit = 7)
{下向きなら}
LET Angle PI
ELSE_IF ((Gl_fruit = 2) OR (Gl_fruit = 4))
{角度入力なら}
READ NUMBER '** 描画角度を入力して下さい。
**' Angle
LET Angle (Angle * Angle_unit)
{ラディアンに変換}
ELSE
READ PNT '** 座金の面の角度指示用位置を入力します。(仮指示線の左側に描画されます。)
**' RUBBER_LINE Point00 Point01
LET Angle ((ANG (Point01 - Point00)) * Angle_unit)
END_IF
ELSE
LET Angle 0
{ダミー用}
END_IF
Ma_figure_washer Data00 Kind View Point00 Angle {座金の描画}
END_DEFINE
DEFINE Ma_figure_washer_in
PARAMETER Data00
{基本描画データ}
PARAMETER Kind
{ばね座金 = 1 平座金 = 2 }
PARAMETER View
{平面 = 1 側面 = 2 断面 = 3}
LOCAL Table_display
{データテーブル名}
IF (Data00 <> '')
{規格に有れば}
LET Table_display '##Washer_display##'
{表示用データのテーブル名}
SHOW_TABLE OFF 'Layout_101'
{テーブルの表示抹消}
DELETE_LTAB Table_display
{データテーブルの削除}
LOOP
Ma_figure_washer_pointin
Data00 Kind View {描画}
END_LOOP
END_IF
END_DEFINE
DDEFINE Frame_display_101
LOCAL Frame_name
{パーツ検索枠のテーブル名}
LOCAL Table_select
{検索データのテーブル名}
LOCAL Table_display
{表示用データのテーブル名}
LET Frame_name 'Layout_101'
{表示枠名}
LET Table_display '##Washer_display##'
{表示用データのテーブル名}
{タイトル行部分}
Table_control_icons Frame_name
{タイトル行の記号枠内を記入}
TABLE_TITLE Frame_name
Pbt_head_fg Pbt_head_bg CENTER '座 金 の 描
画 選 択 表' '' 1 3
Pbt_head_fg Pbt_title_bg1 CENTER '' '' 2 1 {二重線内の色付け}
Pbt_title_fg Pbt_title_bg1 CENTER 'ばね座金・2号'
'' 3 3
Pbt_title_fg Pbt_title_bg1 CENTER 'ばね座金・3号'
'' 3 5
Pbt_title_fg Pbt_title_bg1 CENTER '平座金・小型丸'
'' 3 9
Pbt_title_fg Pbt_title_bg1 CENTER '平座金・みがき'
'' 3 11
Pbt_title_fg Pbt_title_bg1 CENTER '平座金・並丸'
'' 3 13
Pbt_title_fg Pbt_title_bg1 CENTER '呼び' '' 4
1
Pbt_title_fg Pbt_title_bg1 CENTER '平面' ''
4 3
Pbt_title_fg Pbt_title_bg1 CENTER '側面' ''
4 4
Pbt_title_fg Pbt_title_bg1 CENTER '断面' ''
4 5
Pbt_title_fg Pbt_title_bg1 CENTER '平面' '' 4
7
Pbt_title_fg Pbt_title_bg1 CENTER '側面' ''
4 8
Pbt_title_fg Pbt_title_bg1 CENTER '断面' ''
4 9
Pbt_title_fg Pbt_title_bg1 CENTER '呼び' '' 4
11
Pbt_title_fg Pbt_title_bg1 CENTER '平面' ''
4 13
Pbt_title_fg Pbt_title_bg1 CENTER '側面' ''
4 14
Pbt_title_fg Pbt_title_bg1 CENTER '断面' ''
4 15
Pbt_title_fg Pbt_title_bg1 CENTER '平面' '' 4
17
Pbt_title_fg Pbt_title_bg1 CENTER '側面' ''
4 18
Pbt_title_fg Pbt_title_bg1 CENTER '断面' ''
4 19
Pbt_title_fg Pbt_title_bg1 CENTER '平面' '' 4
21
Pbt_title_fg Pbt_title_bg1 CENTER '側面' ''
4 22
Pbt_title_fg Pbt_title_bg1 CENTER '断面' ''
4 23
END
{データ行の部分}
TABLE_COLUMN Frame_name
COLUMN 1 1 Pbt_data_fg Pbt_data_bg LEFT ''
{呼び径}
{ ばね座金・2号}
COLUMN 3 2 Pbt_data_fg Pbt_data_bg CENTER '@s1
"@v3" @s2 1' {平面}
COLUMN 4 2 Pbt_data_fg Pbt_data_bg CENTER '@s1
"@v3" @s2 2' {側面}
COLUMN 5 2 Pbt_data_fg Pbt_data_bg CENTER '@s1
"@v3" @s2 3' {断面}
{ ばね座金・3号}
COLUMN 7 4 Pbt_data_fg Pbt_data_bg CENTER '@s1
"@v5" @s2 1' {平面}
COLUMN 8 4 Pbt_data_fg Pbt_data_bg CENTER '@s1
"@v5" @s2 2' {側面}
COLUMN 9 4 Pbt_data_fg Pbt_data_bg CENTER '@s1
"@v5" @s2 3' {断面}
COLUMN 11 1 Pbt_data_fg Pbt_data_bg LEFT ''
{呼び径}
{ 平座金・小型丸}
COLUMN 13 6 Pbt_data_fg Pbt_data_bg CENTER '@s1
"@v7" @s3 1' {平面}
COLUMN 14 6 Pbt_data_fg Pbt_data_bg CENTER '@s1
"@v7" @s3 2' {側面}
COLUMN 15 6 Pbt_data_fg Pbt_data_bg CENTER '@s1
"@v7" @s3 3' {断面}
{ 平座金・みがき}
COLUMN 17 8 Pbt_data_fg Pbt_data_bg CENTER '@s1
"@v9" @s3 1' {平面}
COLUMN 18 8 Pbt_data_fg Pbt_data_bg CENTER '@s1
"@v9" @s3 2' {側面}
COLUMN 19 8 Pbt_data_fg Pbt_data_bg CENTER '@s1
"@v9" @s3 3' {断面}
{ 平座金・並丸}
COLUMN 21 10 Pbt_data_fg Pbt_data_bg CENTER
'@s1 "@v11" @s3 1' {平面}
COLUMN 22 10 Pbt_data_fg Pbt_data_bg CENTER
'@s1 "@v11" @s3 2' {側面}
COLUMN 23 10 Pbt_data_fg Pbt_data_bg CENTER
'@s1 "@v11" @s3 3' {断面}
END
END_DEFINE
DEFINE Frame_layout_101
LOCAL Table_display
{表示用データのテーブル名}
LET Table_display '##Washer_display##'
{表示用データのテーブル名}
TRAP_ERROR
TABLE_LAYOUT 'Layout_101' Table_display
{表示テーブル名/データテーブル名}
IF (NOT CHECK_ERROR)
Bcol1 Bcol0
{表示色・背景色}
ROWS 15
{行数}
FRAME_WIDTH 5
HORIZONTAL SOLID WHITE
{水平枠}
VERTICAL SOLID WHITE
{鉛直枠}
SCROLL_BAR Bcol1 Bcol1
{スクロールバー}
TITLE_LAYOUT
(Headline_height+1) '0|*|座金の描画選択表
|x'
4
'
'
(Headline_height+1) '呼び||ばね座金・2号||ばね座金・3号||呼び||平座金・小型丸||平座金・みがき||平座金・並丸
'
(Headline_height+1) 'M150||平面|側面|断面||平面|側面|断面||呼び||平面|側面|断面||平面|側面|断面||平面|側面|断面'
END
COLUMN_LAYOUT
(Headline_height+1) 'M150||平面|側面|断面||平面|側面|断面||M150||平面|側面|断面||平面|側面|断面||平面|側面|断面'
END
END_IF
END_DEFINE
DEFINE Ma_figure_washer_frame_on
Frame_layout_101
{枠の定義}
Frame_display_101
{枠の内容定義}
SHOW_TABLE ON 'Layout_101'
{テーブルの表示}
MOVE_TABLE 'Layout_101' UPPER RIGHT OF END
{枠の表示位置/上の右}
END_DEFINE
DEFINE Ma_figure_washer_data_display
{ Part_dir に座金データファイル(washer)のディレクトリーが格納されていること。}
LOCAL Table_display
{データテーブル名}
LOCAL Env_dir
{現在のカレントパス}
LOCAL Data00
{ファイルデータの1行データ}
LOCAL Sirusi00
{判断の記憶}
LOCAL Sirusi01
{判断の記憶}
LOCAL Row_no
{テーブルの行位置}
LOCAL Kioku00
{データの仮記憶}
LOCAL Data01
{テーブルの1列目のデータ}
LOCAL Data02
{ファイルデータの1列目データ}
LOCAL Data03
{ファイルデータの2列目データ}
LOCAL Column_no01
{テーブルの列位置}
LOCAL Column_no02
{テーブルの列位置}
LET Table_display '##Washer_display##' {表示用データのテーブル名}
{ 座金データファィルのあるディレクトリー
もし、座金データのファィルが仮にe:\me10\data に有れば、このマクロブロックは下記のように記述してます。違う場合は、()の中を変更して下さい。}
LET Part_dir ('e:\me10\data')
CREATE_LTAB 50 13 Table_display {表示用データのテーブル確保}
{ 現在の環境の記憶}
INQ_ENV 0
LET Env_dir (INQ 302)
{現在のカレントパス}
{ 座金データの読み込み}
CURRENT_DIRECTORY Part_dir
{カレントパスの移動}
OPEN_INFILE 1 'washer'
{ハンドル1でファイルを開く}
CURRENT_DIRECTORY Env_dir
{復元}
Ma_data_line_jump 1 4
{データの頭出し}
READ_FILE 1 Data00
{データを1行取得}
{ データファィルの処理}
LET Sirusi00 0
{処理中の記憶}
LOOP
IF (Data00 = '-1')
{読み出しデータ終了なら}
LET Sirusi00 1
ELSE
Ma_data_headcut_all
Data00
{1列目のデータを取る}
Ma_data_headcut_all
Gl_fruit
{2列目のデータを取る}
Ma_data_fruit_all
Gl_fruit
{3列目のデータの取得}
LET Kioku00 Gl_fruit
{記憶}
Ma_data_line_jump
1 1
{データの頭出し}
{ データの1行の処理}
IF (Kioku00 = '2号')
LET Column_no01 2
LET Column_no02 3
ELSE_IF (Kioku00 = '3号')
LET Column_no01 4
LET Column_no02 5
ELSE_IF (Kioku00 = '小型丸')
LET Column_no01 6
LET Column_no02 7
ELSE_IF (Kioku00 = 'みがき丸')
LET Column_no01 8
LET Column_no02 9
ELSE_IF (Kioku00 = '並丸')
LET Column_no01 10
LET Column_no02 11
END_IF
LOOP
LET Row_no 1
{テーブルの行位置}
READ_FILE 1 Data00
{データを1行取得}
Ma_data_fruit_all
Data00
{1列目のデータの取得}
LET Data02 Gl_fruit
{ファイルデータの2列目データ}
Ma_data_headcut_all
Data00
{先頭データを取る}
Ma_data_fruit_all
Gl_fruit
{1列目のデータの取得}
EXIT_IF ((Data02 = '0') OR (Data02
= '-1'))
{ 1行登録}
LET Sirusi01 0
{処理中の記憶}
LOOP
LET Data01
(READ_LTAB Table_display Row_no 1) {処理中}
IF ((Data01
= ('M' + Data02)) OR (Data01 = '')) {登録出来るなら}
IF (Gl_fruit = '1')
WRITE_LTAB Table_display Row_no Column_no01 '○' {OKの印し}
ELSE
WRITE_LTAB Table_display Row_no Column_no01 '*' {OKの印し}
END_IF
WRITE_LTAB Table_display Row_no Column_no02 Data00 {データの登録}
IF (Data01 = '')
{未登録なら}
WRITE_LTAB Table_display Row_no 1 ('M' + Data02) {呼び径の文字}
WRITE_LTAB Table_display Row_no 12 (VAL Data02) {呼び径}
END_IF
LET Sirusi01 1
{登録完了}
END_IF
LET Row_no
(Row_no + 1)
{次}
EXIT_IF (Sirusi01 =
1)
END_LOOP
END_LOOP
END_IF
EXIT_IF (Sirusi00 = 1)
END_LOOP
CLOSE_FILE 1
{ファイルを閉じる}
WRITE_LTAB Table_display TITLE 1 'Ma_figure_washer_in'
{付加データ1・処理マクロ}
WRITE_LTAB Table_display TITLE 2 '1'
{付加データ2・ばね座金}
WRITE_LTAB Table_display TITLE 3 '2'
{付加データ3・平座金}
SORT_LTAB Table_display 12 CONFIRM {順に並べる}
END_DEFINE
DEFINE Ma_figure_washer_data_look
Ma_figure_washer_data_display
{データベースの作成}
Ma_figure_washer_frame_on
{枠の表示}
END_DEFINE
使用マクロ:
このページの1及び3から15までと、作図ページの
Ma_line_Pattern、Ma_color_component
です。
使用データファイル:
washer の座金データファィルを使います。
使い方:
1.必要なマクロをME10に入れて下さい。
2.Ma_figure_washer_data_look
を動かして選択データを表示させてください。
3.表示された、表の枠内を選んでクリックして下さい。
4.あとは、下方向に出される、メッセージに沿って、進めて下さい。
気をつけて作りました、使用してのトラブルに責任は持てませんが、
自由にお使い下さい。(伏 見 表)