Vla-getangle

提供:GizmoLabs - だいたい CAD LISP なサイト
2016年1月23日 (土) 22:12時点におけるGizmon (トーク | 投稿記録)による版 (ページの作成:「{{AutoLISP}} ; 構文 : (vla-getangle ''vla-object'' ''Point'' ''Prompt'') ; 機能 : 指定された角度を取得する。システム変数 ANGBASE と ANGDIR の...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
構文
(vla-getangle vla-object Point Prompt)


機能
指定された角度を取得する。システム変数 ANGBASE と ANGDIR の設定が考慮される。


引数
  • vla-object … VLAオブジェクト
  • Point … 1 番目の点を指定する 3D WCS 座標。
  • Prompt … ユーザに入力を求めるときに表示される文字列。


戻り値
指定された角度


MEMO
  • CAD は、ユーザが角度を入力するのを待って、選択された角度の値に対する戻り値を設定する。
  • パラメータ Point は、角度の基点の 2 次元 WCS を指定する。
  • パラメータ Prompt は、ユーザ入力を求める際に CAD が表示する文字列を指定する。
  • Point および Prompt はオプション。
  • 現在の角度単位の形式で数値を入力すれば、角度を指定することができる。また、グラフィックス画面上で 2D の 2 点を指定して角度を設定することもできる。角度が視覚的に指定できるように、最初の点から現在のクロスヘア カーソルの位置にラバーバンド線を描く。パラメータ Point が与えられている場合は、その値が 2 点の内の最初の点として使用される。角度は、WCS の XY 平面で測定されます (GetAngle では Point の Z フィールドは無視される)。
  • どの方法で角度を指定しようと、GetAngle メソッドは戻り値を常にラジアンで表す。角度は、システム変数 ANGDIR により、時計回りまたは反時計回りに増加する。
  • この機能は GetOrientation メソッドとほとんどおなじだが、GetAngle メソッドではシステム変数 ANGBASE の現在の値が考慮される。GetOrientation では、角度 0 (ゼロ)は常に真東、つまり 3 時の方向であるが、GetAngle メソッドでは、角度 0 の方向はシステム変数 ANGBASE の値となり、90 度きざみの四半円点のいずれかに設定することができる。
  • GetAngle メソッドも GetOrientation メソッドも、基準の 0 度から計測した角度(実数)をラジアンで返す。GetAngle メソッドの場合、基準角度はシステム変数 ANGBASE に等しく、GetOrientation メソッドの場合は、基準角度は右になる。どちらの関数も、システム変数 ANGDIR の現在の値を考慮する。
  • LISPの場合、getangle 関数があるので、そちらも使える。
ユーザ入力(度) GetAngle の戻り値 GetOrientation の戻り値
0(ゼロ) 0.0 1.5708
-90 1.5708 3.14159
180 3.14159 4.71239
90 4.71239 0.0
  • GetAngle メソッドでは、0 度を入力すると常に 0 ラジアンが返されるため、これを利用してブロック挿入の際の回転量を取得することができる。GetOrientation メソッドを使用して、テキスト図形を他のオブジェクトに整列させるための基準線の角度を取得することができる。
  • 角度ではなくキーワードが返された場合は、「ユーザ入力がキーワードです」というエラー メッセージが表示される。GetInput メソッドを使用して、戻り値からキーワードを取得する。


サンプル
(vl-load-com)
(defun c:Example_GetAngle()
    ;; ユーザからの角度を取得するための4つの異なる方法を示すサンプル。
    (setq acadObj (vlax-get-acad-object))
    (setq doc (vla-get-ActiveDocument acadObj))
      
    ;; プロンプトで、角度をラジアンで返す。
    (setq retAngle (vla-GetAngle (vla-get-Utility doc) nil "\n角度を入力して Enter: "))
    (alert (strcat "入力された角度 " (rtos retAngle 2)))
    
    ;; プロンプトを表示せず、角度をラジアンで返す。
    (setq retAngle (vla-GetAngle (vla-get-Utility doc)))
    (alert (strcat "入力された角度 " (rtos retAngle 2)))
    
    ;; プロンプトで、基点と角度をラジアン単で返す。
    (setq basePnt (vlax-3d-point 2 2 0))
    (setq retAngle (vla-GetAngle (vla-get-Utility doc) basePnt "\n角度を入力して Enter: "))
    (alert (strcat "入力された角度 " (rtos retAngle 2)))
    
    ;; プロンプトなしで、基点と角度をラジアン単で返す。
    (setq retAngle (vla-GetAngle (vla-get-Utility doc) basePnt))
    (alert (strcat "入力された角度 " (rtos retAngle 2)))
)

関連事項