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

ADN Club => Revit API => Тема начата: akass от 11-10-2016, 09:12:08

Название: Как скопировать столбец в спецификации?
Отправлено: akass от 11-10-2016, 09:12:08
Необходимо скопировать значения из одного столбца в столбец с SharedParameter, обычный setCellText ругается на "This operation is forbidden for cells in standard schedule body sections." видимо из-за того что как написано в revitLookup эта спецификация read-only. Как я понял read-only убрать не получится.
Пробовал для теста взять элемент по id (хотя и не уверен что смогу их из спецификации взять) и зменить у него этот параметр на значение из строки, но в спецификации ячейка становится просто пустой, хотя revitLookup показывает что параметр изменился как надо.
Может кто что-то посоветует?
Название: Re: Как скопировать столбец в спецификации?
Отправлено: Виктор Чекалин от 11-10-2016, 14:19:38
akass, Revit все правильно ругается. Тело спецификации содержит данные, основанные на свойствах элемента и вставить туда произвольные данные - не выйдет. Как вы правильно заметили, нужно изменять именно свойства объекта, а не данные спецификации.
Если я верно понял, то вы изменили параметр из API, в то время как вид со спецификaции был открыт, но изменения не отразились в спецификации. Для того, чтобы изменения отразились в спецификации, нужно выполнить метод ViewSchedule.RefreshData()
Название: Re: Как скопировать столбец в спецификации?
Отправлено: akass от 11-10-2016, 15:05:22
Данный метод вызывал и менял при закрытой спецификации, не помогло.
Да но ведь это Shared Parameter, который и в спецификации можно поставить какой-угодно.
Название: Re: Как скопировать столбец в спецификации?
Отправлено: Виктор Чекалин от 11-10-2016, 15:11:02
менял при закрытой спецификации, не помогло
Мистика. Не может такого быть. Спецификация отображает значение параметров. Если значение параметра изменилось, то спецификация обязана это отразить. Видео бы.
Да но ведь это Shared Parameter, который и в спецификации можно поставить какой-угодно.
При изменении данных в спецификации меняется непосредственно параметр. Т.е. интерфейс спецификации - это всего лишь еще один способ изменить значение параметра. Но все равно меняется значение параметра, а не только спецификация.
Название: Re: Как скопировать столбец в спецификации?
Отправлено: akass от 11-10-2016, 15:22:30
Программно я вижу что он стоит, но в спецификации он только в выпадающем списке.
Код - 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.            
Название: Re: Как скопировать столбец в спецификации?
Отправлено: Виктор Чекалин от 11-10-2016, 15:56:44
akass,
Общий параметр какого типа?
Видео бы.
Помогло. Чувствую что что-то вы недоговариваете :)
Название: Re: Как скопировать столбец в спецификации?
Отправлено: akass от 11-10-2016, 16:02:35
String
Постараюсь записать, да нет, неуместно мне недоговаривать
Название: Re: Как скопировать столбец в спецификации?
Отправлено: akass от 11-10-2016, 17:09:56
akass,
Общий параметр какого типа?
Видео бы.
Помогло. Чувствую что что-то вы недоговариваете :)
Извиняюсь за качество
Название: Re: Как скопировать столбец в спецификации?
Отправлено: Виктор Чекалин от 11-10-2016, 18:47:22
akass, можно весь код метода CopyValues?
Также прошу прошу проверить, появится ли значение в спецификации, если ее закрыть в интерфейсе, а затем заново открыть. Именно закрыть, а не просто переключиться на другой вид.
Название: Re: Как скопировать столбец в спецификации?
Отправлено: Александр Ривилис от 11-10-2016, 19:20:58
akass,
Общий параметр какого типа?
Видео бы.
Помогло. Чувствую что что-то вы недоговариваете :)
Извиняюсь за качество
Видео нужно записывать при помощи Autodesk Screencast (смотрите у меня в подписи).