Vlax-tmatrix

提供:GizmoLabs - だいたい CAD LISP なサイト
2009年11月16日 (月) 16:56時点におけるGizmon (トーク | 投稿記録)による版 (ページの作成: ; 構文 : (vlax-tmatrix ''list'') ; 機能 : VLA メソッドで使用される 4 x 4 変換マトリックスに適した表現を返す。 ; 引数 :* list : それぞれ…)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
構文
(vlax-tmatrix list)


機能
VLA メソッドで使用される 4 x 4 変換マトリックスに適した表現を返す。
引数
  • list : それぞれに 4 つの数値(変換マトリックスの要素)が含まれるリストのリスト。
戻り値
4×4 の変換マトリックスを表すセーフ配列タイプのバリアント型。


サンプル
変換マトリックスを定義し、変数 tmatrix に値を割り当てる。
(setq tmatrix (vlax-tmatrix '((1 1 1 0) (1 2 3 0) (2 3 4 5) (2 9 8 3))))
#<variant 8197 ...>
vlax-safearray->list 関数を使用して、tmatrix の値をリスト形式で表示する。
(vlax-safearray->list (vlax-variant-value tmatrix))
((1.0 1.0 1.0 0.0) (1.0 2.0 3.0 0.0) (2.0 3.0 4.0 5.0) (2.0 9.0 8.0 3.0))
次のコードは、線分を作成し、次に変換マトリックスを使用して 90 度回転する。
(defun Example_TransformBy () ; / lineObj startPt endPt matList transMat) 
  (vl-load-com) ; ActiveX サポートをロード
  (setq acadObject (vlax-get-acad-object))
  (setq acadDocument (vla-get-ActiveDocument acadObject))
  (setq mSpace (vla-get-ModelSpace acadDocument))

  ;; 線分を作成
  (setq startPt (getpoint "始点を指定"))
  (setq endPt (vlax-3d-point (getpoint startPt "終点を指定")))
  (setq lineObj (vla-addline mSpace (vlax-3d-point startPt) endPt))

  ;;; 点(0,0,0)を中心に, オブジェクトを 90 度回転する
  ;;; 変換マトリックスで変数 transMat を初期化します.
  ;;; まず, それぞれが 4 つの数値(変換マトリックスの要素)を含む
  ;;; リストのリストを作成します.
  (setq matList (list '(0 -1 0 0) '(1 0 0 0) '(0 0 1 0) '(0 0 0 1)))

  ;;; vlax-tmatrix を使用して, リストをバリアント型に変換します.
  (setq transmat (vlax-tmatrix matList))

  ;;;  定義された変換マトリックスを使用して線分を変換します.
  (vla-transformby lineObj transMat)
  (vla-zoomall acadObject)
 
  (princ "線分は変換されました ")
  (princ)
 )