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

ADN Club => AutoCAD .NET API => Тема начата: Борис_С от 27-05-2021, 17:24:37

Название: Как программно перейти на конкретный лист или на модель?
Отправлено: Борис_С от 27-05-2021, 17:24:37
Появился еще один вопрос. Как программно перейти на конкретный лист или на модель?
Название: Re: Как программно перейти на конкретный лист или на модель?
Отправлено: Александр Ривилис от 27-05-2021, 17:33:11
Код - C# [Выбрать]
  1. LayoutManager.Current.CurrentLayout = "имя листа";
или
Код - C# [Выбрать]
  1. LayoutManager.Current.SetCurrentLayoutId(acLayout.ObjectId);
Второй вариант предпочтительней.
Название: Re: Как программно перейти на конкретный лист или на модель?
Отправлено: Борис_С от 27-05-2021, 18:18:42
Программа не находит метод LayoutManager.Current.SetCurrentLayoutId
Название: Re: Как программно перейти на конкретный лист или на модель?
Отправлено: Борис_С от 27-05-2021, 18:26:36
А 1-ый вариант просто не работает.
Я написал оператор LayoutManager.Current.CurrentLayout = layout.LayoutName;
Он не поменял активную закладку.
Название: Re: Как программно перейти на конкретный лист или на модель?
Отправлено: Александр Ривилис от 27-05-2021, 18:31:14
Программа не находит метод LayoutManager.Current.SetCurrentLayoutId
Какая версия AutoCAD?
Название: Re: Как программно перейти на конкретный лист или на модель?
Отправлено: Александр Ривилис от 27-05-2021, 18:33:14
Я написал оператор LayoutManager.Current.CurrentLayout = layout.LayoutName;
Это нужно выполнять вне транзакции. И нужно блокировать активный документ.
Название: Re: Как программно перейти на конкретный лист или на модель?
Отправлено: Борис_С от 27-05-2021, 18:35:52
Программа не находит метод LayoutManager.Current.SetCurrentLayoutId
Какая версия AutoCAD?
Версия 2020
Название: Re: Как программно перейти на конкретный лист или на модель?
Отправлено: Борис_С от 27-05-2021, 18:42:06
Я написал оператор LayoutManager.Current.CurrentLayout = layout.LayoutName;
Это нужно выполнять вне транзакции. И нужно блокировать активный документ.
Да, это работает. Спасибо.
Название: Re: Как программно перейти на конкретный лист или на модель?
Отправлено: Александр Ривилис от 27-05-2021, 18:42:59
Программа не находит метод LayoutManager.Current.SetCurrentLayoutId
Какая версия AutoCAD?
Версия 2020
Быть не может. Перепроверь:
(https://live.staticflickr.com/65535/51206703406_04d01f58e9_o.png)



Название: Re: Как программно перейти на конкретный лист или на модель?
Отправлено: Борис_С от 27-05-2021, 19:04:35
В какой библиотеке он сидит?
Object Browser не подойдет?
Название: Re: Как программно перейти на конкретный лист или на модель?
Отправлено: Александр Ривилис от 27-05-2021, 19:12:40
AcDbMgd.dll (надеюсь, что используется правильная версия, соответствующая версии AutoCAD)
LayoutManager.SetCurrentLayoutId(Autodesk.AutoCAD.DatabaseServices.ObjectId)
(https://live.staticflickr.com/65535/51206033602_d75e74e037_o.png)

Название: Re: Как программно перейти на конкретный лист или на модель?
Отправлено: Борис_С от 27-05-2021, 19:54:34
Посмотрел в моей библиотеке. Там действительно этого метода нет.
У меня версия библиотеки 20.0.0.0
Название: Re: Как программно перейти на конкретный лист или на модель?
Отправлено: Александр Ривилис от 27-05-2021, 19:56:58
Посмотрел в моей библиотеке. Там действительно этого метода нет.
У меня версия библиотеки 20.0.0.0
Издеваешься? И это ты используешь для AutoCAD 2020? Должна быть версия 23.1.0.0 из ObjectARX SDK 2020 или из AutoCAD 2020.
Иначе возникнет огромное количество проблем.
Название: Re: Как программно перейти на конкретный лист или на модель?
Отправлено: Борис_С от 31-05-2021, 16:32:39
Ты прав. Теперь все работает.
Название: Re: Как программно перейти на конкретный лист или на модель?
Отправлено: Борис_С от 31-05-2021, 16:32:54
Спасибо.