Код с созданием вкладки

День добрый.

Есть лисп, который копирует заданную вкладку листа, делает её активной и выполняет на вкладке определённые действия. Проблема в том, что после переключения на вновь созданную вкладку (CTAB) код прерывается без какой-либо ошибки. В чём может быть косяк?

(defun C:COPYSPEC ( / srcName newName ss)
  
  (setq srcName (getstring T "\nВведите имя исходной вкладки (с числовым значением): "))
  (setq newName (itoa (1+ (atoi srcName))))
  
  (command "-LAYOUT" "C" srcName newName)
  (setvar "CTAB" newName)
  
  (command "STRETCH" "W" "417,293" "16,60" "" "0,0" "420,0")
  
  (if (setq ss (ssget "X" (list (cons 0 "VIEWPORT") (cons 410 newName))))
    (command "MOVE" ss "" "0,0" "-420,0")
  )
  
  (command "ZOOM" "A")
  
  (princ (strcat "\nГотово. Создана вкладка \"" newName "\""))
  (princ)
)

Здравствуйте! Прикрепите, пожалуйста, два DWG-файла: исходный и тот, что ожидается после выполнения скрипта.
Для чего в данном случае используется LISP вместо ручного копирования через контекстное меню, предполагается пакетная обработка большого количества файлов?

Кажется, разобрался. (setvar “CTAB” newName) прерывает код. Почему - не понял. В итоге заменил строку на (command “РЛИСТ” “УС” newName), последующий код вынес в отдельную функцию. Вот так работает:

(defun C:COPYSPEC ( / srcName newName ss oldErr)

(setq oldErr error)
(defun error (msg)
(princ (strcat "\nОшибка: " msg))
(setq error oldErr)
(princ)
)

; 1. Получить имя исходной вкладки
(setq srcName (getstring T "\nВведите имя исходной вкладки (листа): "))

; 2. Получить имя для новой вкладки
(setq newName (itoa (1+ (atoi srcName))))

; Копируем вкладку через командную строку
(command “РЛИСТ” “C” srcName newName)

; Переключаемся на новую вкладку
(command “РЛИСТ” “УС” newName)

(command “PROCSPEC”)

(setq error oldErr)
(princ “\nГотово.”)
(princ)
)
(defun C:PROCSPEC ( / ss curTab)
(setq curTab (getvar “CTAB”))

(command “STRETCH” “W” “417,293” “16,60” “” “0,0” “420,0”)

(if (setq ss (ssget “X” (list (cons 0 “VIEWPORT”) (cons 410 curTab))))
(command “MOVE” ss “” “0,0” “-420,0”)
)

(command “ZOOM” “A”)

(princ (strcat “\nВкладка “” curTab “” обработана.”))
(princ)
)

Всё это нужно для размещения на нескольких листах видовых экранов со спецификацией. В конторе такая специфика работы: спецификация может занимать 10-15-20 листов. Документацию оформляю на листах с помощью комплекта (подшивки), поэтому нужен был способ как-то автоматизировать однообразные операции: копировать лист, растянуть видовой экран, вернуть видовой экран на место.