マウス ホイール エラー |
使用バージョン |
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) 。
また、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桁になると不具合が生じると推察。
通常の使用範囲では問題はないと思われるので、特別対策はとらないこととする。
|
反省 |
|