Сообщество программистов Autodesk в СНГ
ADN Club => AutoCAD .NET API => Тема начата: Константин Соков от 10-01-2014, 18:55:57
-
Добрый день. Совсем недавно работаю с AutoCAD .Net API. Прочитал замечательную статью Определение имени блока по вставке блока (http://adn-cis.org/opredelenie-imeni-bloka-po-vstavke-bloka.html). Вопрос в следующем: как можно определить настоящее имя записи таблицы блоков, если она анонимная, не опускаясь до вставок блока, этой анонимной записи таблицы блоков?
-
Вопрос интересный. Насколько я помню в AutoCAD .NET API (в отличие от ObjectARX: Получение имени блока в ARX (http://adn-cis.org/poluchenie-imeni-bloka-v-arx.html) примечание переводчика) это можно сделать только создав экземпляр BlockReference. При этом его необязательно добавлять в чертеж.
Есть и второй путь, он более трудоемкий - пройтись по всем BlockTableRecord (кроме исходной анонимной), вызывая для каждой из них BlockTableRecord.GetAnonymousBlockIds и найти среди них ObjectId нашей анонимной BlockTableRecord.
-
А есть ли такое свойство у BlockTableRecord которое бы показывало есть ли у нее BlockReference? Как например BlockTableRecord.IsDynamicBlock
-
А есть ли такое свойство у BlockTableRecord которое бы показывало есть ли у нее BlockReference?
В таком виде свойства нет. Есть метод BlockTableRecord.GetBlockReferenceIds, который позволяет получить все вставки этого блока. Дальше остается определить количество элементов в ObjectIdCollection. Если > 0, то BlockReference есть.
-
Есть метод BlockTableRecord.GetBlockReferenceIds, который позволяет получить все вставки этого блока.
Александр, касается ли это вложенных блоков? Просто интересно...
-
касается ли это вложенных блоков?
Да, если первый параметр этого метода - false. В противном случае вложенные блоки не учитываются.
-
Спасибо :)))