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

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

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
CAD作ろ! 要素の複写と移動 拡大縮小
ここでは、要素の複写・移動を行う際に、倍率を入力することによって、拡大縮小を行えるようにします。倍率が1よりも大きい場合には拡大、1よりも小さい場合には縮小、1の場合には前節の平行複写・平行移動と同じ、0やマイナスの値は入力出来ない、とします。
 
流れとしては、
 @要素を選択
 A倍率入力
 B始点(原点/基準点)の指定
 C終点の指定
 D計算
 E複写・移動処理
 F A〜Cのいずれかに戻る
というのが一般的でしょう。ここでは、Cに戻るようにし、同じ倍率のままになるようにします(移動の場合には、2回目以降は1倍にするようにします)。
 
移動量の算出は、平行複写・平行移動時と同じですが、倍率を掛ける処理が必要となります。始点を(0,0)と考えて、各座標値は、始点を基準とした相対座標であると考えて、そのX方向長さ・Y方向長さに対して倍率を掛けます。円・円弧の場合には半径にも倍率を掛け、文字の場合には文字高・文字幅・文字間隔にも倍率を掛けます(※CADによっては文字高・文字幅・文字間隔の大きさをある設定のまま保持させたいという意味で、倍率を掛けないようにしている場合もあります)

 
 

 
各要素のX座標・Y座標(PX,PYとする)は、始点を原点と考えた相対座標と考え、
 各要素の相対X座標 AX =( PX − x1 )
 各要素の相対Y座標 AY =( PY − y1 )
それに対して倍率を掛けますので、倍率を N とすると、
 各要素の相対X座標 AX =( PX − x1 )× N
 各要素の相対Y座標 AY =( PY − y1 )× N
のようになります。
これは、始点(x1,y1)を(0,0)と考えた場合ですので、この(x1,y1)の場所が(x2,y2)にすり変わる事になりますから
 各要素のX座標 PX' =( PX − x1 )× N + x2
 各要素のY座標 PY' =( PY − y1 )× N + y2
となります。
 
例えば、平行複写・平行移動は、N=1と同じ事ですから、
 各要素のX座標 PX' =( PX − x1 )× 1 + x2
           =  PX − x1 + x2
           =  PX +( x2 − x1 )
 各要素のY座標 PY' =( PY − y1 )× 1 + y2
           =  PY − y1 + y2
           =  PY +( y2 − y1 )
となりますので青色の部分は移動量に相当しますから、理解出来ると思われます。
 
 
今回の追加
・1つの数値を入力するフォーム Fm1NumInp(Unit1NumInp.pas)を追加します。
・編集メニューを追加します。
 [複写(C)]
   > [数値入力 (&N)]
   > [マウス指定(&M)]
   > [拡大縮小 (&S)]
 [移動(M)]
   > [数値入力 (&N)]
   > [マウス指定(&M)]
   > [拡大縮小 (&S)]
(ショートカットキー(ShortCutプロパティ)やアクセスキーはメニュー編集で自由に出来ますので好きなように指定して下さい。)
・EntSelectCopy2()、EntSelectMove2()を追加します。
 
 
それではここまでのプログラムです。
サンプルプログラムのソース
 
 
CAD装置(1)
CAD装置(2)
メディア
AutoCADの
DIESELマクロ
CSV
DXF
PCES
IGES
STEP
数学とCAD
CAD作ろ!
 ▲PREV
 ▼NEXT
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015 By AFsoft All Rights Reserved.