・ (nentselp) が返す変換マトリックス (4x4) から、変換尺度を得る
・ (nentsel) が返す変換マトリックス (3x4) から、変換尺度を得る

(nentselp) が返す変換マトリックスは、次のように考えることができます

つまり、ベクトル Vx Vy Vz の長さを求めれば、尺度が分かります

;/////////////////////////////////////////////////////////////////////////////////////////////////;
;*** Jo_nobj_scal4.lsp   ネストされたオブジェクトの尺度を取得           By Kamijo    2003/10/01***;
;               (nentselp が返す4X4のマトリックスから求める)                                   ;
;/////////////////////////////////////////////////////////////////////////////////////////////////;
(defun Jo_nobj_scal4 ( / mat ent n s_e scal)  
  (while (not mat)
    (while (not ent)
      (initget " ")
      (setq ent (nentselp "\nINSERT図形上の点を指示 または <終了>:"))
      (if (= ent "")
	(exit)
	)
      )    
    (if (= 4 (length ent))
      (setq mat (caddr ent))
      (setq ent nil)
      )
    )

  (setq mat (reverse (cdr (reverse mat))));4x4の行列の最後の行を削除;
  (setq n 0)
  (repeat 3
    (setq s_e (sqrt (apply '+ (mapcar '(lambda (x) (expt (nth n x) 2)) mat))))
    (setq n (1+ n))
    (setq scal (append scal (list s_e)))
    )
  (mapcar '(lambda (a b) (print (strcat a ":" (rtos b) "x"))) '("X" "Y" "Z") scal)
  (princ)
  )
  

(nentsel)が返す変換マトリックスは、行と列が入れ替わるので、次のようになります

;/////////////////////////////////////////////////////////////////////////////////////////////////;
;*** Jo_nobj_scal3.lsp   ネストされたオブジェクトの尺度を取得           By Kamijo    2003/10/01***;
;                       (nentsel が返す3X4のマトリックスから求める)                            ;
;/////////////////////////////////////////////////////////////////////////////////////////////////;
(defun Jo_nobj_scal3 ( / ent mat n s_e scal)
  (while (not mat)
    (while (not ent)
      (initget " ")
      (setq ent (nentsel "\nINSERT図形を選択 または <終了>:"))
      (if (= ent "")
	(exit)
	)
      )
    (if (= 4 (length ent))
      (setq mat (caddr ent))
      (setq ent nil)
      )
    )

  (setq mat (reverse (cdr (reverse (caddr ent)))))
  (setq n 0)
  (repeat 3
    (setq s_e (sqrt (apply '+ (mapcar '(lambda (x) (expt x 2)) (nth n mat)))))
    (setq n (1+ n))
    (setq scal (append scal (list s_e)))
    )
  (mapcar '(lambda (a b) (print (strcat a ":" (rtos b) "x"))) '("X" "Y" "Z") scal)
  (princ)
  )