
- ;|
- ;;----------------------------------------------------------------------
- ;;按你说的,好像不行???
- (defun MREV (A B / N U V)
- (setq N 0)
- (repeat (- (length A) 1)
- (setq U (cons (mapcar '(lambda (V) (* (nth N B) V)) (nth N A)) U)
- N (1+ N)
- )
- )
- (append (reverse U) (list (nth 3 A)))
- )
- (defun C:TT (/ TM TMP)
- (setq TM (nentselp "\n选取要对齐UCS的图块:"))
- (setq TMP (vlax-ename->vla-object (car (last TM))))
- (vla-transformby
- (vlax-ename->vla-object (car (entsel "\n选取转换对象:")))
- (vlax-tmatrix
- (MREV (EA:MATRIX_INVERSE
- (caddr TM)
- )
- (list (/ 1 (vla-get-xscalefactor TMP))
- (/ 1 (vla-get-yscalefactor TMP))
- (/ 1 (vla-get-zscalefactor TMP))
- )
- )
- )
- )
- )
- ;;----------------------------------------------------------------------
- |;
- ;;----------------------------------------------------------------------
- ;;功能:把对象退回原图块位置
- ;;X Y Z比例相同时,这样做可以,但比例不同要如何做???
- (defun MREV (A B / N U V)
- (setq N 0)
- (repeat (- (length A) 1)
- (setq U (cons (mapcar '(lambda (V) (* B V)) (nth N A)) U)
- N (1+ N)
- )
- )
- (append (reverse U) (list (nth 3 A)))
- )
- (defun C:TT1 (/ TM TMP)
- (setq TM (nentselp "\n选取要对齐UCS的图块:"))
- (setq TMP (vlax-ename->vla-object (car (last TM))))
- (vla-transformby
- (vlax-ename->vla-object (car (entsel "\n选取转换对象:")))
- (vlax-tmatrix
- (MREV (EA:MATRIX_INVERSE
- (caddr TM)
- )
- (* (/ 1 (vla-get-xscalefactor TMP))
- (/ 1 (vla-get-yscalefactor TMP))
- (/ 1 (vla-get-zscalefactor TMP))
- )
- )
- )
- )
- )
- ;;----------------------------------------------------------------------
|