Загрузка элементов во время загрузки базы

Автор Тема: Загрузка элементов во время загрузки базы  (Прочитано 10469 раз)

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

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

  • ADN OPEN
  • ***
  • Сообщений: 162
  • Карма: 6
Правильно я понимаю, что сначала в момент открытия чертежа (условно в событиях dwg_open dwg_Created) все Entity загружаются в память. И потом я уже "вторично" могу по ним пройтись и взять нужные данные Polyline.Area XData и пр.

А можно например в момент загрузки Entity или ObjectDB в память из чертежа сразу его и обработать? Например посчитать длины полилиний.
Спасибо.

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 738
Чисто теоретически: можно отловить событие создания БД чертежа и прицепить к ней обработку события добавления в неё объектов. Но зачем?

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

  • Administrator
  • *****
  • Сообщений: 13894
  • Карма: 1789
  • Рыцарь ObjectARX
  • Skype: rivilis
Правильно я понимаю, что сначала в момент открытия чертежа (условно в событиях dwg_open dwg_Created) все Entity загружаются в память.
Нет.
А можно например в момент загрузки Entity или ObjectDB в память из чертежа сразу его и обработать?
Нет такого события. К сожалению я должен констатировать, что у тебя пока нет понимания работы AutoCAD. В дальнейшем постарайся описать что тебе нужно получить в конечном итоге, а мы постараемся объяснить как это можно сделать (если это возможно).
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13894
  • Карма: 1789
  • Рыцарь ObjectARX
  • Skype: rivilis
Чисто теоретически: можно отловить событие создания БД чертежа и прицепить к ней обработку события добавления в неё объектов.
Это будут объекты, которые потом добавляются к базе, а не те, которые были в базе при её открытии.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 738
Мы же, если программно читаем БД чертежа, сперва создаём Database, а потом применяем к ней метод чтения из файла. Вот между этими действиями и можно было бы вставить обработчик события. Я предположил, что, возможно, любое открытие чертежа работает по такому же принципу (не только программное) - сперва создаётся пустая БД, потом наполняется объектами. Но очень может быть, что всё совсем не так.

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

  • Administrator
  • *****
  • Сообщений: 13894
  • Карма: 1789
  • Рыцарь ObjectARX
  • Skype: rivilis
Но очень может быть, что всё совсем не так.
А проверить??? :-)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 738
Нет времени. А главное - нет необходимости. Вот если автору темы надо - пусть проверяет ;)

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

  • ADN OPEN
  • ***
  • Сообщений: 162
  • Карма: 6
Это будут объекты, которые потом добавляются к базе, а не те, которые были в базе при её открытии.

В какой момент Handle меняются в базе документа при открытии чертежа?
Какое то сравнение происходит на совпадение в базе?
И так каждый объект добавляясь из файла в базу, проверяет свой старый Handle на совпадение, и если найдено, то свой меняет, а потом опять проходится по базе и меняет ещё у связанных?

Или в конце, все загрузились и потом сортировка?

Онлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1116
  • Карма: 173
Насколько я понимаю, Handle сами по себе не меняются. Единственная ненулевая вероятность - Handle может быть изменен при вставке файла как внешней ссылки. Вот тогда в файле-владельце Handle могут быть и изменены.
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

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

  • ADN OPEN
  • ***
  • Сообщений: 162
  • Карма: 6
Я где то на форуме прочитал, что Handle может измениться у Объекта, а может и нет при загрузке чертежа. Если речь только про внешние ссылки это значительно упрощает дело.

Онлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1116
  • Карма: 173
Это ObjectID меняется каждый раз, но Handle... По-моему, это нечто неизменное :)
О, есть еще пара вариантов, когда Handle меняется!
1. Вставка текущего файла в другой как блок.
2. Выполнение команды _.wblock или _.-wblock и выполнение аналогичных действий.
Правда, это уже не будет иметь никакого отношения к текущему файлу.
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

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

  • Administrator
  • *****
  • Сообщений: 13894
  • Карма: 1789
  • Рыцарь ObjectARX
  • Skype: rivilis
 
В какой момент Handle меняются в базе документа при открытии чертежа?
Какое то сравнение происходит на совпадение в базе?
И так каждый объект добавляясь из файла в базу, проверяет свой старый Handle на совпадение, и если найдено, то свой меняет, а потом опять проходится по базе и меняет ещё у связанных?

Или в конце, все загрузились и потом сортировка?
Это полнейший бред. Я даже не знаю что на это можно ответить... Увы.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13894
  • Карма: 1789
  • Рыцарь ObjectARX
  • Skype: rivilis
Я где то на форуме прочитал, что Handle может измениться у Объекта, а может и нет при загрузке чертежа. Если речь только про внешние ссылки это значительно упрощает дело.
Не может он изменится при загрузке чертежа. Никак.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн trir

  • ADN Club
  • ****
  • Сообщений: 475
  • Карма: 63
А когда Handle закончится - AutoCAD умрёт

Онлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1116
  • Карма: 173
Необязательно :) Но корректно работать точно не сможет ;)
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!