Ошибка при работе с видовыми экранами через COM

Автор Тема: Ошибка при работе с видовыми экранами через COM  (Прочитано 161 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн simson43Автор темы

  • ADN OPEN
  • ****
  • Сообщений: 410
  • Карма: 9
Добрый день!

Пишу такой код в цикле:
Код - C# [Выбрать]
  1.             var viewPort = doc.PaperSpace.AddPViewport(new[] { 0.0, 0.0, 0.0 }, width, height);
  2.             viewPort.Target = insertPoint;
  3.             viewPort.Direction = new[] { 0.0, 0.0, 1.0 };
  4.             viewPort.Display(true);
  5.             doc.MSpace = true;//Здесь ошибка
  6.             doc.ActivePViewport = viewPort;
  7.             app.ZoomWindow(leftDown, rightUp);
  8.             doc.MSpace = false;
При чем падает через раз и рандомной итерации ( в том числе может и на первой)
Ошибка следующая - "Нет активного видового экрана в пространстве модели. Переключение в пространство листа"
Не могу найти причину(

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 9933
  • Карма: 1274
  • Рыцарь ObjectARX
  • Skype: rivilis
Для начала объясни зачем использовать COM?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн simson43Автор темы

  • ADN OPEN
  • ****
  • Сообщений: 410
  • Карма: 9
Подразумевается работа кода на удаленном компьютере.
нужно программно запустить автокад, открыть чертеж, что то поделать, сохранить закрыть.
можно конечно запустить а потом орудовать командами подгруженной .net сборки..

Оффлайн Привалов Дмитрий

  • ADN Club
  • ****
  • Сообщений: 295
  • Карма: 47
При чем падает через раз и рандомной итерации ( в том числе может и на первой)
Ошибка следующая - "Нет активного видового экрана в пространстве модели. Переключение в пространство листа"
Не могу найти причину(

doc.MSpace = true;//Здесь ошибка
doc.ActivePViewport = viewPort;
doc.MSpace = false;

Судя по всему, ты пытаешься сделать что-то странное. Переключиться в пространство модели, где нет Viewport и сделать его активным.
Он тебе даже пишет об этом, а ты искренне удивляешься.

Убери из кода лишнее:
doc.MSpace = true;
doc.MSpace = false;

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 9933
  • Карма: 1274
  • Рыцарь ObjectARX
  • Skype: rivilis
При чем падает через раз и рандомной итерации ( в том числе может и на первой)
Потестируй пример из документации:
Код - Visual Basic [Выбрать]
  1. Sub Example_ActivePViewport()
  2.    
  3.     Dim newPViewport As AcadPViewport
  4.     Dim centerPoint(0 To 2) As Double
  5.     Dim height As Double
  6.     Dim width As Double
  7.     height = 5#
  8.     width = 5#
  9.     centerPoint(0) = 5#: centerPoint(1) = 5#: centerPoint(2) = 0#
  10.    
  11.     ' Create a paper space Viewport object
  12.    ThisDrawing.ActiveSpace = acPaperSpace
  13.     Set newPViewport = ThisDrawing.PaperSpace.AddPViewport(centerPoint, width, height)
  14.     ZoomAll
  15.     newPViewport.DISPLAY (True)
  16.    
  17.     ' Before making a paper space Viewport active,
  18.    ' the mspace property needs to be True
  19.    ThisDrawing.mspace = True
  20.     ThisDrawing.ActivePViewport = newPViewport
  21. End Sub
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 9933
  • Карма: 1274
  • Рыцарь ObjectARX
  • Skype: rivilis
simson43,
Лист ты тоже программно создаешь? Если да посмотри значение системной переменной LAYOUTCREATEVIEWPORT
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение simson43 21-08-2019, 09:45:49

Оффлайн Привалов Дмитрий

  • ADN Club
  • ****
  • Сообщений: 295
  • Карма: 47
Судя по всему, ты пытаешься сделать что-то странное. Переключиться в пространство модели, где нет Viewport и сделать его активным.
Он тебе даже пишет об этом, а ты искренне удивляешься.

Похоже ошибся, переключение действительно нужно. Вот подсказка, что можно попробовать

You may be getting this because the viewport you just added isn't visible on screen.
Do a Zoom Extents before trying to switch to modelspace.

http://www.arch-pub.com/Error-with-thisdrawing-mspace-true_10492157.html

Оффлайн simson43Автор темы

  • ADN OPEN
  • ****
  • Сообщений: 410
  • Карма: 9
simson43,
Лист ты тоже программно создаешь? Если да посмотри значение системной переменной LAYOUTCREATEVIEWPORT
Нет лист создан заранее

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 9933
  • Карма: 1274
  • Рыцарь ObjectARX
  • Skype: rivilis
simson43, пример из документации проверял?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн simson43Автор темы

  • ADN OPEN
  • ****
  • Сообщений: 410
  • Карма: 9
You may be getting this because the viewport you just added isn't visible on screen.
Do a Zoom Extents before trying to switch to modelspace.
Да дело все в этом!

пример из документации проверял?
Думаю он тоже работает за счет той строчки с ZoomAll

Всем Спасибо за помощь!