Определение границ пространства модели

Надоело что-то мне постоянно рыскать на этот предмет...

Собственно задача: надо определить границы видимой области (ну мало ли зачем!). Вопрос - как это сделать?

В принципе все не так уж и сложно:

  1. Найти центр показываемой области. Системная переменная VIEWCTR
  2. Найти высоту показываемой области. Переменная VIEWSIZE
  3. Определить разрешение экрана по горизонтали и вертикали. Переменная SCREENSIZE
  4. Вычислить ширину отображаемой области: Высота*РазрешениеГоризонт/РазрешениеВерт
  5. От центра отнять / прибавить половину вычисленной высоты и ширины области

Код элементарен:

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 :(

Размещено в AutoCAD, Код LISP, Функции LISP · Метки: ,



Поделитесь своим мнением


Я не робот.