Получеине имени блока

Автор Тема: Получеине имени блока  (Прочитано 8328 раз)

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

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Получеине имени блока
« : 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
В чем причина такого разночтения?

Прикрепляю материалы для анализа проблемы (сам файл и картинку)

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Получеине имени блока
« Ответ #1 : 25-08-2016, 10:16:35 »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Получеине имени блока
« Ответ #2 : 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

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Получеине имени блока
« Ответ #3 : 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. Эту проверку можно убрать.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1189
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Получеине имени блока
« Ответ #4 : 25-08-2016, 11:04:39 »
Ты хочешь сказать, что у тебя blockRef.IsDynamicBlock равно false
Да возвращается false

Считаю что задача для получением имени блока "GT_point_level" решена
Большое спасибо!
За исключением того, что мне пока не понятно почему проверка IsDynamicBlock возвращает false
масштабные коэф. одинаковые 1,1,1

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Получеине имени блока
« Ответ #5 : 25-08-2016, 11:11:36 »
Похоже, что ты что-то плохо проверил:



Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Получеине имени блока
« Ответ #6 : 25-08-2016, 11:51:57 »
Я проверил код из статьи с твоими блоками и код работает нормально - blockRef.IsDynamicBlock равно true
Тем не менее я бы рекомендовал эту проверку убрать.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение