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

ADN Club => Revit API => Тема начата: Пашин Евгений от 10-10-2016, 10:55:14

Название: Как снять объединение ячеек спецификации?
Отправлено: Пашин Евгений от 10-10-2016, 10:55:14
Добрый день, коллеги!

Подскажите, если кто знает, каким методом нужно воспользоваться для того, чтобы снять объединение ячеек в спецификации?

Я умею объединять ячейки, а вот как снять объединение - это вопрос. По аналогии с пользовательским интерфейсом это тоже должен быть метод MergeCells, но опять вопрос как?

Объединение ячеек выполняется так:

Код - vb.net [Выбрать]
  1.                 Using transaction As New Transaction(Doc, "Merge cells")
  2.                     transaction.Start()
  3.                     rvtTableDataHeader.MergeCells(New TableMergedCell(1, 0, 2, 1))
  4.                     transaction.Commit()
  5.                 End Using
Название: Re: Как снять объединение ячеек спецификации?
Отправлено: Виктор Чекалин от 11-10-2016, 14:14:01
Евгений, напрашивается метод UnmergeCells, но такого не наблюдается. С помощью метода MergeCells разъединить ячейки не выйдет. По крайней мере ни документация, ни собственные эксперименты не выявили ничего подобного. Задам вопрос в техподдержку.
Но тем не менее у меня есть идейка как снять объединение. Путем создания новых строк/столбцов, копирования туда информации из объединенной ячейки и последующим ее удалением. По позже могу попробовать реализовать.
Название: Re: Как снять объединение ячеек спецификации?
Отправлено: Пашин Евгений от 11-10-2016, 15:42:54
Но тем не менее у меня есть идейка как снять объединение. Путем создания новых строк/столбцов, копирования туда информации из объединенной ячейки и последующим ее удалением. По позже могу попробовать реализовать.

Буду очень признателен за любой проблеск в решении.



Однако наблюдения ради сообщу, что при снятии объединения ячеек я могу видеть значения тех ячеек, которые были скрыты объединением. Если бы можно было считывать значения с тех ячеек, которые внутри объединенной, то в принципе мне этого было бы достаточно.

Постараюсь объяснить:
1. Если вы создадите две строки и два столбца (то есть 4 ячейки всего), а затем заполните все 4 ячейки данными, то при их объединении в одну ячейку будет значение ячейки (0,0)
2. Если снова разбить через пользовательский интерфейс ячейку, то мы снова получим 4 ячейки с их исходными значениями. Вот мне эти значения как раз и нужны.
3. Это ещё не всё - мне нужно будет переобъединить ячейки уже с другими ячейками. Каждый раз отлавливать ячейки и пересоздавать строки со значениями будет не простой задачей. Особенно если файлы со спецификациями сторонние. Но опять же это тоже будет каким-то решением.
Название: Re: Как снять объединение ячеек спецификации?
Отправлено: Илья Дрягин от 17-10-2016, 06:41:29
Насколько я помню, мы решали подобную задачу (с разделением объединенных ячеек) с помощью SetMergedCell путем перебора всех объединенных ячеек и задания для них диапазона, равного 1 ячейке. По поводу значений сказать не могу, но если в UI значения сохраняются, то возможно значения можно получить из ячейки обратившись по ее строке и столбцу
Название: Re: Как снять объединение ячеек спецификации?
Отправлено: Пашин Евгений от 17-10-2016, 07:55:59
возможно значения можно получить из ячейки обратившись по ее строке и столбцу

Вы правы - возможно :)

мы решали подобную задачу (с разделением объединенных ячеек) с помощью SetMergedCell путем перебора всех объединенных ячеек и задания для них диапазона, равного 1 ячейке

Если есть такое решение - дайте посмотреть на него :)



Однако, меня всё-таки интересует не то как это можно обойти, а как это сделать средствами API, если таковы существуют.
Если нет метода раз'объединения ячеек, то я решу это иным способом.
Название: Re: Как снять объединение ячеек спецификации?
Отправлено: Пашин Евгений от 17-10-2016, 08:28:05
Drakus, подскажите, Вы случаем не так разбивали ячейки?

Код - vb.net [Выбрать]
  1. SetMergedCell(0,0, New TableMergedCell(0,0,1,1))
Название: Re: Как снять объединение ячеек спецификации?
Отправлено: Илья Дрягин от 17-10-2016, 09:18:23
К сожалению кода самого не сохранилось, делали ради пробы.
по логике объединенные ячейки разбиваются так (для каждой из объединенных):
Код - C# [Выбрать]
  1. SetMergedCell(0,0, new TableMergedCell(0,0,0,0));
  2. SetMergedCell(0,1, new TableMergedCell(0,1,0,1));
  3.  
Название: Re: Как снять объединение ячеек спецификации?
Отправлено: Пашин Евгений от 17-10-2016, 10:29:59
Попробую и отпишусь!

Что-то не получается )))
Название: Re: Как снять объединение ячеек спецификации?
Отправлено: Виктор Чекалин от 29-10-2016, 20:36:39
Что-то не получается )))
А у меня кажется получилось. Надеюсь, что еще актуально:). Написал по этому поводу статью (http://adn-cis.org/razdelenie-yacheek-speczifikaczii.html)
Название: Re: Как снять объединение ячеек спецификации?
Отправлено: Пашин Евгений от 31-10-2016, 08:47:38
Надеюсь, что еще актуально:)

Ещё как :) Спасибо!!!



Yes, работает!!!