・ (nentsel) で取得した変換マトリックスを4x3から4x4に変換する

(nentsel) はブロック図形にネストされた構成要素を選択した場合、4つの要素を含むリストを返します。
その内、3番目のリストが変換マトリックスです。
これを、計算しやすい、(nentselp)が返す 4x4 の変換マトリックスに変換するには、行と列を入れ替えて(0.0 0.0 0.0 1.0)を追加します。

;//////////////////////////////////////////////////////////////////////////////////////;
;Jo_nent_mat.lsp nentselで選択したINSERT図形のマトリックスを4x4のマトリックスに変換       ;
;                                                       By Kamijo 2003/03/26 ;
;//////////////////////////////////////////////////////////////////////////////////////;

(defun Jo_nent_mat ( / ent mat Jof_mat_3to4)

;サブルーチン 4x3のマトリックスを4x4に変換 ;
  (defun Jof_mat_3to4 ( mat / a b i mat_col mat4)
    (setq mat (mapcar '(lambda (a b) (append a (list b))) mat '(0.0 0.0 0.0 1.0)))
    (setq i 0)
    (repeat (length mat)
      (setq mat_col (list (mapcar '(lambda (x) (nth i x)) mat)))
      (setq mat4 (append mat4 mat_col))
      (setq i (1+ i))
      )
    mat4
    )

;メインルーチン ;
  (setq ent (nentsel "\nブロック図形を選択:"))
  (if (/= 4 (length ent))
    (progn
      (princ "\nブロック図形は選択されませんでした")
      (exit)
      )
    )
  (setq mat (caddr ent))
  (setq mat (Jof_mat_3to4 mat))
  (princ "\n4x4の変換マトリックス")
  (mapcar 'print mat)
  (princ)
  )

参考文献: http://www1.harenet.ne.jp/~hanafusa/memo/matrix.htm