Сообщество программистов Autodesk в СНГ

ADN Club => AutoLisp / VisualLISP и DCL => Тема начата: Electric от 13-06-2021, 18:03:10

Название: Создание видового экрана на новом листе
Отправлено: Electric от 13-06-2021, 18:03:10
Пишу скрипт, который создает новые листы и в них программно видовые экраны  определенного размера.
Возникла проблема в строке активации модели в листе (vla-put-mspace ActiveDocument :vlax-true)

Код - Auto/Visual Lisp [Выбрать]
  1. (setq PaperSpace (vla-get-paperspace ActiveDocument)   
  2.         ; Координаты центра    
  3.         center_x (+ 20 (* 0.5 395))            
  4.         center_y (- 292 (* 0.5 header_height))  
  5.                        
  6.         ; Видовой экран
  7.         Viewport (vla-AddPViewport PaperSpace (vlax-3d-point (list center_x center_y)) table_width header_height)
  8. ) ; setq
  9.                        
  10. (vla-display Viewport :vlax-true)
  11.                
  12. ; Активизация модели в видовом экране   
  13. (vla-put-mspace ActiveDocument :vlax-true)
  14.  
  15. (setq left_point (vlax-3d-point (list (x (- y header_height))))
  16.                           right_point (vlax-3d-point (list ((+ x table_width) y))))
  17.        
  18.  ; Центровка зума экрана                      
  19. (vla-ZoomWindow Application  left_point right_point)
  20.  
  21. ; Деактивизация модели в видовом экране
  22. (vla-put-mspace ActiveDocument :vlax-false)

возвращает ошибку "; ошибка: Ошибка Automation. Нет активного видового экрана в пространстве модели. Переключение в пространство листа", хотя видовой экран на листе создан.

P.S. автоматическое создание видового экрана на новом листе  отключено (vla-put-LayoutCreateViewport Display :vlax-false)
Название: Re: Создание видового экрана на новом листе
Отправлено: Александр Ривилис от 13-06-2021, 18:17:13
Electric,
Код выполняешь из пространства модели?
Название: Re: Создание видового экрана на новом листе
Отправлено: Electric от 13-06-2021, 18:25:19
Electric,
Код выполняешь из пространства модели?

Да, команду запускаю из ModelSpace, выбираю нужные объекты и создаю листы с ВЭ.
Название: Re: Создание видового экрана на новом листе
Отправлено: Александр Ривилис от 13-06-2021, 18:34:56
Да, команду запускаю из ModelSpace, выбираю нужные объекты и создаю листы с ВЭ.
Так почему ты решил, что:
Код - Auto/Visual Lisp [Выбрать]
  1. ; Активизация модели в видовом экране    
  2. (vla-put-mspace ActiveDocument :vlax-true)
?
Ты же не перешел в пространство листа:

(https://live.staticflickr.com/65535/51244542943_7935054764_o.png)

Название: Re: Создание видового экрана на новом листе
Отправлено: Electric от 13-06-2021, 18:40:13
Да, команду запускаю из ModelSpace, выбираю нужные объекты и создаю листы с ВЭ.
Так почему ты решил, что:
Код - Auto/Visual Lisp [Выбрать]
  1. ; Активизация модели в видовом экране    
  2. (vla-put-mspace ActiveDocument :vlax-true)
?
Ты же не перешел в пространство листа:


Ну я просто не стал приводить  сюда всю портянку неотрефакторенного кода.
Но до этого я создавал лист и переключался в него:

Код - Auto/Visual Lisp [Выбрать]
  1. ; Создаем страницу
  2. (setq page_name (strcat "Спец_" (itoa i)))                 
  3. (setq Layout (vla-Add Layouts page_name))
  4. (setvar "CTAB" page_name)

Или  этого было недостаточно.
Название: Re: Создание видового экрана на новом листе
Отправлено: Александр Ривилис от 13-06-2021, 18:51:59
Electric,
Код - Auto/Visual Lisp [Выбрать]
  1. (vla-put-ActiveSpace ActiveDocument acPaperSpace)