Сообщество программистов 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. В противном случае вложенные блоки не учитываются.
 
- 
				Спасибо :)))