|
今回は、前回の外部変形「線の作図」と同じ仕様で、線分の作図ではなく、線ソリッドの作図を行いたいという事にします。線ソリッドは標準9色/SXF・256色ではなく、もっと色々な任意色を使いたいという場合に利用されたり、2.5Dでは高さを与える事によって壁等の面として扱えるようになったり、というようなシーンで利用されますが、通常の作図コマンドとしては機能が余り無い為、余り利用されていないかもしれません。
それではバッチファイルを書き換えてみます。
|
p038_線ソリッドの作図.bat |
REM p038:線ソリッドの作図
@echo off
GOTO EXE-%1
REM
REM ----- 1)2点指定 実行プログラム -----
:EXE-1
start /w p038.exe /R0
GOTO END
REM
REM ----- 2)複数点指定 実行プログラム -----
:EXE-2
start /w p038.exe /R1
GOTO END
REM
REM ----- 3)終点指定 実行プログラム -----
:EXE-3
start /w p038.exe /R2
GOTO END
REM
REM ----- 4)座標入力 実行プログラム -----
:EXE-4
start /w p038.exe /R3 %2 %3 %4 %5
GOTO END
REM
REM ----- 5)水平線 実行プログラム -----
:EXE-5
start /w p038.exe /R4
GOTO END
REM
REM ----- 6)垂直線 実行プログラム -----
:EXE-6
start /w p038.exe /R5
GOTO END
REM
REM ----- 7)角度線 実行プログラム -----
:EXE-7
start /w p038.exe /R6 %2
GOTO END
REM
REM ----- 8)その他 -----
:EXE-8
REM
GOTO END
REM
REM ----- 9)設定 実行プログラム -----
:EXE-9
start /w p038.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-%d点を指示して下さい。(L)free (R)Read
REM #99#
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 始点座標を入力して下さい。(X座標,Y座標)
REM #c 終点座標を入力して下さい。(X座標,Y座標)
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 #2 始点を指示して下さい。(L)free (R)Read
REM #3 終点を指示して下さい。(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 #2 始点を指示して下さい。(L)free (R)Read
REM #3 終点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #:7 -----角度線-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #c 角度を入力して下さい。[°]
REM #1 通過点を指示して下さい。(L)free (R)Read
REM #2 始点を指示して下さい。(L)free (R)Read
REM #3 終点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #:8 -----その他-----
REM #h/p038a_線ソリッドの作図.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 終了 |
p038a_線ソリッドの作図.bat |
REM p038a:線ソリッドの作図
@echo off
GOTO EXE-%1
REM
REM ----- 1)平行線 実行プログラム -----
:EXE-1
start /w p038.exe /R7
GOTO END
REM
REM ----- 2)直交線 実行プログラム -----
:EXE-2
start /w p038.exe /R8
GOTO END
REM
REM ----- 3)傾き線 実行プログラム -----
:EXE-3
start /w p038.exe /R9 %2
GOTO END
REM
REM ----- 4)戻る -----
:EXE-4
REM
GOTO END
REM
REM
REM ----- ----- ----- ----- ----- -----
REM #jww
REM #cd
REM #hc 線ソリッドを作図する外部変形です。機能を選択して下さい(1〜4)
REM #hm線ソリッドの作図|1)平行線|2)直交線|3)傾き線|4)戻る|
REM
REM #:1 -----平行線-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #1ln 基準線を指示して下さい。
REM #2 通過点を指示して下さい。(L)free (R)Read
REM #3 始点を指示して下さい。(L)free (R)Read
REM #4 終点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #:2 -----直交線-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #1ln 基準線を指示して下さい。
REM #2 通過点を指示して下さい。(L)free (R)Read
REM #3 始点を指示して下さい。(L)free (R)Read
REM #4 終点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #hr
REM #e
REM
REM #:3 -----傾き線-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #c 傾き角度を入力して下さい。[°]
REM #1ln 基準線を指示して下さい。
REM #2 通過点を指示して下さい。(L)free (R)Read
REM #3 始点を指示して下さい。(L)free (R)Read
REM #4 終点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #:4 -----戻る-----
REM #h/p038_線ソリッドの作図.bat
REM #e
REM
:END
REM 終了 |
|
プロジェクト「p038」の準備を行います。「C:\DelphiProgram\jww」フォルダの中に「p038」というフォルダを作成し、Windowsのエクスプローラ等で「p037」内のファイルを「p038」の中へコピーします。(※移動しないよう注意)。
Delphi6を起動します。メニュー「ファイル」→「プロジェクトを開く」を実行し、「C:\DelphiProgram\jww\p038」内の「p037.dpr」を開きます。メニュー「プロジェクト」→「オプション」を実行し、下記の設定を行います。
[アプリケーション]頁
タイトル | p038−線ソリッドの作図 |
[ディレクトリ/条件]頁
パス及びディレクトリ | C:\DelphiProgram\jww\p038 |
メニュー「ファイル」→「プロジェクトに名前を付けて保存」
「C:\DelphiProgram\jww\p038」の中に「p038.dpr」として保存
「C:\DelphiProgram\jww\p038」の中に「p037.〜」のファイルが残っていますので、Windowsのエクスプローラ等で削除します。
プロジェクトマネージャを表示しコード画面の左側にドッキングしておきます。
◆
Form1 の Captionプロパティを「線ソリッドの作図」に変更します。また、アイコンが「線の作図」と同じだと間違いの元になりますのでイメージエディタでアイコンを編集し、メニュー「プロジェクト」→「オプション」にて、[アプリケーション]頁の[アイコンの読み込み]を行い、Form1 の Iconプロパティでもアイコンを参照しなおします。
取りあえず、線の作図を、線ソリッドの作図に変更します。
|
Unit1.pas |
(・・・前略・・・)
// 起動時
procedure TForm1.FormShow(Sender: TObject);
(・・・)
if (ParamStr(1) = '/R0') then begin
// 2点指定
S_Solid2(JG_IPoints[1].x , JG_IPoints[1].y,
JG_IPoints[2].x , JG_IPoints[2].y );
px := JG_IPoints[2].x ;
py := JG_IPoints[2].y ;
end
else if (ParamStr(1) = '/R1') then begin
// 複数点指定
for i:=1 to 98 do begin
if not(JG_IPoints[i+1].flg) then break;
S_Solid2(JG_IPoints[i ].x , JG_IPoints[i ].y,
JG_IPoints[i+1].x , JG_IPoints[i+1].y );
px := JG_IPoints[i+1].x ;
py := JG_IPoints[i+1].y ;
end;
end
else if (ParamStr(1) = '/R2') then begin
// 終点指定
S_Solid2(px,py, JG_IPoints[1].x , JG_IPoints[1].y);
px := JG_IPoints[1].x ;
py := JG_IPoints[1].y ;
end
else if (ParamStr(1) = '/R3') then begin
// 座標入力
s1 := '0.0'; if (ParamCount >= 2) then s1:=ParamStr(2);
s2 := '0.0'; if (ParamCount >= 3) then s2:=ParamStr(3);
s3 := '0.0'; if (ParamCount >= 4) then s3:=ParamStr(4);
s4 := '0.0'; if (ParamCount >= 5) then s4:=ParamStr(5);
w1 := 0.0;
w2 := 0.0;
if (Copy(s1,1,1)='@') then begin
w1 := px ;
w2 := py ;
s1 := Copy(s1,2,Length(s1));
end;
Rev(w5,w6, SDbl(s1),SDbl(s2),0.0,0.0,JG_Jikukaku);
w1 := w1 + w5;
w2 := w2 + w6;
w3 := 0.0;
w4 := 0.0;
if (Copy(s3,1,1)='@') then begin
w3 := w1 ;
w4 := w2 ;
s3 := Copy(s3,2,Length(s3));
end;
Rev(w5,w6, SDbl(s3),SDbl(s4),0.0,0.0,JG_Jikukaku);
w3 := w3 + w5;
w4 := w4 + w6;
S_Solid2(w1,w2, w3,w4);
px := w3 ;
py := w4 ;
end
else if (ParamStr(1) = '/R4')
or(ParamStr(1) = '/R5')
or(ParamStr(1) = '/R6') then begin
// 水平線・垂直線・角度線
w9 := JG_Jikukaku ;
if (ParamStr(1) = '/R5') then w9 := w9 + 90.0
else if (ParamStr(1) = '/R6') then w9 := w9 + SDbl(ParamStr(2)) ;
// 通過点
Rev(w7,w8, JG_IPoints[1].x,JG_IPoints[1].y, 0.0,0.0, -w9);
// 始点
Rev(w5,w6, JG_IPoints[2].x,JG_IPoints[2].y, 0.0,0.0, -w9);
w6 := w8 ;
Rev(w1,w2, w5,w6, 0.0,0.0, w9);
// 終点
Rev(w5,w6, JG_IPoints[3].x,JG_IPoints[3].y, 0.0,0.0, -w9);
w6 := w8 ;
Rev(w3,w4, w5,w6, 0.0,0.0, w9);
S_Solid2(w1,w2, w3,w4);
px := w3 ;
py := w4 ;
end
else if (ParamStr(1) = '/R7')
or(ParamStr(1) = '/R8')
or(ParamStr(1) = '/R9') then begin
// 平行線・直交線・傾き線
if (JW_EntLineN = 0) then Close ;
with JW_EntLine[0] do
w9 := Angle(x2-x1,y2-y1)*180.0/Pi;
if (w9 >= 180.0) then
w9 := w9 - 180.0;
if (ParamStr(1) = '/R8') then w9 := w9 + 90.0
else if (ParamStr(1) = '/R9') then w9 := w9 + SDbl(ParamStr(2)) ;
// 通過点
Rev(w7,w8, JG_IPoints[2].x,JG_IPoints[2].y, 0.0,0.0, -w9);
// 始点
Rev(w5,w6, JG_IPoints[3].x,JG_IPoints[3].y, 0.0,0.0, -w9);
w6 := w8 ;
Rev(w1,w2, w5,w6, 0.0,0.0, w9);
// 終点
Rev(w5,w6, JG_IPoints[4].x,JG_IPoints[4].y, 0.0,0.0, -w9);
w6 := w8 ;
Rev(w3,w4, w5,w6, 0.0,0.0, w9);
S_Solid2(w1,w2, w3,w4);
px := w3 ;
py := w4 ;
end;
SaveDatFile ;
Close ;
end
(・・・後略・・・) |
|
メニュー「ファイル」→「すべて保存」を行い
メニュー「プロジェクト」→「再構築」を行いエラー表示されない事を確認して下さい。
◆
単純に、線の作図を線ソリッドの作図に変更しただけですが、問題が幾つかあります。まずは、線ソリッドの作図には、線種は無関係(実線固定)であり、また、任意色の指定という項目が必要です。次に、平行線・直交線・傾き線での基準線の指定では、線分データしか選択する事が出来ず、線ソリッドデータは選択出来ないという事です。
まずは、線種と任意色指定の対処を行います。
Form1 画面の「線種」の項目を削除します。Label2 と ComboBox2 を選択して [Delete]キーを押して削除します。双方ともイベントは作成していませんのでそのまま削除して構いません。空いた箇所に [Standard]内の CheckBox コンポーネントと、あと、ボタンなのですが、通常の Button コンポーネントは、ボタン色やボタン上の文字色を任意で変更する事が出来ません。[Additional]内のBitBtnコンポーネントも同様です。こういった場合は、例えば、Label コンポーネントを使う場合もありますが、ボタンという感じではありませんので、ちょっと使い方は違うかもしれませんがここでは [Additional]内の SpeedButton コンポーネントを使う事にします。ボタン色を変える事は出来ませんがボタン上の文字色を変更する事は出来ます。
CheckBox1の Captionプロパティを「任意色」、SpeedButton1の Captionプロパティを「任意色■」に変更します。[Dialogs]内の ColorDialogコンポーネントを1つ配置します。実際の色指定はこの ColorDialogでの設定画面を使用する事にします。
CheckBox1 の TabOrder を「1」にします。SpeedButtonコンポーネントには TabOrder指定はありません。それでは ComboBox2、変数 ltp の代わりの処理を行うように変更します。任意色を使うかどうかの変数を sc1、任意色の変数は sc2 とします。
|
Unit1.pas |
(・・・前略・・・)
type
TForm1 = class(TForm)
(・・・)
private
{ Private 宣言 }
AppPath : string ;
px,py : double ;
col,sc1,sc2,wid : integer ;
procedure OpenDatFile ;
(・・・)
procedure TForm1.OpenDatFile ;
(・・・)
col:= 0;
sc1:= 0;
sc2:= 0;
wid:=-1;
// 読み込み
(・・・)
ReadLn(F, s); col:= SInt(s);
ReadLn(F, s); sc1:= SInt(s);
ReadLn(F, s); sc2:= SInt(s);
ReadLn(F, s); wid:= SInt(s);
(・・・)
procedure TForm1.SaveDatFile ;
(・・・)
WriteLn(F, IntToStr(col));
WriteLn(F, IntToStr(sc1));
WriteLn(F, IntToStr(sc2));
WriteLn(F, IntToStr(wid));
(・・・)
// 起動時
procedure TForm1.FormShow(Sender: TObject);
(・・・)
if (ParamCount >= 1) then begin
S_Init ; // 初期化
if (sc1 = 0) then
S_Col(col,1) // 線色
else
S_SCol(sc2); // 任意色
S_Wid(wid); // 線幅
//
if (ParamStr(1) = '/R0') then begin
(・・・)
end
else begin
// 設定
Form1.Left := Mouse.CursorPos.X - Form1.Width div 2;
Form1.Top := Mouse.CursorPos.Y - Form1.Height div 2;
//
ComboBox1.Items.Clear ;
ComboBox1.Items.Add('現在線色');
for i:=1 to 9 do
ComboBox1.Items.Add('線色'+IntToStr(i));
for i:=1 to 256 do
ComboBox1.Items.Add('SXF-'+IntToStr(i));
CheckBox1.Checked := False;
ComboBox3.Text := '' ;
//
ComboBox1.ItemIndex := col ;
if (sc1 = 1) then CheckBox1.Checked := True ;
SpeedButton1.Font.Color := sc2 ;
if (wid >= 0) then
ComboBox3.Text := IntToStr(wid);
//
(・・・)
// [OK]
procedure TForm1.Button1Click(Sender: TObject);
begin
col := ComboBox1.ItemIndex ;
sc1 := 0;
if (CheckBox1.Checked) then sc1 := 1;
sc2 := SpeedButton1.Font.Color ;
if (ComboBox3.Text = '') then
wid := -1
else
wid := SInt(ComboBox3.Text);
(・・・)
// [→登録→]
procedure TForm1.Button3Click(Sender: TObject);
var
c1,c2 : integer ;
s : string ;
begin
c1 := 0;
if (CheckBox1.Checked) then c1 := 1;
c2 := SpeedButton1.Font.Color ;
s := 'C=' + IntToStr(ComboBox1.ItemIndex)
+' F=' + IntToStr(c1)
+' S=' + IntToStr(c2)
+' W=' + ComboBox3.Text ;
ListBox1.Items.Add(s);
end;
(・・・)
// [選択]
procedure TForm1.ListBox1Click(Sender: TObject);
var
i : integer ;
s,t : string ;
begin
if (ListBox1.Items.Count = 0) then exit ;
i := ListBox1.ItemIndex ;
if (i >= 0) then begin
s := ListBox1.Items[i] ;
i := AnsiPos(' F=',s);
t := Copy(s,3,i-3) ;
s := Copy(s,i+3,Length(s));
ComboBox1.ItemIndex := SInt(t) ;
//
i := AnsiPos(' S=',s);
t := Copy(s,1,i-1) ;
s := Copy(s,i+3,Length(s));
if (SInt(t) = 0) then
CheckBox1.Checked := False
else
CheckBox1.Checked := True ;
//
i := AnsiPos(' W=',s);
t := Copy(s,1,i-1) ;
s := Copy(s,i+3,Length(s));
SpeedButton1.Font.Color := SInt(t) ;
ComboBox3.Text := s ;
end;
end;
end. |
|
次に SpeedButton1 をダブルクリックして OnClick イベントを記述します。
|
Unit1.pas |
(・・・前略・・・)
// [任意色]
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
ColorDialog1.Color := SpeedButton1.Font.Color ;
if (ColorDialog1.Execute) then
SpeedButton1.Font.Color := ColorDialog1.Color ;
end;
end. |
|
リスト内に表示する項目が増えてしまって画面から見えなくなってしまいましたので、画面のレイアウトを少し変更します。横に長くし過ぎると操作しにくくなりますので下へ延ばして対応します。
メニュー「ファイル」→「すべて保存」を行い
メニュー「プロジェクト」→「再構築」を行いエラー表示されない事を確認して下さい。
Windowsのエクスプローラ等で、「C:\DelphiProgram\jww\p038」内に作成された「p038.exe」をフォルダ「Gapp」内へコピーします。外部変形を実行して動作確認をしてみて下さい。
次に、基準線指定で線分しか取得出来ない件について考えます。バッチファイルでの指定「REM #1ln」のような感じでの線ソリッド指定、というような機能は Jw_cad には用意されていませんので、そういう指定方法は不可能です。その他、1データ要素指定、のような機能もありません。となると後は範囲選択しかありません。範囲選択で1つの線分データ、又は、線ソリッドデータを選択してもらう事にします。その他の手法としては、全データ選択と指示点指定を行ってプログラム内で指示点近傍にあるデータを検索する、というような事になるかと思われますが、検索ロジックの作成をせねばならない事、検索し基準線として採用したデータを仮表示する事が出来ない事、要素データサイズが大きくなればなるほど処理が遅くなってしまう事、というデメリットがあります。ですのでこの処理は行いません。
ただ、範囲選択を行うとすると、範囲始点→範囲終点→(追加指定)→確定→ という事になって従来の1つの線分指定より手数が増えてしまいます。線分を基準線としたい場合も作業効率が落ちてしまいますので、項目を追加する事にします。
それではバッチファイルの修正を行います。こちら側にもついでに[設定]を追加しておきます。p038と同じく(9)にしておいた方が分かりやすいので(8)は未使用とします。
|
p038a_線ソリッドの作図.bat |
REM p038a:線ソリッドの作図
@echo off
GOTO EXE-%1
REM
REM ----- 1)平行線 実行プログラム -----
:EXE-1
start /w p038.exe /R7
GOTO END
REM
REM ----- 2)直交線 実行プログラム -----
:EXE-2
start /w p038.exe /R8
GOTO END
REM
REM ----- 3)傾き線 実行プログラム -----
:EXE-3
start /w p038.exe /R9 %2
GOTO END
REM
REM ----- 4)平行線A 実行プログラム -----
:EXE-4
start /w p038.exe /R10
GOTO END
REM
REM ----- 5)直交線A 実行プログラム -----
:EXE-5
start /w p038.exe /R11
GOTO END
REM
REM ----- 6)傾き線A 実行プログラム -----
:EXE-6
start /w p038.exe /R12 %2
GOTO END
REM
REM ----- 7)戻る -----
:EXE-7
REM
GOTO END
REM
REM ----- 9)設定 実行プログラム -----
:EXE-9
start /w p038.exe
GOTO END
REM
REM
REM ----- ----- ----- ----- ----- -----
REM #jww
REM #cd
REM #hc 線ソリッドを作図する外部変形です。機能を選択して下さい(1〜7,9)
REM #hm線ソリッドの作図|1)平行線|2)直交線|3)傾き線|4)平行線A|5)直交線A|6)傾き線A|7)戻る|##|9)設定|
REM
REM #:1 -----平行線-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #1ln 基準線を指示して下さい。
REM #2 通過点を指示して下さい。(L)free (R)Read
REM #3 始点を指示して下さい。(L)free (R)Read
REM #4 終点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #:2 -----直交線-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #1ln 基準線を指示して下さい。
REM #2 通過点を指示して下さい。(L)free (R)Read
REM #3 始点を指示して下さい。(L)free (R)Read
REM #4 終点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #hr
REM #e
REM
REM #:3 -----傾き線-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #c 傾き角度を入力して下さい。[°]
REM #1ln 基準線を指示して下さい。
REM #2 通過点を指示して下さい。(L)free (R)Read
REM #3 始点を指示して下さい。(L)free (R)Read
REM #4 終点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #:4 -----平行線-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #h1
REM #hc 基準線を選択して下さい。
REM #g1
REM #2 通過点を指示して下さい。(L)free (R)Read
REM #3 始点を指示して下さい。(L)free (R)Read
REM #4 終点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #:5 -----直交線-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #h1
REM #hc 基準線を選択して下さい。
REM #g1
REM #2 通過点を指示して下さい。(L)free (R)Read
REM #3 始点を指示して下さい。(L)free (R)Read
REM #4 終点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #hr
REM #e
REM
REM #:6 -----傾き線-----
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #gn
REM #c 傾き角度を入力して下さい。[°]
REM #h1
REM #hc 基準線を選択して下さい。
REM #g1
REM #2 通過点を指示して下さい。(L)free (R)Read
REM #3 始点を指示して下さい。(L)free (R)Read
REM #4 終点を指示して下さい。(L)free (R)Read
REM #hr
REM #e
REM
REM #:7 -----戻る-----
REM #h/p038_線ソリッドの作図.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 終了 |
|
範囲選択で取得したデータは動的配列 JW_Ent〜に入ります。線分データを優先とし、線分データがない場合は線ソリッドデータを参照します。
|
Unit1.pas |
(・・・前略・・・)
// 起動時
procedure TForm1.FormShow(Sender: TObject);
(・・・)
end
else if (ParamStr(1) = '/R7')
or(ParamStr(1) = '/R8')
or(ParamStr(1) = '/R9')
or(ParamStr(1) = '/R10')
or(ParamStr(1) = '/R11')
or(ParamStr(1) = '/R12') then begin
// 平行線・直交線・傾き線
w9 := 0.0;
if (JW_EntLineN > 0) then begin
with JW_EntLine[0] do
w9 := Angle(x2-x1,y2-y1)*180.0/Pi;
end
else if (JW_EntSld2N > 0) then begin
with JW_EntSld2[0] do
w9 := Angle(x2-x1,y2-y1)*180.0/Pi;
end
else
Close ; // 読み取っていない
if (w9 >= 180.0) then
w9 := w9 - 180.0;
if (ParamStr(1) = '/R8')or(ParamStr(1) = '/R11') then
w9 := w9 + 90.0
else if (ParamStr(1) = '/R9')or(ParamStr(1) = '/R12') then
w9 := w9 + SDbl(ParamStr(2)) ;
// 通過点
(・・・後略・・・) |
|
メニュー「ファイル」→「すべて保存」を行い
メニュー「プロジェクト」→「再構築」を行いエラー表示されない事を確認して下さい。
Windowsのエクスプローラ等で、「C:\DelphiProgram\jww\p038」内に作成された「p038.exe」をフォルダ「Gapp」内へコピーします。外部変形を実行して動作確認をしてみて下さい。
今回のバッチファイルと実行ファイル、及び、ソースファイルについては、Pcataサイトに置いておきますので必要な方はそちらからダウンロードして下さい。
|
|
CAD装置(1)
CAD装置(2)
メディア
AutoCADの
DIESELマクロ
CSV
DXF
PCES
IGES
STEP
数学とCAD
CAD作ろ!
M7
Jw_cad
[BACK]
[NEXT]
|