ME10マクロのページです
(部品描画)

2001.07.23更新



リスト


macro.lzh#(マクロファィルです。)
Part.lzh#(データフィルです。)

   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



ファイルデータの頭出し
  1999.02.11}

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



タップの描画・Z並目
  1999.02.07
  1999.02.11}

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



先頭の1文字を取る
 1999.02.15
}
DEFINE Ma_data_prowcut
  PARAMETER Data00

  LET Gl_fruit (SUBSTR Data00 2 (LEN Data00))     {取る}
END_DEFINE



文字データの取得
 1999.02.15
  1999.02.20

  後の文字区切りが見つからなければ、データは無いとします。
}
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



数値データの取得
 1999.02.15
  1999.02.20
}
DEFINE Ma_data_fruit_number
  PARAMETER Data00

  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



先頭データを取る
 1999.02.20}

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



先頭データの取得
 1999.02.20}

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



方向判断
 2001.07.22-2002.04.24}

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



座金の描画・描画
 2001.07.22}

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



座金の描画・位置、方向入力
 2001.07.22 -2001.07.23}

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



座金の描画・メイン
 2001.07.22}

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



座金の描画・枠の内容定義
 2001.07.22}

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



座金の描画・枠の定義
 2001.07.22}

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



座金の描画・枠の表示
 2001.07.22}

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



座金の描画・データベースの作成
 2001.07.22}

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



座金の描画・データの表示
 2001.07.22}

DEFINE Ma_figure_washer_data_look
  Ma_figure_washer_data_display                   {データベースの作成}
  Ma_figure_washer_frame_on                       {枠の表示}

END_DEFINE



座金作図の使用方法

使用マクロ:
 このページの1及び3から15までと、作図ページの Ma_line_PatternMa_color_component です。

使用データファイル:
 washer の座金データファィルを使います。

使い方:
 1.必要なマクロをME10に入れて下さい
 2.Ma_figure_washer_data_look を動かして選択データを表示させてください。
 3.表示された、表の枠内を選んでクリックして下さい。
 4.あとは、下方向に出される、メッセージに沿って、進めて下さい。



気をつけて作りました、使用してのトラブルに責任は持てませんが、
自由にお使い下さい。(伏 見 表