


 
 
 
 
 
 
 |
削除の次は、複写と移動について説明します。移動は、複写を行った後、元の図形を削除するだけですので、ほとんど同じ機能になります。
要素の複写・移動は、まず、要素を選択します。選択した要素のX座標・Y座標に、移動量を加減算します。例えば、右に10mm動かしたい場合には、X座標を+10mm加算します。上に20mm動かしたい場合には、Y座標を+20mm加算します。複写の場合には、加減算をした内容を要素追加すれば良く、移動の場合には、要素追加をしたあと、元の要素を削除処理します。(要素の座標を変更する、という事も可能ですが、それをすると将来、アンドゥ機能が出来なくなります) 削除処理は前節の通り、各データのフラグ変数「exf」を「False」にする、という事です。
但し、1つ気を付けないといけないのは、要素選択をする際、自由に要素を選択しているため、要素の順番はバラバラで、データ登録順にはなっていません。そのまま単純に要素追加をすると、既存のデータ登録順がバラバラになってしまい、当然、見た目も変わってしまいます。そのため、要素追加をする前に、選択要素を並べ替える必要があります。
選択要素は、動的配列変数 Sel(数:Sel_N)に、要素Index値(要素データの動的配列変数 Dat(数:Dat_N)の添え字)を入れています。この変数 Sel内のデータを並べ替える関数 EntSelectNoSort を追加します。「選択法」による並べ替えを行っています。
また、移動の場合には、移動元の図形を削除しますので、選択要素も移動元の図形を指し示す事は出来ません。指し示そうにも削除されています。ですので、新しく移動した先の図形を指示させる必要があります。
取りあえず、まずは、要素選択をして、「複写」又は「移動」を実行すると、別画面が表示され、「X移動量」「Y移動量」の入力を行えば、その移動量の分だけ、複写・移動を行うようにします。
入力する数値は、[相対座標系/グリッド設定]で指定する設定内容を反映するものとします。
ちょっと修正
・図形範囲計算を手続きにします(ZA_Add, ZA_ReSet) |
今回の追加
・編集メニューを追加します。
[複写(C)]
[移動(M)]
の項目を作ります。
(ショートカットキー(ShortCutプロパティ)やアクセスキーはメニュー編集で自由に出来ますので好きなように指定して下さい。)
・座標値入力用画面 UnitXyInp.pas(FmXyInp)を作成します。
・選択要素を扱う動的配列変数 Sel内のデータを並べ替える関数 EntSelectNoSort(FmMain内)を追加します。 |
それではここまでのプログラムです。
【サンプルプログラムのソース】
|
|
CAD装置(1)
CAD装置(2)
メディア
AutoCADの
DIESELマクロ
CSV
DXF
PCES
IGES
STEP
数学とCAD
CAD作ろ!
▲PREV
▼NEXT
|