LAYOUTCREATEVIEWPORT – работает или нет?

В одном из чатов всплыла эта переменная с текстом примерно следующего содержания:
"переменную LAYOUTCREATEVIEWPORT выставляю в начале команды в 0. Программно созданные листы все-равно имеют видовой экран"
Полез проверять.

Пробую создать (стартовое значение переменной - 1):

1
2
3
4
5
6
7
(defun t1 (/ sysvar layout)
  (setq sysvar (getvar "LAYOUTCREATEVIEWPORT"))
  (setvar "LAYOUTCREATEVIEWPORT" 0)
  (setq layout (vla-add (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object))) "qq"))
  (setvar "LAYOUTCREATEVIEWPORT" sysvar)
  layout
) ;_ end of defun

Хм... Видовой экран на месте. А если вынести назначение переменной во внешнюю функцию?

1
2
3
4
5
6
7
8
9
10
11
12
(defun t2 (/ sysvar layout)
  (setq sysvar (f1))
  (setq layout (vla-add (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object))) "qq"))
  (setvar "LAYOUTCREATEVIEWPORT" sysvar)
  layout
) ;_ end of defun

(defun f1 (/ sysvar)
  (setq sysvar (getvar "LAYOUTCREATEVIEWPORT"))
  (setvar "LAYOUTCREATEVIEWPORT" 0)
  sysvar
) ;_ end of defun

Не, что сову об пень, что пнем по сове - ВЭ на месте.

А если попробовать командные методы (хоть я и не люблю их)?

1
2
3
4
5
6
7
(defun t3 (/ sysvar layout)
  (setq sysvar (getvar "LAYOUTCREATEVIEWPORT"))
  (vl-cmdf "LAYOUTCREATEVIEWPORT" "_OFF")
  (setq layout (vla-add (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object))) "qq"))
  (setvar "LAYOUTCREATEVIEWPORT" sysvar)
  layout
) ;_ end of defun

Все равно ВЭ никуда не девается.

Что еще? Ставить метки начала-конца отмены? Ну, во-первых, вопросы со вложенностью таких меток, а во-вторых, все равно не работает (ACAD2020x64). Похоже, что ответ другого участника чата: "Создать с экраном по умолчанию, а потом удалить тот, что создался" - чуть ли не единственный вариант.



Комментарии

Есть 3 коммент. к “LAYOUTCREATEVIEWPORT – работает или нет?”
  1. Евгений пишет:
    1
    2
    3
    (if (= (vla-get-LayoutCreateViewport Display) :vlax-true) ; Проверка пользовательской настройки
                    (vla-put-LayoutCreateViewport Display :vlax-false) ; Отключение автоматического создания видового экрана
                  )
  2. Кулик Алексей aka kpblc пишет:

    А Display - это

    1
    (vla-get-display (vla-get-Preferences (vlax-get-acad-object)))

    ?

  3. Евгений пишет:

    ага

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


Я не робот.