マウス ホイール エラー

使用バージョン AutoCAD 2000i
その他の環境等 Windows 2000 Pro SP4 + IE6
日時 2007年11月11日 09:56頃
エラー発生時の状況 VBAの統合開発環境(IDE)で、ウォッチ式確認時。
 
  VBAにて、新規図面に直線を作成後、ウォッチ式にて、データを確認した時。
 
AutoCAD で扱える座標の範囲を知りたくて、ヘルプを探しても見つからず。
開発用マニュアル(ヘルプ)での座標値のデータタイプは、
通常、バリアント型 (3 要素の倍精度浮動小数点数型配列)が指定されているので、
倍精度浮動小数点数型の最大値で確認してみることに。。。
  
 プログラムは、ヘルプの”AddLine サンプル コード”の座標値を置き換えたもの。
  始点・・・倍精度浮動小数点数型 (Double) の負の値の最大値 (
-1.79769313486231E+308)
  終点・・・倍精度浮動小数点数型 (Double) の正の値の最大値 (
1.79769313486231E+308)
 
2000iのVBAヘルプには、1.79769313486232E308とあるがIDEで入力エラーとなるため次に大きな値とした
Sub Example_AddLine()
    ' This example adds a line in model space

    Dim lineObj As AcadLine
    Dim startPoint(0 To 2) As Double
    Dim endPoint(0 To 2) As Double

    ' Define the start and end points for the line
    startPoint(0) = -1.79769313486231E+308: startPoint(1) = -1.79769313486231E+308: startPoint(2) = 0#
    endPoint(0) = 1.79769313486231E+308: endPoint(1) = 1.79769313486231E+308: endPoint(2) = 0#

    ' Create the line in model space
    Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)
    ZoomAll

End Sub

ウォッチ式に、"ActiveDocument" を登録。
対象は、プロシージャ・モジュールとも すべて を選択。
 
[ツール]-[マクロ]-[マクロ]で、上記VBAを実行し、
IDEに戻って、"ActiveDocument"の+マークをクリックし展開。

で、次の"ModelSpace"-"Item 1"や
その中にある "EndPoint" または "StartPoint" まで展開できるが、
マウスのホイールを回すとエラーに
 
”OK”のクリックで、次の”AutoCAD 警告”ダイアログが表示される。
 
 
 その後、エラー再現作業で、"ModelSpace"-"Item 1"の展開以降にホイールを回すと
 エラーになることが確認できた。
 
 ちなみに、"Item 1"に含まれるプロパティ中2個のデータがエラー値。
  ・ Angle : -1.#IND
  ・ Length : -1.#INF

保存の必要もないので、”いいえ”をクリック。
 
で、AutoCADが落ちた(消えた)・・・

勝手な原因推測 VBAの統合開発環境(IDE)でマウスのホイールを使用するためのアドイン DLL 
 http://support.microsoft.com/default.aspx?scid=kb%3Bja%3B837910
をインストールしてあるのが原因か?

ま、座標値が倍精度浮動小数点数型の最大値だと、
プロパティ計算時にオーバーフロー等の不具合が生じると、推察はできます。。。

ので、”座標値が原因”が原因の本命と思われる。
勝手な対策 1作図単位を1mmとすると、宇宙の大きさは 9.7978×1029 作図単位(mm) 。
 
   930億光年 9.3×1010光年
9.3×1010 * 9.46×1018 mm/光年
9.7978×1029 mm
  
宇宙 - Wikipedia
光年 - Wikipedia
  
また、SI単位系の長さの最小単位 fm (フェムトメートル)は、  10-18 10-12作図単位(mm) 。
 
     fm:原子物理、核物理の分野の微少長さを表す単位
1 fm = 10-15 m = 10-18 mm
1 fm = 10-15 m = 10-15 m x 1000mm/m = 10-12 mm
    
フェムトメートル - Wikipedia

 
よって、1作図単位を1mmとすれば、(有効桁数は少ないが)
単精度浮動小数点数型 (Single) の範囲で、実世界のすべてを表現できる。

単精度浮動小数点数型 (Single)
         負の値  -3.402823E+38 〜 -1.401298E-45
正の値   1.401298E-45 〜 3.402823E+38


その後、色々試して、指数が3桁になると不具合が生じると推察。
 
通常の使用範囲では問題はないと思われるので、特別対策はとらないこととする。

反省