Последние сообщения

Последние сообщения

Страницы: [1] 2 3 ... 10
1
AutoCAD .NET API / Re: Создание листов
« Последний ответ от igrik 11-11-2025, 09:29:38 »
Скорее всего это нормально, если чертеж насыщенный, то обновление видового экрана занимает больше времени. Плюс их много.

Предполагаю, что viewport.On = true; можно не выполнять на каждом видовом экране.
Да, вот эти лаги при насыщенном чертеже и хотелось бы обойти. Вот ищу способ.

viewport.On = falsе нерабочий способ. Он просто выключает показ отображаемого содержимого у viewport. И тогда пользователю нужно будет заходить в видовой экран и руками включать этот вьюпорт.

Походу Автокадовскими средствами эту проблему не решить, и придётся выдумывать велосипед. Я поэтому и задал вопрос, может кто такой уже и придумал

Извините, вам запрещён просмотр содержимого спойлеров.
2
AutoCAD .NET API / Re: Создание листов
« Последний ответ от Привалов Дмитрий 10-11-2025, 07:22:12 »
Вопрос - есть ли способы обойти задержку при обновлении/создании Viewport. Или это особенность Автокада?
Доброе утро!
Скорее всего это нормально, если чертеж насыщенный, то обновление видового экрана занимает больше времени. Плюс их много.

Предполагаю, что viewport.On = true; можно не выполнять на каждом видовом экране.
Достаточно выполнить его на текущем листе.

Далее пользователь при переходе на нужный ему лист вызовет обновление видового экрана.
3
AutoCAD .NET API / Re: Создание листов
« Последний ответ от igrik 08-11-2025, 13:36:00 »
Всем привет. Подниму тему (хотя возможно данный вопрос уже поднимался, но я не нашёл)
При большом объёме данных в чертеже, когда я произвожу массовое создание листов (и на них по одному вьюпорту (Viewport)), это самое создание происходит очень долго.
Ошибок создания нет, но вопрос именно в длительности всей операции, которая при кол-во листов от 100 и до 255 может достигать и 5 минут.

Участок кода прилагаю:
Код - vb.net [Выбрать]
  1. int viewportsCount = layout.GetViewports().Count;
  2. Viewport viewport;
  3. if (viewportsCount == 1)
  4. {
  5.     BlockTableRecord paperSpace =
  6.         (BlockTableRecord)tr.GetObject(layout.BlockTableRecordId, OpenMode.ForWrite) as BlockTableRecord;
  7.  
  8.     viewport = new Viewport();
  9.     viewport.SetDatabaseDefaults();
  10.     paperSpace.AppendEntity(viewport);
  11.     tr.AddNewlyCreatedDBObject(viewport, true);
  12.     viewport.On = true; // вот это заставляет вьюпорты обновляться и создаваться очень-очень долго
  13. }
  14. else
  15. {
  16.     /// ... другой код
  17. }
  18.  
Вопрос - есть ли способы обойти задержку при обновлении/создании Viewport. Или это особенность Автокада?
Такая особенность на всех мной испробованных версиях от 2014 до 2020 автокада.
Может уже на форуме решались такие вопросы.
4
При поиске из страницы топика нашелся только один ответ, почему-то.
Пользуйся этим поиском с выбором раздела или разделов и результаты в виде сообщений, а не тем.

5
AutoCAD .NET API / Re: Не могу получить AcadApplication через COM.
« Последний ответ от Gr.Om 30-10-2025, 16:07:46 »
И что-то поиск у тебя плохо работает. Только в разделе .NET у меня нашлось 104 сообщения с AcadApplication.
Как правило ищу в гугле, а не через поисковик форма. А с ним действительно не сразу понял, как он работает. При поиске из страницы топика нашелся только один ответ, почему-то. А если выйти из темы, то норм.
Да и в целом, когда сталкиваешься с проблемой еще плохо понимаешь, какие ключевые слова нужно использовать.
Когда целый день проковырялся, выяснил проблему, тогда уже понимаешь, почему тип AcadApplication является ключевым:)
А так - куча разных вариантов (учитывая левые придумки AI-чатов) и без контекста или прямого пояснения не понятно, как точно должно быть.
В DevGuide так же про взаимодействие с COM только вскользь и без подробностей.
6
И еще, для общего развития.. Способ через Marshal.GetActiveObject, выходит, используется только в случаях получения Application из других приложений?
Не только. В данном случае это лишнее внутри AutoCAD.
И что-то поиск у тебя плохо работает. Только в разделе .NET у меня нашлось 104 сообщения с AcadApplication.
7
AutoCAD .NET API / Re: Не могу получить AcadApplication через COM.
« Последний ответ от Gr.Om 29-10-2025, 20:14:00 »
Как раз поиском трудно найти что-то дельное и относящееся к проблеме. К примеру поиск по "AcadApplication" дает ссылку на единственный пост:



Я кстати встречал этот вариант в другом источнике, но подумал, что получу им объект API, а не COM и не стал пробовать.
Правильно ли я понимаю, что изнутри автокада правильный и единственный способ именно такой:

AcadApplication COMApp = Application.AcadApplication as AcadApplication;
И еще, для общего развития.. Способ через Marshal.GetActiveObject, выходит, используется только в случаях получения Application из других приложений?
8
На этом форуме и конкретно в этом разделе есть множество примеров получения и использования AcadApplication. Воспользуйся поиском.
9
AutoCAD .NET API / Re: Не могу получить AcadApplication через COM.
« Последний ответ от Gr.Om 29-10-2025, 19:58:20 »
Да нет, в разных источниках находил. В т.ч. вполне авторитетных)):

10
Во всех примерах объект получают в таком виде:
Это ChatGPT такое предложил?
Страницы: [1] 2 3 ... 10