AFsoft WebSite(エーエフソフト・ウェブサイト)
 

オペレーティング・システムについて

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
【Jw_cad 外部変形】書き出しデータの取り込み(3)
前々回から外部変形での書き出しデータ「JWC_TEMP.TXT」の取り込みについて記述しています。選択・指示した要素データを取得する事について考えていきます。
要素データはレイヤグループ、レイヤ、線色、線種、線幅、属性、文字要素の場合には更に、文字種、文字フォント、文字基準点、があり、座標値や円の半径等の各引数を持ちますが、レイヤグループは「lg○」で、レイヤは「ly○」で、以降に現れる要素データ項目のレイヤグループ、レイヤ、となります。異なるレイヤグループの要素データの場合は、その都度「lg○」が現れる事になり、それまでは同じレイヤグループの要素データとなります。
ハッチ属性などの属性は、直後の1要素データのみ有効のようです。「hp1ln」等により出現する「hhp1ln」等も直後の1要素データのみ有効と考えて良いでしょう。この場合、範囲選択の要素と区別するためのコード値を保持するようにした方が後々に利用出来るかもしれません。
レイヤグループ等は、Jw_cad上での書込みレイヤグループ(現在のレイヤグループ)等とも共用されていますので以前のコードを修正します。

プロジェクト「p027」の準備を行います。「C:\DelphiProgram\jww」フォルダの中に「p027」というフォルダを作成し、Windowsのエクスプローラ等で「p026」内のファイルを「p027」の中へコピーします(※移動しないよう注意)
Delphi6を起動します。メニュー「ファイル」→「プロジェクトを開く」を実行し、「C:\DelphiProgram\jww\p027」内の「p026.dpr」を開きます。メニュー「プロジェクト」→「オプション」を実行し、下記の設定を行います。
[アプリケーション]頁
 タイトル
p027−取り込みテスト(3)
[ディレクトリ/条件]頁
 パス及びディレクトリ
C:\DelphiProgram\jww\p027

メニュー「ファイル」→「プロジェクトに名前を付けて保存」
「C:\DelphiProgram\jww\p027」の中に「p027.dpr」として保存
「C:\DelphiProgram\jww\p027」の中に「p026.〜」のファイルが残っていますので、Windowsのエクスプローラ等で削除します。

オブジェクトインスペクタで Form1 のプロパティを変更します。
Caption取り込みテスト(3)タイトルバーに表示されます

メニュー「表示」→「プロジェクトマネージャ」
を実行し、コード画面の左側にドッキングさせておきます。
メニュー「ファイル」→「すべて保存」を行い
メニュー「プロジェクト」→「再構築」を行いエラー表示されない事を確認して下さい。

まずは、以前、現在のレイヤグループ・レイヤ・線色・線種・線幅・文字種を判定するのに初期値を「-1」にしていましたが、もし万が一(通常はあり得ないですが)存在しない場合の事を考えて、それぞれ初期値を与える事にして、別途、作業用のフラグ変数 JGW_FlgLGrp,JGW_FlgLay,JGW_FlgCol,JGW_FlgLtp,JGW_FlgWid,JGW_FlgMjsを用意して利用します。文字種と文字フォントの判定を逆にしています。こうしておかないと文字フォントが読めなくなってしまいますので。
JwwGaibu.pas
(・・・前略・・・)
var
(・・・中略・・・)
  // 判別用フラグ True:初期値=現在〜 False:現在ではない
  JGW_FlgLGrp : Boolean ; // レイヤグループ
  JGW_FlgLay : Boolean ; // レイヤ
  JGW_FlgCol : Boolean ; // 線色
  JGW_FlgLtp : Boolean ; // 線種
  JGW_FlgWid : Boolean ; // 線幅
  JGW_FlgMjs : Boolean ; // 文字種
(・・・中略・・・)
procedure InitJwwGaibu ;
(・・・中略・・・)
  JG_CurLGrp := 0 ;
  JG_CurLay := 0 ;
  JG_CurCol := 1 ;
  JG_CurLtp := 1 ;
  JG_CurWid := 0 ;
  JG_CurMjs := 1 ;
  JG_CurMjsW := 2.0;
  JG_CurMjsH := 2.0;
  JG_CurMjsD := 0.0;
  JG_CurMjsC := 1;
(・・・中略・・・)
  JGW_FlgLGrp := True;
  JGW_FlgLay := True;
  JGW_FlgCol := True;
  JGW_FlgLtp := True;
  JGW_FlgWid := True;
  JGW_FlgMjs := True;
end;
(・・・中略・・・)
procedure GetTempCode(codes:string);
(・・・中略・・・)
  else if (AnsiPos('lg',pa[0]) = 1) then begin
   i := SInt('$'+Copy(pa[0],3,1)) ;
   if (JGW_FlgLGrp) then begin
    // 現在のレイヤグループ
    JG_CurLGrp := i;
    JGW_FlgLGrp := False;
   end;
  end
  else if (AnsiPos('ly',pa[0]) = 1) then begin
   i := SInt('$'+Copy(pa[0],3,1)) ;
   if (JGW_FlgLay) then begin
    // 現在のレイヤ
    JG_CurLay := i;
    JGW_FlgLay := False;
   end;
  end
  else if (AnsiPos('lc',pa[0]) = 1) then begin
   i := SInt(Copy(pa[0],3,Length(pa[0]))) ;
   if (JGW_FlgCol) then begin
    // 現在の線色
    JG_CurCol := i;
    JGW_FlgCol := False;
   end;
  end
  else if (AnsiPos('lt',pa[0]) = 1) then begin
   i := SInt(Copy(pa[0],3,Length(pa[0]))) ;
   if (JGW_FlgLtp) then begin
    // 現在の線種
    JG_CurLtp := i;
    JGW_FlgLtp := False;
   end;
  end
  else if (AnsiPos('lw',pa[0]) = 1) then begin
   i := SInt(Copy(pa[0],3,Length(pa[0]))) ;
   if (JGW_FlgWid) then begin
    // 現在の線幅
    JG_CurWid := i;
    JGW_FlgWid := False;
   end;
  end
  else if (AnsiPos('cn$',pa[0]) = 1) then begin
   s := Copy(pa[0],4,Length(pa[0])) ;
   if (JG_CurFont = '') then begin
    // 現在の文字フォント
    JG_CurFont := s;
   end;
  end
  else if (AnsiPos('cn',pa[0]) = 1) then begin
   i := SInt(Copy(pa[0],3,Length(pa[0]))) ;
   if (JGW_FlgMjs) then begin
    // 現在の文字種
    JG_CurMjs := i;
    if (JG_CurMjs = 0)and(n >= 5) then begin
     JG_CurMjsW := SDbl(pa[1]) ;
     JG_CurMjsH := SDbl(pa[2]) ;
     JG_CurMjsD := SDbl(pa[3]) ;
     JG_CurMjsC := SInt(pa[4]) ;
    end;
    JGW_FlgMjs := False;
   end;
  end
  //
(・・・後略・・・)
メニュー「ファイル」→「すべて保存」を行い
メニュー「プロジェクト」→「再構築」を行いエラー表示されない事を確認して下さい。
 
次に、要素データにレイヤグループ等を付加するための作業用変数を用意し、その変数の初期化、代入部を追記します。
JwwGaibu.pas
(・・・前略・・・)
var
(・・・中略・・・)
  // 書き出し要素データに付加する属性
  JGW_IPNo : integer ; // 指示点&要素指示の際の番号 0:選択要素
  JGW_LGrp : integer ; // レイヤグループ
  JGW_Lay : integer ; // レイヤ
  JGW_Col : integer ; // 線色
  JGW_Ltp : integer ; // 線種
  JGW_Wid : integer ; // 線幅[1/100mm単位]
  JGW_Mjs : integer ; // 文字種
  JGW_MjsW,JGW_MjsH,JGW_MjsD : double ; // 任意サイズの場合
  JGW_MjsC : integer ;         // ・・
  JGW_Font : string ; // 文字フォント
(・・・中略・・・)
procedure InitJwwGaibu ;
(・・・中略・・・)
  JGW_IPNo := 0;
  JGW_LGrp := 0;
  JGW_Lay := 0;
  JGW_Col := 1;
  JGW_Ltp := 1;
  JGW_Wid := 0;
  JGW_Mjs := 1;
  JGW_MjsW := 2.0;
  JGW_MjsH := 2.0;
  JGW_MjsD := 0.0;
  JGW_MjsC := 1;
  JGW_Font := '<MS ゴシック>';
end;
(・・・中略・・・)
procedure GetTempCode(codes:string);
(・・・中略・・・)
  else if (AnsiPos('lg',pa[0]) = 1) then begin
   i := SInt('$'+Copy(pa[0],3,1)) ;
   if (JGW_FlgLGrp) then begin
    // 現在のレイヤグループ
    JG_CurLGrp := i;
    JGW_FlgLGrp := False;
   end;
   JGW_LGrp := i;
  end
  else if (AnsiPos('ly',pa[0]) = 1) then begin
   i := SInt('$'+Copy(pa[0],3,1)) ;
   if (JGW_FlgLay) then begin
    // 現在のレイヤ
    JG_CurLay := i;
    JGW_FlgLay := False;
   end;
   JGW_Lay := i;
  end
  else if (AnsiPos('lc',pa[0]) = 1) then begin
   i := SInt(Copy(pa[0],3,Length(pa[0]))) ;
   if (JGW_FlgCol) then begin
    // 現在の線色
    JG_CurCol := i;
    JGW_FlgCol := False;
   end;
   JGW_Col := i;
  end
  else if (AnsiPos('lt',pa[0]) = 1) then begin
   i := SInt(Copy(pa[0],3,Length(pa[0]))) ;
   if (JGW_FlgLtp) then begin
    // 現在の線種
    JG_CurLtp := i;
    JGW_FlgLtp := False;
   end;
   JGW_Ltp := i;
  end
  else if (AnsiPos('lw',pa[0]) = 1) then begin
   i := SInt(Copy(pa[0],3,Length(pa[0]))) ;
   if (JGW_FlgWid) then begin
    // 現在の線幅
    JG_CurWid := i;
    JGW_FlgWid := False;
   end;
   JGW_Wid := i;
  end
  else if (AnsiPos('cn$',pa[0]) = 1) then begin
   s := Copy(pa[0],4,Length(pa[0])) ;
   if (JG_CurFont = '') then begin
    // 現在の文字フォント
    JG_CurFont := s;
   end;
   JGW_Font := s;
  end
  else if (AnsiPos('cn',pa[0]) = 1) then begin
   i := SInt(Copy(pa[0],3,Length(pa[0]))) ;
   if (JGW_FlgMjs) then begin
    // 現在の文字種
    JG_CurMjs := i;
    if (JG_CurMjs = 0)and(n >= 5) then begin
     JG_CurMjsW := SDbl(pa[1]) ;
     JG_CurMjsH := SDbl(pa[2]) ;
     JG_CurMjsD := SDbl(pa[3]) ;
     JG_CurMjsC := SInt(pa[4]) ;
    end;
    JGW_FlgMjs := False;
   end;
   JGW_Mjs := i;
   if (JGW_Mjs = 0)and(n >= 5) then begin
    JGW_MjsW := SDbl(pa[1]) ;
    JGW_MjsH := SDbl(pa[2]) ;
    JGW_MjsD := SDbl(pa[3]) ;
    JGW_MjsC := SInt(pa[4]) ;
   end;
  end
  //
(・・・後略・・・)
メニュー「ファイル」→「すべて保存」を行い
メニュー「プロジェクト」→「再構築」を行いエラー表示されない事を確認して下さい。
 
次に指示点の指定&線/円/文字データの選択の際の対応について考えます。この場合の書き出しデータは「hhp○ln」「hhp○ci」「hhp○ch」の後に線/円/文字データが書き出されます。縦字でも「hhp○ch」です(「hhp○cv」とはなりません)。これらが書き出された場合、○の番号を変数 JGW_IPNo に代入し、次に要素データが来た場合、この内容を入れます。その直後に変数 JGW_IPNo に「0」を代入します。範囲選択で書き出される要素データは「0」として区別出来るようにします(※後述)。
JwwGaibu.pas
(・・・前略・・・)
procedure GetTempCode(codes:string);
(・・・中略・・・)
  end
  else if (AnsiPos('hhp',pa[0]) = 1) then begin
   j := Length(pa[0]);
   i := AnsiPos('ln',pa[0]);  if (i > 4) then j := i-4;
   i := AnsiPos('ci',pa[0]);  if (i > 4) then j := i-4;
   i := AnsiPos('ch',pa[0]);  if (i > 4) then j := i-4;
   s := Copy(pa[0],4,j);
   JGW_IPNo := SInt(s);
  end;
(・・・後略・・・)
 
次にハッチ属性などの属性について考えます。これも「hhp〜」同様、直後の要素データに付加するもので、次に要素データが来た場合、この内容を入れ、その直後に変数内容をクリアします。なお、この属性は Jw_cad データ的にはフラグ属性、つまり、複数の重複が可能です(※機能的に有り得ないものもありますが)。それを可能にするため、属性「z1」「z2」「z3」「z4」「z5」が書き出されたらそれぞれ 1,2,4,8,16 の値を加算し、後々の判定ではand演算で属性を調べるという風にします。変数名は JGW_Attr とします。
JwwGaibu.pas
(・・・前略・・・)
var
(・・・中略・・・)
  JGW_Attr : integer ; // 属性 +1:ハッチ +2:図形 +4:寸法 +8:建具(包絡対象外) +16:建具(包絡対象)
(・・・中略・・・)
procedure InitJwwGaibu ;
(・・・中略・・・)
  JGW_Attr := 0;
end;
(・・・中略・・・)
procedure GetTempCode(codes:string);
(・・・中略・・・)
  end
  else if (pa[0] = 'z1') then begin
   // ハッチ属性
   if ((JGW_Attr and 1) = 0) then
    JGW_Attr := JGW_Attr + 1;
  end
  else if (pa[0] = 'z2') then begin
   // 図形属性
   if ((JGW_Attr and 2) = 0) then
    JGW_Attr := JGW_Attr + 2;
  end
  else if (pa[0] = 'z3') then begin
   // 寸法属性
   if ((JGW_Attr and 4) = 0) then
    JGW_Attr := JGW_Attr + 4;
  end
  else if (pa[0] = 'z4') then begin
   // 建具属性(包絡処理対象外の指定)
   if ((JGW_Attr and 8) = 0) then
    JGW_Attr := JGW_Attr + 8;
  end
  else if (pa[0] = 'z5') then begin
   // 建具属性(包絡処理対象 の指定)
   if ((JGW_Attr and 16) = 0) then
    JGW_Attr := JGW_Attr + 16;
  end
  //
(・・・後略・・・)
 
次に文字基準点について考えます。文字基準点は「REM #zc」指定時に文字要素データの前に「cc○」として現れます。指定されていない場合は0:左下状態となります。変数名 JGW_Mbs とします。
JwwGaibu.pas
(・・・前略・・・)
var
(・・・中略・・・)
  JGW_Mbs : integer ; // 文字基準点 0:左下 1:中下 2:右下 3:左中 4:中中 5:右中 6:左上 7:中上 8:右上
(・・・中略・・・)
procedure InitJwwGaibu ;
(・・・中略・・・)
  JGW_Mbs := 0;
end;
(・・・中略・・・)
procedure GetTempCode(codes:string);
(・・・中略・・・)
  end
  else if (AnsiPos('cc',pa[0]) = 1) then begin
   i := SInt(Copy(pa[0],3,1)) ;
   if (i < 0)or(i > 8) then i:=0;
   JGW_Mbs := i;
  end
(・・・後略・・・)
 
次に曲線データについて考えます。Jw_cad での曲線属性は、まるでグループ化のように種々様々な要素データを1つの同じ「曲線」というよりは「まとまり」として扱えます。しかし、外部変形ではそのようにはなっていないようです。「pl」の後に線データだけが許されており、「#」や「pl」や別の要素データによってリセットされるようです。そのため、線データの引数として曲線データを示す数値を入れる事とします。1,2,3,・・・とし、0値は曲線データではない事を示します。ある曲線データとある曲線データの間に通常の線データが書き出される事もありますので、曲線データ番号以外にもう1つフラグ変数を用意する事とし、それぞれ、JGW_CrvNo、JGW_CrvFl、とします。「pl」が来たらJGW_CrvFl を True にして、JGW_CrvNo値を+1して後に線データが来たらJGW_CrvNo値を代入する事にします。JGW_CrvFl が False の場合は 0値を代入する事にします。「#」や他の要素データが来た場合、JGW_CrvFl に False を入れます。
JwwGaibu.pas
(・・・前略・・・)
var
(・・・中略・・・)
  JGW_CrvNo: integer ; // 曲線データ番号
  JGW_CrvFl: Boolean ; // 曲線データか否か
(・・・中略・・・)
procedure InitJwwGaibu ;
(・・・中略・・・)
  JGW_CrvNo:= 0;
  JGW_CrvFl:= False;
end;
(・・・中略・・・)
procedure GetTempCode(codes:string);
(・・・中略・・・)
  end
  else if (pa[0] = 'pl') then begin
   // 曲線データ(後続の線データにのみ有効)
   Inc(JGW_CrvNo);
   JGW_CrvFl := True;
  end
  else if (pa[0] = '#') then begin
   // コメント
   // 曲線データのエンドコードとしても利用される
   JGW_CrvFl := False;
  end
(・・・後略・・・)
 
次に寸法図形データについて考えます。「msg」のあと線データ、寸法値文字データ「cs」が続きます。半径値でも直径値でも「cs」のようです。「msg」が来たらフラグ変数 JWG_DimFl を True にします。その直後の線データは寸法図形の線データとするようにして、更にその後の寸法値データは寸法図形の寸法値データとするようにします。その処理のあとフラグ変数 JWG_DimFl を False にします。また、その他の要素データ、コメント「#」が来た場合も False にします。
「msg」直後の線データは専用の変数に格納し、更に直後の寸法値データが来た時に、寸法図形要素データを用意し、専用変数内の線データと組み合わせて登録します。その後、専用変数内をクリアし、フラグ変数を False にします。仮に専用変数内に線データが入っていない場合や寸法値データが無い場合は無効データとなります。
JwwGaibu.pas
(・・・前略・・・)
var
(・・・中略・・・)
  JGW_DimFl: Boolean ; // 寸法図形フラグ(以降、線・寸法値が続く)
(・・・中略・・・)
procedure InitJwwGaibu ;
(・・・中略・・・)
  JGW_DimFl:= False;
end;
(・・・中略・・・)
procedure GetTempCode(codes:string);
(・・・中略・・・)
  end
  else if (pa[0] = 'pl') then begin
   // 曲線データ(後続の線データにのみ有効)
   Inc(JGW_CrvNo);
   JGW_CrvFl := True;
   JGW_DimFl := False; // 寸法図形モード解除
  end
  else if (pa[0] = 'msg') then begin
   // 寸法図形データ(後続の線・寸法値データに影響)
   JGW_DimFl := True;
   JGW_CrvFl := False; // 曲線データ解除
  end
  else if (pa[0] = '#') then begin
   // コメント
   // 曲線データのエンドコードとしても利用される
   JGW_CrvFl := False;
   JGW_DimFl := False; // 寸法図形にもエンドコード?
  end
(・・・後略・・・)
 
次に点の線色番号について考えます。点の線色番号は「pn○」で書き出されますので、変数 JGW_Col とは別の変数 JGW_PtCol として保持するようにします。
JwwGaibu.pas
(・・・前略・・・)
var
(・・・中略・・・)
  JGW_PtCol: integer ; // 点線色
(・・・中略・・・)
procedure InitJwwGaibu ;
(・・・中略・・・)
  JGW_PtCol:= 1;
end;
(・・・中略・・・)
procedure GetTempCode(codes:string);
(・・・中略・・・)
  end
  else if (AnsiPos('pn',pa[0]) = 1) then begin
   // 点の線色番号
   JGW_PtCol := SInt(Copy(pa[0],3,Length(pa[0]))) ;
  end
(・・・後略・・・)
 
次に、ソリッド図形のための任意色設定について考えます。任意色設定は、既に述べた線色設定「lc」において、線色番号=10、となり、次の引数で RGB値が格納されます。変数 JGW_SlCol として格納するようにします。
JwwGaibu.pas
(・・・前略・・・)
var
(・・・中略・・・)
  JGW_SlCol: integer ; // ソリッド図形任意色
(・・・中略・・・)
procedure InitJwwGaibu ;
(・・・中略・・・)
  JGW_SlCol:= 0;
end;
(・・・中略・・・)
procedure GetTempCode(codes:string);
(・・・中略・・・)
  else if (AnsiPos('lc',pa[0]) = 1) then begin
   i := SInt(Copy(pa[0],3,Length(pa[0]))) ;
   if (JGW_FlgCol) then begin
    // 現在の線色
    JG_CurCol := i;
    JGW_FlgCol := False;
   end;
   JGW_Col := i;
   if (JGW_Col = 10)and(n >= 2) then begin
    JGW_SlCol := SInt(pa[1]);
   end;
  end
(・・・後略・・・)
 
次に、レイヤグループ状態、レイヤグループ名、レイヤ状態、レイヤ名について考えます。状態を示す数値、名前を示す文字列を変数に入れる訳ですが、これも動的配列の変数として用意して代入する事とします。終了時で動的配列のメモリ解放を行います。
JwwGaibu.pas
(・・・前略・・・)
var
(・・・中略・・・)
  // レイヤ状態・レイヤ名
  JG_LGrpStat : array of integer ; // レイヤグループ状態
  JG_LGrpName : array of string ; // レイヤグループ名
  JG_LayStat : array of integer ; // レイヤ状態
  JG_LayName : array of string ; // レイヤ名
(・・・中略・・・)
procedure InitJwwGaibu ;
(・・・中略・・・)
  //
  SetLength(JG_LGrpStat,16);
  SetLength(JG_LGrpName,16);
  SetLength(JG_LayStat,256);
  SetLength(JG_LayName,256);
  for i:=0 to 15 do begin
   JG_LGrpStat[i] := 0;
   JG_LGrpName[i] := '';
  end;
  for i:=0 to 255 do begin
   JG_LayStat[i] := 0;
   JG_LayName[i] := '';
  end;
(・・・中略・・・)
procedure EndJwwGaibu ;
begin
  JG_LGrpStat := nil;
  JG_LGrpName := nil;
  JG_LayStat := nil;
  JG_LayName := nil;
(・・・中略・・・)
procedure GetTempCode(codes:string);
(・・・中略・・・)
  end
  else if (AnsiPos('lgn',pa[0]) = 1) then begin
   s := Copy(pa[0],4,Length(pa[0])) ;
   JG_LGrpName[JGW_LGrp] := s;
  end
  else if (AnsiPos('lyn',pa[0]) = 1) then begin
   s := Copy(pa[0],4,Length(pa[0])) ;
   JG_LayName[JGW_LGrp*16+JGW_Lay] := s;
  end
  else if (AnsiPos('lg',pa[0]) = 1) then begin
   i := SInt('$'+Copy(pa[0],3,1)) ;
   if (i < 0)or(i > 15) then i:=0; // 一応抑え
   if (JGW_FlgLGrp) then begin
    // 現在のレイヤグループ
    JG_CurLGrp := i;
    JGW_FlgLGrp := False;
   end;
   JGW_LGrp := i;
   if (n >= 2) then begin
    JG_LGrpStat[JGW_LGrp] := SInt(pa[1]);
   end;
  end
  else if (AnsiPos('ly',pa[0]) = 1) then begin
   i := SInt('$'+Copy(pa[0],3,1)) ;
   if (i < 0)or(i > 15) then i:=0; // 一応抑え
   if (JGW_FlgLay) then begin
    // 現在のレイヤ
    JG_CurLay := i;
    JGW_FlgLay := False;
   end;
   JGW_Lay := i;
   if (n >= 2) then begin
    JG_LayStat[JGW_LGrp*16+JGW_Lay] := SInt(pa[1]);
   end;
  end
(・・・後略・・・)
レイヤグループ状態、レイヤグループ名、レイヤ状態、レイヤ名の内容を画面表示出来るよう、Unit1のメモ内に記述するようにしてみます。
Unit1.pas
(・・・前略・・・)
// 起動時
procedure TForm1.FormShow(Sender: TObject);
var
i,j : integer ;
(・・・中略・・・)
  // レイヤグループ状態、レイヤグループ名、レイヤ状態、レイヤ名
  for i:=0 to 15 do begin
   s := 'レイヤグループ['+IntToHex(i,1)+']';
   s := s + '【状態:'+IntToStr(JG_LGrpStat[i])+'】';
   s := s + '名前:'+JG_LGrpName[i];
   Memo1.Lines.Add(s);
   for j:=0 to 15 do begin
    s := '  レイヤ('+IntToHex(j,1)+')';
    s := s + '【状態:'+IntToStr(JG_LayStat[i*16+j])+'】';
    s := s + '名前:'+JG_LayName[i*16+j];
    Memo1.Lines.Add(s);
   end;
  end;
  //
  with StringGrid1 do begin
(・・・後略・・・)
メニュー「ファイル」→「すべて保存」を行い
メニュー「プロジェクト」→「再構築」を行いエラー表示されない事を確認して下さい。
Windowsのエクスプローラ等で、「C:\DelphiProgram\jww\p027」内に作成された「p027.exe」をフォルダ「Gapp」内へコピーします。
 
「Gapp」フォルダ(C:\JWW\Gapp)内に以下のバッチファイルを用意しておきます。
p027_取り込みテスト(3).bat
REM p027−取り込みテスト(3)
@echo off
REM #jww
REM #cd
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #1- 第1点を指示して下さい。(L)free (R)Read
REM #2 第2点を指示して下さい。(L)free (R)Read
REM #h1
REM #hc 範囲選択をして下さい。
REM #g1
REM #hr
start /w p027.exe
 
Jw_cadを起動し、Jw_cad 標準添付の「Aマンション平面例.jww」を開いて
メニュー→その他→外部変形
「ファイル選択」画面でフォルダ「Gapp」を指定し、上記で作成したバッチファイル「p027_取り込みテスト(3).bat」を実行して下さい。第1点、第2点を指定し、範囲選択をすると、以下のような画面が表示されます。

画面上部のメモを下の方へスクロールさせると・・・

レイヤ状態、レイヤ名を見る事が出来ます。
 
 
今回はここまでとします。
 
今回のバッチファイルと実行ファイル、及び、ソースファイルについては、Pcataサイトに置いておきますので必要な方はそちらからダウンロードして下さい。
 
 
CAD装置(1)
CAD装置(2)
メディア
AutoCADの
DIESELマクロ
CSV
DXF
PCES
IGES
STEP
数学とCAD
CAD作ろ!
M7
Jw_cad
 [BACK]
 [NEXT]
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015 By AFsoft All Rights Reserved.