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

ADN Club => AutoCAD .NET API => Тема начата: simson43 от 20-08-2019, 14:46:37

Название: Ошибка при работе с видовыми экранами через COM
Отправлено: simson43 от 20-08-2019, 14:46:37
Добрый день!

Пишу такой код в цикле:
Код - 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;
При чем падает через раз и рандомной итерации ( в том числе может и на первой)
Ошибка следующая - "Нет активного видового экрана в пространстве модели. Переключение в пространство листа"
Не могу найти причину(
Название: Re: Ошибка при работе с видовыми экранами через COM
Отправлено: Александр Ривилис от 20-08-2019, 14:51:03
Для начала объясни зачем использовать COM?
Название: Re: Ошибка при работе с видовыми экранами через COM
Отправлено: simson43 от 20-08-2019, 14:58:29
Подразумевается работа кода на удаленном компьютере.
нужно программно запустить автокад, открыть чертеж, что то поделать, сохранить закрыть.
можно конечно запустить а потом орудовать командами подгруженной .net сборки..
Название: Re: Ошибка при работе с видовыми экранами через COM
Отправлено: Привалов Дмитрий от 20-08-2019, 15:04:42
При чем падает через раз и рандомной итерации ( в том числе может и на первой)
Ошибка следующая - "Нет активного видового экрана в пространстве модели. Переключение в пространство листа"
Не могу найти причину(

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

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

Убери из кода лишнее:
doc.MSpace = true;
doc.MSpace = false;
Название: Re: Ошибка при работе с видовыми экранами через COM
Отправлено: Александр Ривилис от 20-08-2019, 15:10:40
При чем падает через раз и рандомной итерации ( в том числе может и на первой)
Потестируй пример из документации:
Код - 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
Название: Re: Ошибка при работе с видовыми экранами через COM
Отправлено: Александр Ривилис от 20-08-2019, 15:11:19
simson43,
Лист ты тоже программно создаешь? Если да посмотри значение системной переменной LAYOUTCREATEVIEWPORT
Название: Re: Ошибка при работе с видовыми экранами через COM
Отправлено: Привалов Дмитрий от 20-08-2019, 15:18:53
Судя по всему, ты пытаешься сделать что-то странное. Переключиться в пространство модели, где нет 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
Название: Re: Ошибка при работе с видовыми экранами через COM
Отправлено: simson43 от 20-08-2019, 20:27:39
simson43,
Лист ты тоже программно создаешь? Если да посмотри значение системной переменной LAYOUTCREATEVIEWPORT
Нет лист создан заранее
Название: Re: Ошибка при работе с видовыми экранами через COM
Отправлено: Александр Ривилис от 20-08-2019, 21:35:21
simson43, пример из документации проверял?
Название: Re: Ошибка при работе с видовыми экранами через COM
Отправлено: simson43 от 21-08-2019, 09:45:41
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

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