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

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

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
【Jw_cad 外部変形】補助線の作図(2)
前回の補助線の作図にもう少し追加を行っていきたいと思います。まずは既に作成した分割点の作図を補助線用として追加します。それではバッチファイルを用意します。
p040_補助線の作図.bat
REM p040:補助線の作図
@echo off
GOTO EXE-%1
REM
REM ----- 1)2点指定 実行プログラム -----
:EXE-1
start /w p040.exe /R1
GOTO END
REM
REM ----- 2)水平線 実行プログラム -----
:EXE-2
start /w p040.exe /R2
GOTO END
REM
REM ----- 3)垂直線 実行プログラム -----
:EXE-3
start /w p040.exe /R3
GOTO END
REM
REM ----- 4)角度線 実行プログラム -----
:EXE-4
start /w p040.exe /R4 %2
GOTO END
REM
REM ----- 5)平行線 実行プログラム -----
:EXE-5
start /w p040.exe /R5
GOTO END
REM
REM ----- 6)直交線 実行プログラム -----
:EXE-6
start /w p040.exe /R6
GOTO END
REM
REM ----- 7)傾き線 実行プログラム -----
:EXE-7
start /w p040.exe /R7 %2
GOTO END
REM
REM ----- 8)その他 -----
:EXE-8
REM
GOTO END
REM
REM ----- 9)設定 実行プログラム -----
:EXE-9
start /w p040.exe
GOTO END
REM
REM
REM ----- ----- ----- ----- ----- -----
REM #jww
REM #cd
REM #hc 補助線を作図する外部変形です。機能を選択して下さい(1〜9)
REM #hm補助線の作図|1)2点指定|2)水平線|3)垂直線|4)角度線|5)平行線|6)直交線|7)傾き線|8)その他|9)設定|
REM
REM #:1 -----2点指定-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #1-始点を指示して下さい。(L)free (R)Read
REM #2終点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #:2 -----水平線-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #1 通過点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #:3 -----垂直線-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #1 通過点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #:4 -----角度線-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #c 角度を入力して下さい。[°]
REM #1 通過点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #:5 -----平行線-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #1ln 基準線を指示して下さい。
REM #2 通過点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #:6 -----直交線-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #1ln 基準線を指示して下さい。
REM #2 通過点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #hr
REM #e
REM
REM #:7 -----傾き線-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #c 傾き角度を入力して下さい。[°]
REM #1ln 基準線を指示して下さい。
REM #2 通過点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #:8 -----その他-----
REM #h/p040a_補助線の作図.bat
REM #e
REM
REM #:9 -----設定-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #hr
REM #e
REM
:END
REM 終了
p040a_補助線の作図.bat
REM p040a:補助線の作図
@echo off
GOTO EXE-%1
REM
REM ----- 1)点 実行プログラム -----
:EXE-1
start /w p040.exe /R8
GOTO END
REM
REM ----- 2)円1 実行プログラム -----
:EXE-2
start /w p040.exe /R9
GOTO END
REM
REM ----- 3)円2 実行プログラム -----
:EXE-3
start /w p040.exe /R10
GOTO END
REM
REM ----- 4)分割点 実行プログラム -----
:EXE-4
start /w p040.exe /R11
GOTO END
REM
REM ----- 9)戻る -----
:EXE-9
REM
GOTO END
REM
REM
REM ----- ----- ----- ----- ----- -----
REM #jww
REM #cd
REM #hc 補助線を作図する外部変形です。機能を選択して下さい(1〜9)
REM #hm補助線の作図|1)点|2)円1|3)円2|4)分割点|##|##|##|##|9)戻る|
REM
REM #:1 -----点-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #1 配置点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #:2 -----円1-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #1- 中心点を指示して下さい。(L)free (R)Read
REM #2 半径指示点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #:3 -----円2-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #1 中心点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #:4 -----分割点-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #bz
REM #gn
REM #h1
REM #hc 範囲選択をして下さい。
REM #g1
REM #hr
REM #e
REM
REM #:9 -----戻る-----
REM #h/p040_補助線の作図.bat
REM #e
REM
:END
REM 終了
 
プロジェクト「p040」の準備を行います。「C:\DelphiProgram\jww」フォルダの中に「p040」というフォルダを作成し、Windowsのエクスプローラ等で「p039」内のファイルを「p040」の中へコピーします。(※移動しないよう注意)
Delphi6を起動します。メニュー「ファイル」→「プロジェクトを開く」を実行し、「C:\DelphiProgram\jww\p040」内の「p039.dpr」を開きます。メニュー「プロジェクト」→「オプション」を実行し、下記の設定を行います。
[アプリケーション]頁
 タイトル
p040−補助線の作図
[ディレクトリ/条件]頁
 パス及びディレクトリ
C:\DelphiProgram\jww\p040

メニュー「ファイル」→「プロジェクトに名前を付けて保存」
「C:\DelphiProgram\jww\p040」の中に「p040.dpr」として保存
「C:\DelphiProgram\jww\p040」の中に「p039.〜」のファイルが残っていますので、Windowsのエクスプローラ等で削除します。
プロジェクトマネージャを表示しコード画面の左側にドッキングしておきます。

それでは、以前の分割点のプログラムを見ながら追加していきます。
Unit1.pas
(・・・前略・・・)
type
  TForm1 = class(TForm)
 (・・・)
  private
  (・・・)
   c10_r,c10_h,c10_a : double ;
   c11_n : integer ;
   procedure OpenDatFile ;
(・・・)
// データファイルを読み込む
procedure TForm1.OpenDatFile ;
(・・・)
  c10_a := 0.0;
  c11_n := 2;
 (・・・)
   ReadLn(F, s);  c10_a:= SDbl(s);
   ReadLn(F, s);  c11_n:= SInt(s);
(・・・)
// データファイルを保存する
procedure TForm1.SaveDatFile ;
(・・・)
   WriteLn(F, FloatToStr(c10_a));
   WriteLn(F, IntToStr(c11_n));
(・・・)
// 起動時
procedure TForm1.FormShow(Sender: TObject);
(・・・)
  LabelA3.Visible := False; EditA3.Visible := False;
  if (ParamCount >= 1) then begin
   if (ParamStr(1) = '/R10') then begin
   (・・・)
    sflag := True ;
   end
   else if (ParamStr(1) = '/R11') then begin
    // 分割点
    LabelA1.Visible := True; EditA1.Visible := True;
    LabelA1.Caption := '分割数';
    EditA1.Text := FloatToStr(c11_n);
    PageControl1.ActivePage := TabSheet1 ;
    sflag := True ;
   end;
(・・・)
// [OK]
procedure TForm1.Button1Click(Sender: TObject);
var
  flag : Boolean ;
  w1,w2,w3,w4,w5,w6 : double ;
  i,j,k : integer ;
begin
(・・・)
  if (ParamCount >= 1) then begin
   flag := False;
   if (ParamStr(1) = '/R10') then begin
   (・・・)
    flag := True;
   end
   else if (ParamStr(1) = '/R11') then begin
    c11_n := SInt(EditA1.Text);
    if (c11_n < 2)or(c11_n > 10000) then exit;
    flag := True;
   end;
   //
   if (flag) then begin
    if (ParamStr(1) = '/R10') then begin
    (・・・)
    end
    else if (ParamStr(1) = '/R11') then begin
     SendMem('bz');   // 図寸モード
     S_PCol(9,0);
     // 線データの分割
     for i:=0 to JW_EntLineN-1 do begin
      with JW_EntLine[i] do begin
       w1 := Dist(x1,y1,x2,y2)/c11_n;
       w2 := Angle(x2-x1,y2-y1);
       w3 := x1;
       w4 := y1;
       for j:=1 to c11_n-1 do begin
        w3 := w3 + w1*Cos(w2);
        w4 := w4 + w1*Sin(w2);
        S_Ten(w3,w4);
       end;
      end;
     end;
     // 円データの分割
     for i:=0 to JW_EntCircN-1 do begin
      with JW_EntCirc[i] do begin
       w2 := 0.0;
       for j:=1 to c11_n do begin
        w3 := cx + cr*Cos(w2);
        w4 := cy + cr*Sin(w2);
        S_Ten(w3,w4);
        w2 := w2 + 2.0*Pi/c11_n ;
       end;
      end;
     end;
     // 弧・楕円データの分割
     for i:=0 to JW_EntArcN-1 do begin
      with JW_EntArc[i] do begin
       w1 := sa/180.0*Pi ;
       w2 := ea - sa ;
       while (w2 <= 0.0) do w2 := w2 + 360.0;
       while (w2 > 360.0) do w2 := w2 - 360.0;
       k := c11_n - 1 ;
       if (Abs(w2-360.0) <= _LIMITN) then begin
        k := c11_n;
        w1:= 0.0;
       end;
       w2 := w2/c11_n/180*Pi ;
       for j:=1 to k do begin
        w1 := w1 + w2 ;
        w3 := cr  *Cos(w1);
        w4 := cr*he*Sin(w1);
        Rev(w5,w6,w3,w4,0.0,0.0,ka);
        w3 := cx + w5 ;
        w4 := cy + w6 ;
        S_Ten(w3,w4);
       end;
      end;
     end;
    end;
(・・・後略・・・)
メニュー「ファイル」→「すべて保存」を行い
メニュー「プロジェクト」→「再構築」を行いエラー表示されない事を確認して下さい。
Windowsのエクスプローラ等で、「C:\DelphiProgram\jww\p040」内に作成された「p040.exe」をフォルダ「Gapp」内へコピーします。外部変形を実行して動作確認をしてみて下さい。
 

 
次に、同心円の作図を行うようにします。幾つかパターンはあると思いますが、ここでは、開始半径・増分・作図数の入力を行うようにします。まずはバッチファイルから。
p040a_補助線の作図.bat
REM p040a:補助線の作図
@echo off
GOTO EXE-%1
REM
REM ----- 1)点 実行プログラム -----
:EXE-1
start /w p040.exe /R8
GOTO END
REM
REM ----- 2)円1 実行プログラム -----
:EXE-2
start /w p040.exe /R9
GOTO END
REM
REM ----- 3)円2 実行プログラム -----
:EXE-3
start /w p040.exe /R10
GOTO END
REM
REM ----- 4)分割点 実行プログラム -----
:EXE-4
start /w p040.exe /R11
GOTO END
REM
REM ----- 5)同心円 実行プログラム -----
:EXE-5
start /w p040.exe /R12
GOTO END
REM
REM ----- 9)戻る -----
:EXE-9
REM
GOTO END
REM
REM
REM ----- ----- ----- ----- ----- -----
REM #jww
REM #cd
REM #hc 補助線を作図する外部変形です。機能を選択して下さい(1〜9)
REM #hm補助線の作図|1)点|2)円1|3)円2|4)分割点|5)同心円|##|##|##|9)戻る|
REM
REM #:1 -----点-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #1 配置点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #:2 -----円1-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #1- 中心点を指示して下さい。(L)free (R)Read
REM #2 半径指示点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #:3 -----円2-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #1 中心点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #:4 -----分割点-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #bz
REM #gn
REM #h1
REM #hc 範囲選択をして下さい。
REM #g1
REM #hr
REM #e
REM
REM #:5 -----同心円-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #1 中心点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #:9 -----戻る-----
REM #h/p040_補助線の作図.bat
REM #e
REM
:END
REM 終了
次にプログラム追加修正です。
Unit1.pas
(・・・前略・・・)
type
  TForm1 = class(TForm)
 (・・・)
  private
  (・・・)
   c11_n : integer ;
   c12_r,c12_d : double ;
   c12_n : integer ;
   procedure OpenDatFile ;
(・・・)
// データファイルを読み込む
procedure TForm1.OpenDatFile ;
(・・・)
  c11_n := 2;
  c12_r := 100.0;
  c12_d := 10.0;
  c12_n := 2;
 (・・・)
   ReadLn(F, s);  c11_n:= SInt(s);
   ReadLn(F, s);  c12_r:= SDbl(s);
   ReadLn(F, s);  c12_d:= SDbl(s);
   ReadLn(F, s);  c12_n:= SInt(s);
(・・・)
// データファイルを保存する
procedure TForm1.SaveDatFile ;
(・・・)
   WriteLn(F, IntToStr(c11_n));
   WriteLn(F, FloatToStr(c12_r));
   WriteLn(F, FloatToStr(c12_d));
   WriteLn(F, IntToStr(c12_n));
(・・・)
// 起動時
procedure TForm1.FormShow(Sender: TObject);
(・・・)
  LabelA3.Visible := False; EditA3.Visible := False;
  if (ParamCount >= 1) then begin
   if (ParamStr(1) = '/R10') then begin
   (・・・)
   end
   else if (ParamStr(1) = '/R11') then begin
   (・・・)
   end
   else if (ParamStr(1) = '/R12') then begin
    // 同心円
    LabelA1.Visible := True; EditA1.Visible := True;
    LabelA2.Visible := True; EditA2.Visible := True;
    LabelA3.Visible := True; EditA3.Visible := True;
    LabelA1.Caption := '開始半径';
    LabelA2.Caption := '半径増分';
    LabelA3.Caption := '作図数';
    EditA1.Text := FloatToStr(c12_r);
    EditA2.Text := FloatToStr(c12_d);
    EditA3.Text := IntToStr(c12_n);
    PageControl1.ActivePage := TabSheet1 ;
    sflag := True ;
   end;
(・・・)
// [OK]
procedure TForm1.Button1Click(Sender: TObject);
(・・・)
  if (ParamCount >= 1) then begin
   flag := False;
   if (ParamStr(1) = '/R10') then begin
   (・・・)
   end
   else if (ParamStr(1) = '/R11') then begin
   (・・・)
   end
   else if (ParamStr(1) = '/R12') then begin
    c12_r := SDbl(EditA1.Text);
    c12_d := SDbl(EditA2.Text);
    c12_n := SInt(EditA3.Text);
    if (c12_r <= _LIMIT) then exit;
    if (Abs(c12_d) <= _LIMIT) then exit;
    if (c12_n < 1)or(c12_n > 10000) then exit;
    flag := True;
   end;
   //
   if (flag) then begin
    if (ParamStr(1) = '/R10') then begin
    (・・・)
    end
    else if (ParamStr(1) = '/R11') then begin
    (・・・)
    end
    else if (ParamStr(1) = '/R12') then begin
     w1 := JG_IPoints[1].x ;
     w2 := JG_IPoints[1].y ;
     w3 := c12_r ;
     for i:=1 to c12_n do begin
      S_Circle(w1,w2,w3);
      w3 := w3 + c12_d ;
      if (w3 <= _LIMIT) then break;
     end;
    end;
(・・・後略・・・)
メニュー「ファイル」→「すべて保存」を行い
メニュー「プロジェクト」→「再構築」を行いエラー表示されない事を確認して下さい。

次に、水平線・垂直線・角度線の連続版と平行線・直交線・傾き線の連続版を追加します。しかし項目は残り3つ。6つも入りませんし、これ以上メニューを増やしたくないので、水平線・垂直線・角度線をまとめて連続角度線、平行線・直交線・傾き線をまとめて連続傾き線、とします。水平線・平行線の場合は角度を「0」に、垂直線・直交線の場合は角度を「90」にしてもらうようにします。それではバッチファイルから。
p040a_補助線の作図.bat
REM p040a:補助線の作図
@echo off
GOTO EXE-%1
REM
REM ----- 1)点 実行プログラム -----
:EXE-1
start /w p040.exe /R8
GOTO END
REM
REM ----- 2)円1 実行プログラム -----
:EXE-2
start /w p040.exe /R9
GOTO END
REM
REM ----- 3)円2 実行プログラム -----
:EXE-3
start /w p040.exe /R10
GOTO END
REM
REM ----- 4)分割点 実行プログラム -----
:EXE-4
start /w p040.exe /R11
GOTO END
REM
REM ----- 5)同心円 実行プログラム -----
:EXE-5
start /w p040.exe /R12
GOTO END
REM
REM ----- 6)連続角度線 実行プログラム -----
:EXE-6
start /w p040.exe /R13
GOTO END
REM
REM ----- 7)連続傾き線 実行プログラム -----
:EXE-7
start /w p040.exe /R14
GOTO END
REM
REM ----- 9)戻る -----
:EXE-9
REM
GOTO END
REM
REM
REM ----- ----- ----- ----- ----- -----
REM #jww
REM #cd
REM #hc 補助線を作図する外部変形です。機能を選択して下さい(1〜9)
REM #hm補助線の作図|1)点|2)円1|3)円2|4)分割点|5)同心円|6)連続角度線|7)連続傾き線|##|9)戻る|
REM
REM #:1 -----点-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #1 配置点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #:2 -----円1-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #1- 中心点を指示して下さい。(L)free (R)Read
REM #2 半径指示点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #:3 -----円2-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #1 中心点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #:4 -----分割点-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #bz
REM #gn
REM #h1
REM #hc 範囲選択をして下さい。
REM #g1
REM #hr
REM #e
REM
REM #:5 -----同心円-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #1 中心点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #:6 -----連続角度線-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #1 通過点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #:7 -----連続傾き線-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #1ln 基準線を指示して下さい。
REM #2 通過点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #:9 -----戻る-----
REM #h/p040_補助線の作図.bat
REM #e
REM
:END
REM 終了
次にプログラム追加修正です。
Unit1.pas
(・・・前略・・・)
type
  TForm1 = class(TForm)
 (・・・)
  private
  (・・・)
   c12_n : integer ;
   c13_a,c13_d : double ;
   c13_n : integer ;
   c14_a,c14_d : double ;
   c14_n : integer ;
   procedure OpenDatFile ;
(・・・)
// データファイルを読み込む
procedure TForm1.OpenDatFile ;
(・・・)
  c12_n := 2;
  c13_a := 0.0;
  c13_d := 10.0;
  c13_n := 2;
  c14_a := 0.0;
  c14_d := 10.0;
  c14_n := 2;
 (・・・)
   ReadLn(F, s);  c12_n:= SInt(s);
   ReadLn(F, s);  c13_a:= SDbl(s);
   ReadLn(F, s);  c13_d:= SDbl(s);
   ReadLn(F, s);  c13_n:= SInt(s);
   ReadLn(F, s);  c14_a:= SDbl(s);
   ReadLn(F, s);  c14_d:= SDbl(s);
   ReadLn(F, s);  c14_n:= SInt(s);
(・・・)
// データファイルを保存する
procedure TForm1.SaveDatFile ;
(・・・)
   WriteLn(F, IntToStr(c12_n));
   WriteLn(F, FloatToStr(c13_a));
   WriteLn(F, FloatToStr(c13_d));
   WriteLn(F, IntToStr(c13_n));
   WriteLn(F, FloatToStr(c14_a));
   WriteLn(F, FloatToStr(c14_d));
   WriteLn(F, IntToStr(c14_n));
(・・・)
// 起動時
procedure TForm1.FormShow(Sender: TObject);
(・・・)
  LabelA3.Visible := False; EditA3.Visible := False;
  if (ParamCount >= 1) then begin
   if (ParamStr(1) = '/R10') then begin
   (・・・)
   end
   else if (ParamStr(1) = '/R11') then begin
   (・・・)
   end
   else if (ParamStr(1) = '/R12') then begin
   (・・・)
   end
   else if (ParamStr(1) = '/R13') then begin
    // 連続角度線
    LabelA1.Visible := True; EditA1.Visible := True;
    LabelA2.Visible := True; EditA2.Visible := True;
    LabelA3.Visible := True; EditA3.Visible := True;
    LabelA1.Caption := '角度[°]';
    LabelA2.Caption := '距離増分';
    LabelA3.Caption := '作図数';
    EditA1.Text := FloatToStr(c13_a);
    EditA2.Text := FloatToStr(c13_d);
    EditA3.Text := IntToStr(c13_n);
    PageControl1.ActivePage := TabSheet1 ;
    sflag := True ;
   end
   else if (ParamStr(1) = '/R14') then begin
    // 連続傾き線
    LabelA1.Visible := True; EditA1.Visible := True;
    LabelA2.Visible := True; EditA2.Visible := True;
    LabelA3.Visible := True; EditA3.Visible := True;
    LabelA1.Caption := '角度[°]';
    LabelA2.Caption := '距離増分';
    LabelA3.Caption := '作図数';
    EditA1.Text := FloatToStr(c14_a);
    EditA2.Text := FloatToStr(c14_d);
    EditA3.Text := IntToStr(c14_n);
    PageControl1.ActivePage := TabSheet1 ;
    sflag := True ;
   end;
(・・・)
// [OK]
procedure TForm1.Button1Click(Sender: TObject);
var
  flag : Boolean ;
  w1,w2,w3,w4,w5,w6,w7 : double ;
(・・・)
  if (ParamCount >= 1) then begin
   flag := False;
   if (ParamStr(1) = '/R10') then begin
   (・・・)
   end
   else if (ParamStr(1) = '/R11') then begin
   (・・・)
   end
   else if (ParamStr(1) = '/R12') then begin
   (・・・)
   end
   else if (ParamStr(1) = '/R13') then begin
    c13_a := SDbl(EditA1.Text);
    c13_d := SDbl(EditA2.Text);
    c13_n := SInt(EditA3.Text);
    while (c13_a < 0.0) do c13_a := c13_a + 360.0;
    while (c13_a >= 360.0) do c13_a := c13_a - 360.0;
    if (Abs(c13_d) <= _LIMIT) then exit;
    if (c13_n < 1)or(c13_n > 10000) then exit;
    flag := True;
   end
   else if (ParamStr(1) = '/R14') then begin
    c14_a := SDbl(EditA1.Text);
    c14_d := SDbl(EditA2.Text);
    c14_n := SInt(EditA3.Text);
    while (c14_a < 0.0) do c14_a := c14_a + 360.0;
    while (c14_a >= 360.0) do c14_a := c14_a - 360.0;
    if (Abs(c14_d) <= _LIMIT) then exit;
    if (c14_n < 1)or(c14_n > 10000) then exit;
    if (JW_EntLineN = 0) then exit ;
    flag := True;
   end;
   //
   if (flag) then begin
    if (ParamStr(1) = '/R10') then begin
    (・・・)
    end
    else if (ParamStr(1) = '/R11') then begin
    (・・・)
    end
    else if (ParamStr(1) = '/R12') then begin
    (・・・)
    end
    else if (ParamStr(1) = '/R13') then begin
     w7 := (JG_Jikukaku + c13_a)/180.0*Pi ;
     w5 := JG_IPoints[1].x ;
     w6 := JG_IPoints[1].y ;
     for i:=1 to c13_n do begin
      w1 := w5 + SENLEN/2.0*Cos(w7);
      w2 := w6 + SENLEN/2.0*Sin(w7);
      w3 := w5 + SENLEN/2.0*Cos(w7+Pi);
      w4 := w6 + SENLEN/2.0*Sin(w7+Pi);
      S_Line(w1,w2, w3,w4);
      w5 := w5 + c13_d*Cos(w7+0.5*Pi);
      w6 := w6 + c13_d*Sin(w7+0.5*Pi);
     end;
    end
    else if (ParamStr(1) = '/R14') then begin
     with JW_EntLine[0] do
      w7 := Angle(x2-x1,y2-y1)*180.0/Pi;
     if (w7 >= 180.0) then
      w7 := w7 - 180.0;
     w7 := (w7 + c14_a)/180.0*Pi ;
     w5 := JG_IPoints[2].x ;
     w6 := JG_IPoints[2].y ;
     for i:=1 to c14_n do begin
      w1 := w5 + SENLEN/2.0*Cos(w7);
      w2 := w6 + SENLEN/2.0*Sin(w7);
      w3 := w5 + SENLEN/2.0*Cos(w7+Pi);
      w4 := w6 + SENLEN/2.0*Sin(w7+Pi);
      S_Line(w1,w2, w3,w4);
      w5 := w5 + c14_d*Cos(w7+0.5*Pi);
      w6 := w6 + c14_d*Sin(w7+0.5*Pi);
     end;
    end;
(・・・後略・・・)
メニュー「ファイル」→「すべて保存」を行い
メニュー「プロジェクト」→「再構築」を行いエラー表示されない事を確認して下さい。
Windowsのエクスプローラ等で、「C:\DelphiProgram\jww\p040」内に作成された「p040.exe」をフォルダ「Gapp」内へコピーします。外部変形を実行して動作確認をしてみて下さい。
 
 


[その他]を選択すると…


 
設定画面

 
 
今回のバッチファイルと実行ファイル、及び、ソースファイルについては、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.