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

ADN Club => AutoCAD .NET API => Тема начата: Алексей (IdeaSoft) от 25-08-2016, 10:13:40

Название: Получеине имени блока
Отправлено: Алексей (IdeaSoft) от 25-08-2016, 10:13:40
Помогите разобраться в чем причина.
Хочу получить имя описателя блока по объект BlockReference
Делаю так:
Код - vb.net [Выбрать]
  1.    Dim blkRefObj as BlockReference
  2.    ...  
  3.    Dim GetName as String = blkRefObj.Name
  4.  
GetName получается = *U7
Хотя в свойствах объекта имя блока записано GT_point_level
В чем причина такого разночтения?

Прикрепляю материалы для анализа проблемы (сам файл и картинку)
Название: Re: Получеине имени блока
Отправлено: Александр Ривилис от 25-08-2016, 10:16:35
Блок динамический. Определение имени блока по вставке блока (http://adn-cis.org/opredelenie-imeni-bloka-po-vstavke-bloka.html)
Название: Re: Получеине имени блока
Отправлено: Алексей (IdeaSoft) от 25-08-2016, 10:59:00
У меня в строке проверки возвращает false
Код - vb.net [Выбрать]
  1.  
  2. blockRef.IsDynamicBlock = false
  3.  

Может ли это быть из-за того что я не включил в алгоритм опцию
Код - vb.net [Выбрать]
  1.  
  2.  options.AddAllowedClass(typeof(BlockReference), false)
  3.  

А в остальном все хорошо если передать blockRef.DynamicBlockTableRecord,
то возвращается GT_point_level
Название: Re: Получеине имени блока
Отправлено: Александр Ривилис от 25-08-2016, 11:03:04
У меня в строке проверки
Код - vb.net [Выбрать]
  1.  
  2. blockRef.IsDynamicBlock = false
  3.  

Может ли это быть из-за того что я не включил в алгоритм опцию
Код - vb.net [Выбрать]
  1.  
  2.  options.AddAllowedClass(typeof(BlockReference), false)
  3.  

Ничего не понял. Ты хочешь сказать, что у тебя blockRef.IsDynamicBlock равно false ? Если блок в действительности динамический, то это возможно, когда у блока разные масштабные коэффициенты по X,Y,Z. Эту проверку можно убрать.
Название: Re: Получеине имени блока
Отправлено: Алексей (IdeaSoft) от 25-08-2016, 11:04:39
Ты хочешь сказать, что у тебя blockRef.IsDynamicBlock равно false
Да возвращается false

Считаю что задача для получением имени блока "GT_point_level" решена
Большое спасибо!
За исключением того, что мне пока не понятно почему проверка IsDynamicBlock возвращает false
масштабные коэф. одинаковые 1,1,1
Название: Re: Получеине имени блока
Отправлено: Александр Ривилис от 25-08-2016, 11:11:36
Похоже, что ты что-то плохо проверил:

(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fimg-fotki.yandex.ru%2Fget%2F153157%2F7842324.7%2F0_1335f6_e11671eb_orig.png&hash=cb5537404286b93cdc319c8a080340e8)

Название: Re: Получеине имени блока
Отправлено: Александр Ривилис от 25-08-2016, 11:51:57
Я проверил код из статьи с твоими блоками и код работает нормально - blockRef.IsDynamicBlock равно true
Тем не менее я бы рекомендовал эту проверку убрать.