Определение границ пространства модели
Надоело что-то мне постоянно рыскать на этот предмет...
Собственно задача: надо определить границы видимой области (ну мало ли зачем!). Вопрос - как это сделать?
В принципе все не так уж и сложно:
- Найти центр показываемой области. Системная переменная VIEWCTR
- Найти высоту показываемой области. Переменная VIEWSIZE
- Определить разрешение экрана по горизонтали и вертикали. Переменная SCREENSIZE
- Вычислить ширину отображаемой области: Высота*РазрешениеГоризонт/РазрешениеВерт
- От центра отнять / прибавить половину вычисленной высоты и ширины области
Код элементарен:
1 2 3 4 5 6 7 8 9 | (defun get-view-size (/ viewctr width height) (setq viewctr (getvar "viewctr") height (getvar "viewsize") width (* height (apply (function /) (getvar "screensize"))) ) ;_ end of setq (list (list (- (car viewctr) (* 0.5 width)) (- (cadr viewctr) (* 0.5 height))) (list (+ (car viewctr) (* 0.5 width)) (+ (cadr viewctr) (* 0.5 height))) ) ;_ end of list ) ;_ end of defun |
Ну или слегка более навороченный:
1 2 3 4 5 6 7 8 | (defun get-view-size (/ viewctr width height pt) (setq viewctr (getvar "viewctr") height (getvar "viewsize") width (* height (apply (function /) (getvar "screensize"))) pt (list (* 0.5 width) (* 0.5 height)) ) ;_ end of setq (list (mapcar (function -) viewctr pt) (mapcar (function +) viewctr pt)) ) ;_ end of defun |
P.S. Забыл про преобразование координат в DCS