|  
  
  
   
   
   
   
   
   
  | 
| 端点・交点スナップの次は、グリッド(目盛点)の表示とスナップです。CADによって異なりますが、グリッドは、点(小さい円)か線かで表示します。また、グリッドの近くにマウスを持って行って端点・交点と同じように点を拾う、というCADソフトもありますが、グリッド表示の際には、マウス左クリックの任意点指定を、近いグリッド上の点に指定させる、というCADもあります。どちらが良いか?とか慣れの問題もありますが、私自身は後者で慣れていますので、後者のパターンで行く事にします。 
 グリッドの表示は、原点(本テストプログラムでは、用紙中央)を基準にして、グリッド間隔分ずつ、点(円)・或いは線を描いて行く事になります。
 【サンプルプログラムのソース】
 グリッド間隔が狭いと画面がグリッド色で塗り潰し状態になってしまいます。描く点や円の数が多くなればなるほど、表示速度が遅くなってしまいます。また、表示エリア外のものまで表示しようとすると更に遅くなってしまいます。サンプルを実行すれば分かると思いますが、点・円よりも線で描く方が単純で速いです。但し色がきつめになると問題なので薄い色で表示するようにしたら良いでしょう。また、見易くするために、5本毎、10本毎に、色を変えてやると見易くなるでしょう。
 
 ・画面に、グリッド指定のためのチェックボックスと、グリッド間隔入力欄を付けます。グリッド間隔は、用紙上サイズで入力する事とし、UnitGVar.pas に、変数 GR_OnOff、GR_Dist、を追加します。
 ・グリッドは直線で描画します。
 UnitGraph.pasの「用紙枠を作図 GL_PAPERFRAME()」内で描画するようにします。
 ・表示範囲内のみ描画します。
 表示範囲は、(WD_x1,WD_y1)〜(WD_x2,WD_y2) です。グリッドは原点(0,0)を基準にしますので、WD_x1、WD_y1、WD_x2、WD_y2 の各値をグリッド間隔で丸めた位置に線を描画します。なお、グリッド間隔値をdot値に変換して、10ドット以下の場合には描画しないようにします。色は灰色系にしていますが、この辺りは好きな色を自由に設定してみて下さい。
 ・マウス指定の処理で、グリッド表示の際には、グリッド位置に合うよう座標を四捨五入で丸める処理を入れます。UnitFunc.pasに、マイナス値の時も考慮した四捨五入を行う関数 Dround()を用意します。通常、四捨五入は、
 百の桁以下を丸める場合
 Int(○○○÷100+0.5)×100
 小数点3桁以降を丸めて小数点2桁にする場合
 Int(○○○÷0.01+0.5)×0.01
 のようになりますが、グリッドで、座標の数値がマイナス値の場合は、「+0.5」にすると反対側になってしまいますので、「−0.5」を行う必要があります。
 ・画面右下に表示してあるマウス現在の位置を示す座標値も、グリッドがONの場合には、丸めた数値を表示するようにしておきます。
 ・グリッドは5本毎に濃く表示しています。また、薄い線が表示されない場合、5本毎のグリッド(グリッドの5倍値)を採用するようにしています。
 
 【サンプルプログラムのソース】
 
 グリッドは直線で表現するようにしてありますが、勿論、点や円で表現する事も可能です。一応、GL_PAPERFRAME()内にコメント化してありますので、興味のある方は、直線の代わりに点や円で表示させるようにして動作を見てみて下さい。色は青色系になっています。
 
 
 
 |  | CAD装置(1) CAD装置(2)
 メディア
 AutoCADの
 DIESELマクロ
 CSV
 DXF
 PCES
 IGES
 STEP
 数学とCAD
 CAD作ろ!
 ▲PREV
 ▼NEXT
 
 |