例如:
- (defun c:test ( / enx lst mat )
- (cond
- ( (not (setq lst (nentselp "\nSelect nested line: ")))
- (princ "\nNo object selected.")
- )
- ( (/= 4 (length lst))
- (princ "\nThe selected object is not nested.")
- )
- ( (/= "LINE" (cdr (assoc 0 (setq enx (entget (car lst))))))
- (princ "\nThe selected object is not a line.")
- )
- ( (setq mat (mapcar 'rcdr (rcdr (caddr lst))))
- (princ (angtos (apply 'angle (mapcar '(lambda ( x ) (mxv mat (cdr (assoc x enx)))) '(10 11)))))
- )
- )
- (princ)
- )
- ;; Returns all but the last item of a list
- (defun rcdr ( l )
- (reverse (cdr (reverse l)))
- )
- ;; Args: m - nxn matrix, v - vector in R^n
- (defun mxv ( m v )
- (mapcar '(lambda ( r ) (apply '+ (mapcar '* r v))) m)
- )
- (princ)
|