ご利用される方へお願い
  現在配布中のソフトは、Alpha Edition (開発中版) または、Beta Edition(動作確認中版) です。
 動作エラーや計算結果が不正確なケースを発見しましたら、 当方の 掲示板 へ、フィードバックをお願いします。
 
 

 
AutoCAD VBA AutoLISP_vlax_curve_xxx_DecByVBA
 
Ver.0.30 Alpha Edition [2007/05/21]
  
 
DownLoad (ALDVBA30.lzh/88.1KB)
 
 
 
概説
  10進型(Decimal)用 拡張AutoLISP関数(曲線計測関数)をAutoCAD VBAから利用する関数
 (AutoLISP_vlax_curve_xxx_ForDecByVBA / AutoLISP_vlax_curve_xxx_ByVBA)
 および拡張AutoLISP関数(曲線計測関数)をAutoCAD VBAから利用する関数を使用するサンプルプログラム
 
 戻り値はバリアント型(Variant)の10進型(Decimal)と同程度(非Decimal対応関数除く)の桁数がありますが、
 精度は保証できません。
 
精度について
  半径1の円の面積を、AutoLISP_vlax_curve_getArea_DecByVBA関数で求めると、
  面積 3.14159 26535 89793 10862 44689 504  (動作確認 2000i)
   
  正しくは
  面積 半径×半径×円周率
    1×1×円周率
    円周率
    3.14159 26535 89793 23846 26433 8327950288 ・・・・
       
   
  なので、倍精度(14桁)より+2桁しか精度が無いことが分かります。
   
  また、2000iのヘルプによると、
   AutoLISPの実数は倍精度浮動小数点形式で格納されます。
 その有効数字は少なくとも 14 桁です。
  とありますので、実用出来るの倍精度となります。
   
 
 ご使用は、上記の精度をふまえた上でご利用下さい。
  10 進型 (Decimal)
 
10 進型 (Decimal) の変数は、96 ビット (12 バイト) の変数です。10 の累乗が変化することにより大きさの変化する符号ありの整数です。10 の累乗の指数によって、小数点の右側の桁数が指定されます。小数点以下の桁数は、0 〜 28 の範囲の値です。小数点以下の桁数が 0 の場合 (小数部分を持たない場合)、絶対値の最大値は 79,228,162,514,264,337,593,543,950,335 です。小数点以下 28 桁の場合、絶対値の最大値は 7.9228162514264337593543950335 です。絶対値の最小値は 0 を除いた場合、0.0000000000000000000000000001 です。
 
 
動作環境
 AutoCAD 2000i (VBA のバージョン 6) 以降
 注意
  2000i 以外のバージョン (2000,2002,2004,2005,2006,2007,2008) は、動作確認していません
  ※R14.01 以前のバージョンおよびLT版は、VBAが搭載されていないのでご利用できません
 
必要システム
 特になし
 
使用方法等
 [ツール]-[マクロ]-[プロジェクトをロード] で、解凍したファイル
 "AutoLISP_vlax_curve_xxx_DecByVBA000dvb"を読込み(※)ご使用下さい
 サンプルプログラムは、
 [ツール]-[マクロ]-[マクロ]で、"AutoLISP_vlax_curve_xxx_DecByVBA000dvb!Module1.Test"(※)を実行して下さい
 ※ マクロを有効にして読込んで下さい
 ※ 000はバージョン番号
 ※ xxxは各関数によって異なります
 
免責事項
 このプログラムを使用して不都合・損害等が生じても一切責任を負いません
 
その他
 そのほか使用条件等は下記に添付されている readme.txt ファイルをお読み下さい。
 
更新内容
[2007/05/21] Ver.0.30 α版 注意事項の変更、戻り値に関係ない変数の使用効率化、不要な変数宣言削除など
[2007/05/21] Ver.0.23 α版 以下の関数の送信するLISPコマンド修正
 ('3*の "vlax-vbDouble) " 文字列の前にスペースが無かったのを修正)
 AutoLISP_vlax_curve_getDistAtParam_ForDecByVBA
 AutoLISP_vlax_curve_getDistAtPoint_ForDecByVBA
 AutoLISP_vlax_curve_getEndParam_ForDecByVBA
 AutoLISP_vlax_curve_getEndPoint_ForDecByVBA
 AutoLISP_vlax_curve_getParamAtPoint_ForDecByVBA
 AutoLISP_vlax_curve_getPointAtDist_ForDecByVBA
 AutoLISP_vlax_curve_getPointAtParam_ForDecByVBA
 AutoLISP_vlax_curve_getStartParam_ForDecByVBA
 AutoLISP_vlax_curve_getStartPoint_ForDecByVBA
 AutoLISP_vlax_curve_etClosestPointTo_ForDecByVBA
 AutoLISP_vlax_curve_getClosestPointToProjection_ForDecByVBA
 AutoLISP_vlax_curve_getFirstDeriv_ForDecByVBA
 AutoLISP_vlax_curve_getSecondDeriv_ForDecByVBA
 AutoLISP_vlax_curve_getArea_ForDecByVBA
[2007/05/21] Ver.0.22 α版 AutoLISP_vlax_curve_getParamAtDist_ForDecByVBA修正
[2007/05/21] Ver.0.21 α版 スペルミス・Select Case部・コメント修正と追加
[2007/05/21] Ver.0.20 α版 10進型(Decimal)対応
[2007/05/21] Ver.0.10 α版 新規公開(非Dec対応版) こちら
 
以前のバージョン
DownLoad (ALDVBA23.lzh/90.7KB)
DownLoad (ALDVBA22.lzh/97.2KB)
DownLoad (ALDVBA21.lzh/97.7KB)
DownLoad (ALDVBA20.lzh/96.1KB)
 
 
関数説明
共通関数(拡張AutoLISP曲線計測関数ByVBAから使用する関数)
 GetSystemVariableUSERS  GetSystemVariableUSERS システム変数 "USERS?" に代入された、
 文字列(元データ形式:バリアント型データ(倍精度浮動小数点数型/Double))を取得し数値に変換
10進型(Decimal)拡張AutoLISP曲線計測関数DecByVBA (引数・戻り値はモジュール内のコメントを参照してください)
 AutoLISP_vlax_curve_getArea_DecByVBA  曲線の内側の面積を返します。
 AutoLISP_vlax_curve_getDistAtParam_DecByVBA  曲線の始点から指定されたパラメータまでの曲線のセグメントの長さを返します。
 AutoLISP_vlax_curve_getDistAtPoint_DecByVBA  曲線の始点から指定された点までの曲線のセグメントの長さを返します。
 AutoLISP_vlax_curve_getEndParam_DecByVBA  曲線の終点のパラメータを返します。
 AutoLISP_vlax_curve_getEndPoint_DecByVBA  曲線の終点(WCS 座標で)を返します。
 AutoLISP_vlax_curve_getParamAtDist_DecByVBA  曲線の始点から指定された距離だけ離れた位置の曲線のパラメータを返します。
 AutoLISP_vlax_curve_getParamAtPoint_DecByVBA  指定された点での曲線のパラメータを返します。
 AutoLISP_vlax_curve_getPointAtDist_DecByVBA  曲線のユーザが指定した距離の点(WCS 座標で)を返します。
 AutoLISP_vlax_curve_getPointAtParam_DecByVBA  曲線上の param パラメータに一致する点を調べて、その点を返します。
 AutoLISP_vlax_curve_getStartParam_DecByVBA  曲線の始点パラメータを返します。
 AutoLISP_vlax_curve_getStartPoint_DecByVBA  曲線の始点(WCS 座標で)を返します。
 AutoLISP_vlax_curve_getClosestPointTo_DecByVBA  曲線を平面に投影後、その曲線上の近接点(WCS)を返します。
 AutoLISP_vlax_curve_getClosestPointToProjection_DecByVBA  曲線を平面に投影後、その曲線上の近接点(WCS)を返します。
 AutoLISP_vlax_curve_getFirstDeriv_DecByVBA  曲線の指定された位置の 1 次導関数を(WCS 座標で)返します。
 AutoLISP_vlax_curve_getSecondDeriv_DecByVBA  曲線の指定された位置の 2 次導関数を(WCS 座標で)返します。
拡張AutoLISP曲線計測関数ByVBA (引数・戻り値はモジュール内のコメントを参照してください)
 AutoLISP_vlax_curve_isClosed_ByVBA  指定された曲線が閉じている(始点と終点が同じ)かどうかを調べます。
 AutoLISP_vlax_curve_isPeriodic_ByVBA  指定された曲線の範囲が両方向に無限かどうか、つまり、
 任意のパラメータ u に対して、(u + dT) が曲線 (u) 上の点となるとき、
 値 dT に範囲が存在するかどうかを調べます。
 AutoLISP_vlax_curve_isPlanar_ByVBA  曲線を含む平面が存在するかどうかを調べます。
注意事項
 パラメータ等はVariant型のデータを文字列に変換してAutoLISPへデータを送信しています。
 戻り値はバリアント型(Variant)の10進型(Decimal)と同程度(非Decimal対応関数除く)の桁数がありますが、精度は保証できません
 出来るだけ精度の良い戻り値を取得するには、Variant(10進型/Decimal)でパラメータをセットしてください。
不具合情報
 AutoLISP_vlax_curve_getClosestPointToProjection_DecByVBA  パラメータ extend に "nil" 以外の値を指定しても曲線を延長してくれない?
 パラメータ normal をセットしても無視される?