ObjectIdGraph

Автор Тема: ObjectIdGraph  (Прочитано 5125 раз)

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

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
ObjectIdGraph
« : 24-12-2014, 14:14:21 »
Доброго времени суток.

Меня интересует аргумент метода Database.Purge (ObjectIdGraph). Я сам должен создавать  и наполнять содержимым объект ObjectIdGraph? Если "да", то гораздо проще было бы использовать перегруженный вариант Database.Purge (ObjectIdCollection)... Или всё же можно как-то получить уже сформированный объект ObjectIdGraph с тем, чтобы передать его в Database.Purge?

Кроме того, ObjectIdGraph имеет default public constructor в AutoCAD 2015, но я не вижу его в AutoCAD 2009. Как создавать ObjectIdGraph в AutoCAD 2009?

Спасибо

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

  • Administrator
  • *****
  • Сообщений: 13877
  • Карма: 1785
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: ObjectIdGraph
« Ответ #1 : 24-12-2014, 14:56:43 »
Кроме того, ObjectIdGraph имеет default public constructor в AutoCAD 2015, но я не вижу его в AutoCAD 2009. Как создавать ObjectIdGraph в AutoCAD 2009?
Сразу чтобы не было лишних вопросов - ответ одного из членов команды разработчиков AutoCAD:
Цитировать
You can't use the ObjectIdGraph class in Acad versions prior to Acad 2012 because the class was not implemented.  I fixed that in Acad 2012.
Т.е. для всех версий до 2012 использовать этот метод нельзя.
Я сам должен создавать  и наполнять содержимым объект ObjectIdGraph? Если "да", то гораздо проще было бы использовать перегруженный вариант Database.Purge (ObjectIdCollection)... Или всё же можно как-то получить уже сформированный объект ObjectIdGraph с тем, чтобы передать его в Database.Purge?
Польза от этого метода в том, что его не нужно вызвать повторно если ты ищешь возможность удалить и (например) блоки и (например) слои, на которые эти блоки ссылаются. Т.е. в случае с ObjectIdGraph достаточно одного вызова, а с ObjectIdCollection как минимум два.
« Последнее редактирование: 25-12-2014, 09:44:18 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: ObjectIdGraph
« Ответ #2 : 24-12-2014, 15:04:21 »
Польза от этого метода в том, что его не нужно вызвать повторно если ты ищчешь возможность удалить и (например) блоки и (например) слои, на которые эти блоки ссылаются. Т.е. в случае с ObjectIdGraph достаточно одного вызова, а с ObjectIdCollection как минимум два.
Т.е. нужно самому строить это дерево? Насколько я понимаю, для этого всё равно потребуется выполнить итерацию по всем объектам?

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

  • Administrator
  • *****
  • Сообщений: 13877
  • Карма: 1785
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: ObjectIdGraph
« Ответ #3 : 24-12-2014, 15:21:09 »
Т.е. нужно самому строить это дерево?
Нет. Строить не нужно. При помощи метода AddNode просто добавляешь те ObjectId, которые нужно проверить на возможность безболезненного удаления. Повторная итерация не нужна. Впрочем в native-коде когда-то очень давно был баг, при котором кое-что в "дереве" оставалось, чему там быть не должно. Ну и потом требовался _AUDIT чертежа для исправления ошибок.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: ObjectIdGraph
« Ответ #4 : 24-12-2014, 15:33:36 »
Спасибо.
« Последнее редактирование: 24-12-2014, 16:17:50 от Андрей Бушман »