马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
 - (defun XD::Object:Transform (target matrix / e temp i)
- (cond
- ((eq 'VLA-OBJECT (type target))
- (vla-TransformBy target
- (if (= (type matrix) 'VARIANT)
- matrix
- (vlax-tMatrix matrix)
- )
- )
- target
- )
- ((eq 'ENAME (type target))
- (vla-TransformBy target
- (if (= (type matrix) 'VARIANT)
- matrix
- (vlax-tMatrix matrix)
- )
- )
- target
- )
- ((eq 'PICKSET (type target))
- (setq i -1)
- (while (setq e (ssname target (setq i (1+ i))))
- (XD::Object:Transform e matrix)
- )
- target
- )
- ((listp target)
- (if (and (= (length target) 3)
- (or (= (type (car target)) 'real) (= (type (car target)) 'int))
- (or (= (type (cadr target)) 'real) (= (type (cadr target)) 'int))
- (or (= (type (caddr target)) 'real) (= (type (caddr target)) 'int))
- )
- (car (xd::object:transform (list target) matrix))
- (mapcar '(lambda (x / temp)
- (cond ((or (= (type x) 'VLA-OBJECT)
- (= (type x) 'ENAME)
- (= (type x) 'PICKSET)
- )
- (XD::OBJECT:Transform x matrix)
- )
- ((and (listp x) (= (length x) 3))
- (setq temp (if (= (type matrix) 'VARIANT)
- (xd::vla:variant->value matrix)
- matrix
- )
- temp (mapcar '(lambda (y) (list (car y) (cadr y) (caddr y)))
- matrix
- )
- )
- (mapcar '+
- (XD::MAT:M*V temp x)
- (reverse (cdr (reverse (mapcar 'last matrix))))
- )
- )
- )
- )
- target
- )
- )
- )
- )
- )
|