Как скопировать столбец в спецификации?

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

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

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

  • ADN OPEN
  • Сообщений: 7
  • Карма: 0
Необходимо скопировать значения из одного столбца в столбец с SharedParameter, обычный setCellText ругается на "This operation is forbidden for cells in standard schedule body sections." видимо из-за того что как написано в revitLookup эта спецификация read-only. Как я понял read-only убрать не получится.
Пробовал для теста взять элемент по id (хотя и не уверен что смогу их из спецификации взять) и зменить у него этот параметр на значение из строки, но в спецификации ячейка становится просто пустой, хотя revitLookup показывает что параметр изменился как надо.
Может кто что-то посоветует?

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
akass, Revit все правильно ругается. Тело спецификации содержит данные, основанные на свойствах элемента и вставить туда произвольные данные - не выйдет. Как вы правильно заметили, нужно изменять именно свойства объекта, а не данные спецификации.
Если я верно понял, то вы изменили параметр из API, в то время как вид со спецификaции был открыт, но изменения не отразились в спецификации. Для того, чтобы изменения отразились в спецификации, нужно выполнить метод ViewSchedule.RefreshData()

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

  • ADN OPEN
  • Сообщений: 7
  • Карма: 0
Данный метод вызывал и менял при закрытой спецификации, не помогло.
Да но ведь это Shared Parameter, который и в спецификации можно поставить какой-угодно.

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
менял при закрытой спецификации, не помогло
Мистика. Не может такого быть. Спецификация отображает значение параметров. Если значение параметра изменилось, то спецификация обязана это отразить. Видео бы.
Да но ведь это Shared Parameter, который и в спецификации можно поставить какой-угодно.
При изменении данных в спецификации меняется непосредственно параметр. Т.е. интерфейс спецификации - это всего лишь еще один способ изменить значение параметра. Но все равно меняется значение параметра, а не только спецификация.

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

  • ADN OPEN
  • Сообщений: 7
  • Карма: 0
Программно я вижу что он стоит, но в спецификации он только в выпадающем списке.
Код - C# [Выбрать]
  1.    var pa = _document.GetElement(new ElementId(2894632)) as SharedParameterElement;
  2.             Guid paG = pa.GuidValue;
  3.             var el = _document.GetElement(new ElementId(2063223));
  4.             el.get_Parameter(paG).Set("546");
  5.            
« Последнее редактирование: 11-10-2016, 15:34:16 от Виктор Чекалин »

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
akass,
Общий параметр какого типа?
Видео бы.
Помогло. Чувствую что что-то вы недоговариваете :)

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

  • ADN OPEN
  • Сообщений: 7
  • Карма: 0
String
Постараюсь записать, да нет, неуместно мне недоговаривать

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

  • ADN OPEN
  • Сообщений: 7
  • Карма: 0
akass,
Общий параметр какого типа?
Видео бы.
Помогло. Чувствую что что-то вы недоговариваете :)
Извиняюсь за качество

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
akass, можно весь код метода CopyValues?
Также прошу прошу проверить, появится ли значение в спецификации, если ее закрыть в интерфейсе, а затем заново открыть. Именно закрыть, а не просто переключиться на другой вид.

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
akass,
Общий параметр какого типа?
Видео бы.
Помогло. Чувствую что что-то вы недоговариваете :)
Извиняюсь за качество
Видео нужно записывать при помощи Autodesk Screencast (смотрите у меня в подписи).
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение