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

ADN Club => AutoCAD .NET API => Тема начата: Константин Соков от 10-01-2014, 18:55:57

Название: Определение имени анонимной записи таблицы блоков
Отправлено: Константин Соков от 10-01-2014, 18:55:57
Добрый день. Совсем недавно работаю с AutoCAD .Net API. Прочитал замечательную статью Определение имени блока по вставке блока (http://adn-cis.org/opredelenie-imeni-bloka-po-vstavke-bloka.html). Вопрос в следующем: как можно определить настоящее имя записи таблицы блоков, если она анонимная, не опускаясь до вставок блока, этой анонимной записи таблицы блоков?
Название: Re: Определение имени анонимной записи таблицы блоков
Отправлено: Александр Ривилис от 10-01-2014, 19:20:46
Вопрос интересный. Насколько я помню в AutoCAD .NET API (в отличие от ObjectARX: Получение имени блока в ARX (http://adn-cis.org/poluchenie-imeni-bloka-v-arx.html) примечание переводчика) это можно сделать только создав экземпляр BlockReference. При этом его необязательно добавлять в чертеж.
Есть и второй путь, он более трудоемкий - пройтись по всем BlockTableRecord (кроме исходной анонимной), вызывая для каждой из них BlockTableRecord.GetAnonymousBlockIds и найти среди них ObjectId нашей анонимной BlockTableRecord.
Название: Re: Определение имени анонимной записи таблицы блоков
Отправлено: Константин Соков от 10-01-2014, 21:19:40
А есть ли такое свойство у BlockTableRecord которое бы показывало есть ли у нее BlockReference? Как например BlockTableRecord.IsDynamicBlock
Название: Re: Определение имени анонимной записи таблицы блоков
Отправлено: Александр Ривилис от 10-01-2014, 22:01:26
А есть ли такое свойство у BlockTableRecord которое бы показывало есть ли у нее BlockReference?
В таком виде свойства нет. Есть метод BlockTableRecord.GetBlockReferenceIds, который позволяет получить все вставки этого блока. Дальше остается определить количество элементов в ObjectIdCollection. Если > 0, то BlockReference есть.
Название: Re: Определение имени анонимной записи таблицы блоков
Отправлено: Алексей Кулик от 10-01-2014, 23:21:28
Есть метод BlockTableRecord.GetBlockReferenceIds, который позволяет получить все вставки этого блока.
Александр, касается ли это вложенных блоков? Просто интересно...
Название: Re: Определение имени анонимной записи таблицы блоков
Отправлено: Александр Ривилис от 10-01-2014, 23:27:48
касается ли это вложенных блоков?
Да, если первый параметр этого метода - false. В противном случае вложенные блоки не учитываются.
Название: Re: Определение имени анонимной записи таблицы блоков
Отправлено: Алексей Кулик от 10-01-2014, 23:31:39
Спасибо :)))