Определение имени анонимной записи таблицы блоков

Автор Тема: Определение имени анонимной записи таблицы блоков  (Прочитано 3276 раз)

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

Оффлайн Константин СоковАвтор темы

  • ADN Club
  • **
  • Сообщений: 56
  • Карма: 0
Добрый день. Совсем недавно работаю с AutoCAD .Net API. Прочитал замечательную статью Определение имени блока по вставке блока. Вопрос в следующем: как можно определить настоящее имя записи таблицы блоков, если она анонимная, не опускаясь до вставок блока, этой анонимной записи таблицы блоков?

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

  • Administrator
  • *****
  • Сообщений: 13177
  • Карма: 1701
  • Рыцарь ObjectARX
  • Skype: rivilis
Вопрос интересный. Насколько я помню в AutoCAD .NET API (в отличие от ObjectARX: Получение имени блока в ARX примечание переводчика) это можно сделать только создав экземпляр BlockReference. При этом его необязательно добавлять в чертеж.
Есть и второй путь, он более трудоемкий - пройтись по всем BlockTableRecord (кроме исходной анонимной), вызывая для каждой из них BlockTableRecord.GetAnonymousBlockIds и найти среди них ObjectId нашей анонимной BlockTableRecord.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Константин СоковАвтор темы

  • ADN Club
  • **
  • Сообщений: 56
  • Карма: 0
А есть ли такое свойство у BlockTableRecord которое бы показывало есть ли у нее BlockReference? Как например BlockTableRecord.IsDynamicBlock

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

  • Administrator
  • *****
  • Сообщений: 13177
  • Карма: 1701
  • Рыцарь ObjectARX
  • Skype: rivilis
А есть ли такое свойство у BlockTableRecord которое бы показывало есть ли у нее BlockReference?
В таком виде свойства нет. Есть метод BlockTableRecord.GetBlockReferenceIds, который позволяет получить все вставки этого блока. Дальше остается определить количество элементов в ObjectIdCollection. Если > 0, то BlockReference есть.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 950
  • Карма: 155
Есть метод BlockTableRecord.GetBlockReferenceIds, который позволяет получить все вставки этого блока.
Александр, касается ли это вложенных блоков? Просто интересно...
Все, что сказано - личное мнение.

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

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

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

  • Administrator
  • *****
  • Сообщений: 13177
  • Карма: 1701
  • Рыцарь ObjectARX
  • Skype: rivilis
касается ли это вложенных блоков?
Да, если первый параметр этого метода - false. В противном случае вложенные блоки не учитываются.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 950
  • Карма: 155
Все, что сказано - личное мнение.

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

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