


 
 
 
 
 
 
 |
ここでは、要素の対称複写・対称移動(反転処理、ミラー処理)を行えるようにします。グラフィックソフトでは、画面全体、又は、選択範囲を「上下反転」「左右反転」を行えるようになっています。
上下反転の場合は、一番上と一番下の点(ドット/ピクセル)を入れ替え、一番上のドットラインと一番下のドットラインを入れ替えたら、1ドット内側の点について入れ替え処理を行い、更に1ドット内側に、、、を中央の点まで繰り返します。
左右反転の場合は、一番左と一番右の点を入れ替えていくだけで、処理内容は上下反転と同じです。
CADでは、上下反転・左右反転もありますが、ある基準線に対して「対称」に複写・移動の処理を行う、というパターンが多いです。
上下反転・左右反転の場合には、図形範囲を読み取って、その中央となる水平線・垂直線を対称基準線として処理を行えば良いでしょう。ここでは、基準線となる始点・終点を指示して対称処理を行う事にします。CADによっては、既に作図している線をクリックして指定するパターンもあります。
対称処理は、まず基準線の傾き角度を算出します。対称であるという事は、基準線に対して垂直に、基準線の向こう側に座標を移動する、という事になりますから、各座標を、基準線の傾き角度+90°の方向へ、基準線までの距離×2の分だけ移動する、という事になります。
また、別の手法としては、交点計算等で多用した写像を利用する、というパターンもあります。基準線の傾き角度αを算出し、各座標を、−αの角度で写像を掛けます。すると、基準線=水平線と考える事が出来ますので、その水平線に対して対称処理を行い、処理後の座標を再度、αの角度で写像を掛けます。円弧の開始角・終了角に注意して下さい。
流れとしては、
@要素を選択
A基準線の始点の指定
B基準線の終点の指定
C計算(上記の後者の手法)
D複写・移動処理
E Aに戻る
という風にします。
今回の修正
・前回の回転処理では、再帰呼び出しになっていましたので、回転中心点の指定に戻るようにします。 |
今回の追加
・編集メニューを追加します。
[複写(C)]
> [数値入力 (&N)]
> [マウス指定(&M)]
> [拡大縮小 (&S)]
> [回転 (&R)]
> [対称 (&T)]
[移動(M)]
> [数値入力 (&N)]
> [マウス指定(&M)]
> [拡大縮小 (&S)]
> [回転 (&R)]
> [対称 (&T)]
(ショートカットキー(ShortCutプロパティ)やアクセスキーはメニュー編集で自由に出来ますので好きなように指定して下さい。)
・EntSelectCopy4()、EntSelectMove4()を追加 |
それではここまでのプログラムです。
【サンプルプログラムのソース】
|
|
CAD装置(1)
CAD装置(2)
メディア
AutoCADの
DIESELマクロ
CSV
DXF
PCES
IGES
STEP
数学とCAD
CAD作ろ!
▲PREV
▼NEXT
|