以下函数将返回当前视图范围的列表:
- (defun LM:WindowExtents nil ;; © Lee Mac 2011
- (
- (lambda ( c v ) (list (trans (mapcar '- c v) 1 0) (trans (mapcar '+ c v) 1 0)))
- (getvar 'VIEWCTR)
- (
- (lambda ( h s ) (list (* h s) h))
- (/ (getvar 'VIEWSIZE) 2.) (apply '/ (getvar 'SCREENSIZE))
- )
- )
- )
可以使用Rectang命令调用:
- (defun c:test ( / lst )
- (setq lst (LM:WindowExtents))
- (command "_.rectang" "_non" (car lst) "_non" (cadr lst))
- (princ)
- )
或者,使用entmake(以下内容也适用于所有UCS/View):
- (defun c:test ( / lst nrm )
- (setq nrm (trans '(0. 0. 1.) 1 0 t)
- lst (mapcar 'trans (LM:WindowExtents) '(0 0) (list nrm nrm))
- )
- (entmakex
- (list
- (cons 0 "LWPOLYLINE")
- (cons 100 "AcDbEntity")
- (cons 100 "AcDbPolyline")
- (cons 90 4)
- (cons 70 1)
- (cons 10 (car lst))
- (cons 10 (list (caadr lst) (cadar lst)))
- (cons 10 (cadr lst))
- (cons 10 (list (caar lst) (cadadr lst)))
- (cons 210 nrm)
- )
- )
- (princ)
- )
|