Как записать в атрибут?

Автор Тема: Как записать в атрибут?  (Прочитано 4737 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн AtomohodАвтор темы

  • ADN OPEN
  • ****
  • Сообщений: 453
  • Карма: 1
Как записать в атрибут?
« : 07-06-2018, 20:10:29 »
Здравствуйте!
Нужно записать значения нескольких переменных в атрибуты блока (не динамического) во время программного создания этого самого блока. Простое присваивание атрибуту значения поля не срабатывает. Поиск по документации ObjectARX 2015 ничего не подсказал. Как это можно сделать?

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Как записать в атрибут?
« Ответ #1 : 07-06-2018, 21:28:29 »
Нужно записать значения нескольких переменных в атрибуты блока (не динамического) во время программного создания этого самого блока. Простое присваивание атрибуту значения поля не срабатывает.
Ничего не понял. Как это присвоение атрибуту не работает? Как ты присваиваешь? Ты не путаешь определение атрибута (AttributeDefinition) с  атрибутом (AttributeReference)?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн AtomohodАвтор темы

  • ADN OPEN
  • ****
  • Сообщений: 453
  • Карма: 1
Re: Как записать в атрибут?
« Ответ #2 : 07-06-2018, 21:53:22 »
Присваиваю в момент создания самого блока с атрибутом. Данные для записи в атрибут получаю от пользователя. Присваивание должно происходить при определении атрибута, то есть, как я понимаю, в AttributeDefinition так как я еще при создании определяю содержимое атрибута, а не работаю с готовым блоком, где уже есть AttributeReference. Я так рассуждал.
Код такой:
Код - C# [Выбрать]
  1. using (AttributeDefinition pages = new AttributeDefinition())
  2.                {
  3.                     pages.SetDatabaseDefaults(acBlkTbl.Database);
  4.                     pages.Verifiable = true;
  5.                     pages.Prompt = "Pages";
  6.                     pages.Tag = "Pages";
  7.                     pages.TextString = "curFormat.Type+" "+x+" "+curFormat.Multiplier";
  8.                     pages.WidthFactor = 0.7;
  9.                     pages.Height = 3;
  10.                     pages.Justify = AttachmentPoint.BottomLeft;
  11.                     pages.Position = new Point3d(-12.5, 15, 0);
  12.                     pages.AlignmentPoint = new Point3d(-12.5, 15, 0);
  13.                     pages.AdjustAlignment(acBlkTbl.Database);
  14.                     pages.Layer = "-10-Formats";
  15.  
  16.                     acBlkTblRec.AppendEntity(pages);
  17.                }

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Как записать в атрибут?
« Ответ #3 : 07-06-2018, 21:56:16 »
а не работаю с готовым блоком, где уже есть AttributeReference. Я так рассуждал.
И это неправильно...
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн AtomohodАвтор темы

  • ADN OPEN
  • ****
  • Сообщений: 453
  • Карма: 1
Re: Как записать в атрибут?
« Ответ #4 : 07-06-2018, 22:00:29 »
И это неправильно...
Почему? Ведь атрибут только создается, его еще не существует. Я его хочу создать с уже заранее определенной информацией внутри него. Или API не позволяет записывать в атрибуты данные из переменных в момент создания?

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Как записать в атрибут?
« Ответ #5 : 07-06-2018, 22:06:43 »
И это неправильно...
Почему? Ведь атрибут только создается, его еще не существует. Я его хочу создать с уже заранее определенной информацией внутри него. Или API не позволяет записывать в атрибуты данные из переменных в момент создания?

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

Оффлайн AtomohodАвтор темы

  • ADN OPEN
  • ****
  • Сообщений: 453
  • Карма: 1
Re: Как записать в атрибут?
« Ответ #6 : 07-06-2018, 22:10:33 »
ОК, не буду связываться с определениями, а как тогда реализовать запись данных в атрибут? Ведь блок в чертеже у меня появляется после окончания работы команды, а данные пользовательского ввода хранятся только на период выполнения команды. Как быть?

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Как записать в атрибут?
« Ответ #7 : 07-06-2018, 22:11:18 »
А что это такое:
Код - C# [Выбрать]
  1. pages.TextString = "curFormat.Type+" "+x+" "+curFormat.Multiplier";
Это на каком языке???
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн AtomohodАвтор темы

  • ADN OPEN
  • ****
  • Сообщений: 453
  • Карма: 1
Re: Как записать в атрибут?
« Ответ #8 : 07-06-2018, 22:16:12 »
C#, я передаю строку внутри которой две переменные и два пробела с Х посередине. По крайней мере пытаюсь передать. Подозреваю, что все что записано внутри кавычек не интерпретируется, но  pages.TextString требует только строку.

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Как записать в атрибут?
« Ответ #9 : 07-06-2018, 22:36:10 »
C#, я передаю строку внутри которой две переменные и два пробела с Х посередине. По крайней мере пытаюсь передать. Подозреваю, что все что записано внутри кавычек не интерпретируется, но  pages.TextString требует только строку.
Не надо ничего подозревать. Просто учи C#.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение Atomohod 08-06-2018, 20:48:34

Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 611
  • Карма: 155
    • ПГСу Бложик
Re: Как записать в атрибут?
« Ответ #10 : 08-06-2018, 07:08:36 »
Код - C# [Выбрать]
  1. pages.TextString = "curFormat.Type+" "+x+" "+curFormat.Multiplier";
так понимаю, первая  и последняя кавычки лишние...
ИМХО, если есть сложности с пониманием конкатенации строк, а это самый, самый базовый уровень знаний программирования (язык тут не принципиален), то писать для автокада пока рановато =(

Оффлайн RevitTormentor

  • ADN OPEN
  • ***
  • Сообщений: 162
  • Карма: 6
Re: Как записать в атрибут?
« Ответ #11 : 05-08-2018, 21:37:36 »
Код - C# [Выбрать]
  1. pages.TextString = "curFormat.Type+" "+x+" "+curFormat.Multiplier";
так понимаю, первая  и последняя кавычки лишние...

Вроде x это не переменная.

Оффлайн trir

  • ADN Club
  • ****
  • Сообщений: 470
  • Карма: 63
Re: Как записать в атрибут?
« Ответ #12 : 06-08-2018, 06:57:02 »
Код - C# [Выбрать]
  1.       pages.TextString = $"{curFormat.Type} {x} {curFormat.Multiplier}";
;)