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

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

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
【Jw_cad 外部変形】点→点マーカ
変更系の外部変形アプリケーションのサンプルとして、今回は、範囲選択した要素データのうち、点データを点マーカデータに変更するプログラムを作ってみようと思います。ついでに、点マーカデータも変更対象に入れます。
点マーカデータには、点マーカ用のものと、寸法端点用のものがありますが、ここでは、点マーカ用のものだけにしておきます。寸法端点用のものには角度を考慮しないといけませんので状況によってちゃんと指定しないといけないからですが、もし必要であれば、プログラムを変更してそれが出来るようにしてから利用されると良いと思います。
 
点マーカデータの点マーカ用のものは、
-1asterisk縦2.5mm
-2circle直径2.5mm
-3dot
-4plus縦横2.5mm
-5square縦横2.5mm
-6triangle縦2.5mm
-7X×線長2.5mm
となっています。これは SXF仕様と同じになっています。大きさを変える場合には倍率を指定します。傾き角度の指定は可能ですが、ここでは0°固定としておきます。
 
それではバッチファイルから。
p047_点→点マーカ.bat
REM p047−点を点マーカに変更
@echo off
REM #jww
REM #cd
REM #hf
REM #zs
REM #zc
REM #zz
REM #zw
REM #h1
REM #hc 範囲選択をして下さい。
REM #ht10
REM #ht20
REM #ht30
REM #ht40
REM #g1
REM #hr
start /w p047.exe
 
プロジェクト「p047」の準備を行います。「C:\DelphiProgram\jww」フォルダの中に「p047」というフォルダを作成し、Delphi6を起動します。メニュー「プロジェクト」→「オプション」を実行し、下記の設定を行います。
[アプリケーション]頁
 タイトル
p047−点→点マーカ
[ディレクトリ/条件]頁
 パス及びディレクトリ
C:\DelphiProgram\jww\p047

メニュー「ファイル」→「名前を付けて保存」
「C:\DelphiProgram\jww\p047」の中に「Unit1.pas」を保存
メニュー「ファイル」→「プロジェクトに名前を付けて保存」
「C:\DelphiProgram\jww\p047」の中に「p047.dpr」として保存

Form1の画面は、取りあえずいつもと同じく、大きさを扱いやすいよう小さくし、オブジェクトインスペクタで Form1 のプロパティを設定します。
BorderIcons
 biMaximize
False最大化しないように
BorderStylebsSingle画面をリサイズしないように
Caption点→点マーカタイトルバーに表示されます
ColorclSkyBlue画面色 御自由にどうぞ
Font内
 Name
MS ゴシック プロポーショナルフォントは
文字配置調整が微妙なので
Font内
 Size
10小さいと少し見難い為
ScaledFalse 動作環境によっての文字の
大きさ変動を少し抑えられる

メニュー「表示」→「プロジェクトマネージャ」
を実行し、コード画面の左側にドッキングさせておきます。前回及び上記で作成した「MyFunc.pas」「JwwGaibu.pas」を取り込みます。Unit1.pas の uses節に MyFunc と JwwGaibu を追加します。(※以下では全角空白を付けて桁調整等をしていますが実際は半角空白或いは無しです)
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,
  MyFunc, JwwGaibu ;
 
type
  TForm1 = class(TForm)
・・・
メニュー「ファイル」→「すべて保存」を行い
メニュー「プロジェクト」→「再構築」を行いエラー表示されない事を確認して下さい。
アイコンが Delphi6デフォルトのものになっていますので、メニュー「ツール」→「イメージエディタ」を実行し、そのメニュー「ファイル」→「新規作成」→「アイコンファイル」を実行し、16×16・16色のアイコンを作成します。(32×32でも構いませんし他のツールで作成するのでも構いません)「C:\DelphiProgram\jww\p047」の中に「Icon1.ico」として保存します。保存できたらイメージエディタを終了します。
メニュー「プロジェクト」→「オプション」を実行し、
[アプリケーション]頁の中の[アイコンの読み込み]ボタンをクリックし、「C:\DelphiProgram\jww\p047\Icon1.ico」を指定します。[OK]ボタンをクリックしてプロジェクトオプション画面を閉じます。
オブジェクトインスペクタにて、Form1 の Icon プロパティの入力欄右端の[…]をクリックして、[読み込み]ボタンをクリックし、「Icon1」を指定して、[OK]ボタンをクリックします。

画面上に [Standard]内の RadioGroup コンポーネントを1つ、Edit コンポーネントを1つ、Label コンポーネントを2つ、Button コンポーネントを2つ配置します。
RadioGroup1
Caption点マーカの種類左上の表示内容
Columns7横項目(カラム)の数
Items





×
表示項目内容
ItemIndex2デフォルト指定
Label1
AlignalBottom画面下部に表示
AlignmenttaCenter水平中央合わせ表示
AutoSizeFalse自動サイズ調整をオフ
Caption 表示内容は空に
Color$00ECB98A色:御自由にどうぞ
LayouttlCenter垂直中央合わせ表示
Label2
Caption倍 率:表示内容
Edit1
ImeModeimDisable全角入力出来ないように
Text1倍率デフォルト値
Button1
CaptionOK(&Y)ボタン上の文字
DefaultTrue[Enter]キーを押したら[OK]
Button2
Captionキャンセル(&N)ボタン上の文字
CancelTrue[Esc]キーを押したら[キャンセル]
画面のレイアウトは下図のようにしてみました。

 
オブジェクトインスペクタにて Form1 の イベント OnShowの箇所でダブルクリック、OnCloseの箇所でダブルクリックし、取りあえず下記のように追記します。
Unit1.pas
(・・・前略・・・)
type
  TForm1 = class(TForm)
 (・・・)
  private
   { Private 宣言 }
   AppPath : string ;
  public
   { Public 宣言 }
  end;
 
var
Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
// 起動時
procedure TForm1.FormShow(Sender: TObject);
begin
  Form1.Left := Mouse.CursorPos.X - Form1.Width div 2;
  Form1.Top := Mouse.CursorPos.Y - 4;
  // 初期設定
  InitJwwGaibu ;
  // プログラムのあるフォルダを取得します
  AppPath := ExtractFilePath(Application.ExeName) ;
  // JWC_TEMP.TXTを開きます
  OpenTempFile(AppPath+'JWC_TEMP.TXT') ;
  // 初期設定
  S_Init ;
end;
 
// 終了時
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  // JWC_TEMP.TXTを保存します
  SaveTempFile(AppPath+'JWC_TEMP.TXT') ;
  // 最終処理
  EndJwwGaibu ;
end;
 
end.
 
Button1、Button2 をダブルクリックして OnClickイベントを記述出来るようにします。
Unit1.pas
// [OK]
procedure TForm1.Button1Click(Sender: TObject);
var
  co : integer ;
  ba : double ;
  i,j,k : integer ;
  xx,yy : double ;
  at : TJwwEntAttr ;
begin
  co := -(RadioGroup1.ItemIndex + 1) ;
  ba := SDbl(Edit1.Text) ;
  if (ba <= 0.0) then exit ;
  // 点マーカ
  Label1.Caption := '点マーカ変更中です';
  Label1.Update ;
  for i:=0 to JW_EntMarkN-1 do begin
   with JW_EntMark[i] do begin
    bai := ba ;
    ang := 0.0;
    cod := co;
   end;
  end;
  // 点→点マーカ
  Label1.Caption := '点→点マーカ変更中です';
  Label1.Update ;
  j := JW_EntMarkN ;
  JW_EntMarkN := JW_EntMarkN + JW_EntPntN ;
  SetLength(JW_EntMark, JW_EntMarkN) ;
  k := JW_EntN ;
  JW_EntN := JW_EntN + JW_EntPntN ;
  SetLength(JW_EntNo, JW_EntN) ;
  for i:=0 to JW_EntPntN-1 do begin
   with JW_EntPnt[i] do begin
    at := att ;
    xx := px ;
    yy := py ;
   end;
   with JW_EntMark[j+i] do begin
    att := at ;
    px := xx ;
    py := yy ;
    bai := ba ;
    ang := 0.0;
    cod := co;
   end;
   with JW_EntNo[k+i] do begin
    yn := 6;
    no := j+i;
   end;
  end;
  JW_EntPntN := 0;
  JW_EntPnt := nil;
  for i:=0 to k-1 do
   if (JW_EntNo[i].yn = 5) then
    JW_EntNo[i].yn := 0 ;
  // 生成
  SendMem('hd');
  S_EntAll(-1,-1,-1,-1,-1,-1,-1,0, Label1);
  Label1.Caption := 'ファイル生成中です';
  Label1.Update ;
  Close ;
end;
 
// [Cancel]
procedure TForm1.Button2Click(Sender: TObject);
begin
  Close ;
end;
 
end.
 
メニュー「ファイル」→「すべて保存」を行い
メニュー「プロジェクト」→「再構築」を行いエラー表示されない事を確認して下さい。
Windowsのエクスプローラ等で、「C:\DelphiProgram\jww\p047」内に作成された「p047.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.