马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
读Lee Mac的关联包围盒,觉得这个程序没什么用处,不过其内的文本包围盒,倒是可以提取出来作为通用函数使用
 - ;; Matrix x Vector - Vladimir Nesterovsky
- ;; Args: m - nxn matrix, v - vector in R^n
- (defun mxv (m v)
- (mapcar '(lambda (r) (apply '+ (mapcar '* r v))) m)
- )
- ;; The following function is based on code by gile
- ;;文本包围盒(tbox:textbox (car(entsel)) 2)
- (defun tbox:textbox (enx off / B H J L M N O P R STR W)
- (setq str (cdr (assoc 0 enx)))
- (if
- (setq l
- (cond
- ((or (= "TEXT" str) (= "ATTDEF" str))
- (setq b (cdr (assoc 10 enx))
- r (cdr (assoc 50 enx))
- l (textbox enx)
- )
- (list
- (list (- (caar l) off) (- (cadar l) off))
- (list (+ (caadr l) off) (- (cadar l) off))
- (list (+ (caadr l) off) (+ (cadadr l) off))
- (list (- (caar l) off) (+ (cadadr l) off))
- )
- )
- ((= "MTEXT" str)
- (setq n (cdr (assoc 210 enx))
- b (trans (cdr (assoc 10 enx)) 0 n)
- r (angle '(0.0 0.0 0.0) (trans (cdr (assoc 11 enx)) 0 n))
- w (cdr (assoc 42 enx))
- h (cdr (assoc 43 enx))
- j (cdr (assoc 71 enx))
- o (list
- (cond
- ((member j '(2 5 8)) (/ w -2.0))
- ((member j '(3 6 9)) (- w))
- (0.0)
- )
- (cond
- ((member j '(1 2 3)) (- h))
- ((member j '(4 5 6)) (/ h -2.0))
- (0.0)
- )
- )
- )
- (list
- (list (- (car o) off) (- (cadr o) off))
- (list (+ (car o) w off) (- (cadr o) off))
- (list (+ (car o) w off) (+ (cadr o) h off))
- (list (- (car o) off) (+ (cadr o) h off))
- )
- )
- )
- )
- ((lambda (m)
- (mapcar '(lambda (p) (mapcar '+ (mxv m p) b)) l)
- )
- (list
- (list (cos r) (sin (- r)) 0.0)
- (list (sin r) (cos r) 0.0)
- '(0.0 0.0 1.0)
- )
- )
- )
- )
|