Настройка разрыва таблиц AutoCad

Автор Тема: Настройка разрыва таблиц AutoCad  (Прочитано 5285 раз)

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

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

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

  • ADN OPEN
  • Сообщений: 13
  • Карма: 0
Приветствую всех!

Не нашел на форуме похожей информации, поэтому решил создать новую тему.

Как с помощью .NET API выполнить настройку разрыва таблицы, а именно:

1. Включено - Да;
2. Повторение верхних меток - Да;
3. Задание положения вручную - Да;
4. Высота разбиения - 230 (например);
5. "Оторванную часть" таблицы установить в определенную точку (20, 292, 0) (например). Если таблица с большим количеством строк, то "оторванных частей" может быть несколько. Хотелось бы иметь возможность устанавливать каждую такую часть в определенную точку.

Через MgdDbg эти свойства не обнаружил. Таблицу создаю программно, если это на что-то влияет.

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1097
  • Карма: 172
Re: Настройка разрыва таблиц AutoCad
« Ответ #1 : 09-01-2023, 15:25:33 »
Пункт 5, кажется, вообще не выполнить. Максимум на что можно рассчитывать - это расстояние между частями таблицы, насколько я помню.
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Вильдар

  • ADN Club
  • ****
  • Сообщений: 405
  • Карма: 77
  • Skype: vildar82
Re: Настройка разрыва таблиц AutoCad
« Ответ #2 : 09-01-2023, 15:32:25 »
BreakEnabled, BreakOptions все с break в названии  ;)
5 - наверно можно сделать через SetBreakOffset

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1097
  • Карма: 172
Re: Настройка разрыва таблиц AutoCad
« Ответ #3 : 09-01-2023, 20:26:05 »
По-моему, BreakOffset задается как смещение и действует на все куски таблицы.
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

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

  • ADN OPEN
  • Сообщений: 13
  • Карма: 0
Re: Настройка разрыва таблиц AutoCad
« Ответ #4 : 10-01-2023, 11:56:30 »
Результаты экспериментов:

Код - C# [Выбрать]
  1. table.BreakFlowDirection = TableBreakFlowDirection.Left;
  2. table.BreakOptions = TableBreakOptions.RepeatTopLabels;
  3. table.SetBreakSpacing(25);
  4. table.SetBreakHeight(0, 223);
  5. table.SetBreakHeight(1, 260);
  6. table.BreakEnabled = true;

Во-первых: последняя строка должна быть именно последней (в других местах этого куска кода не проверял, но когда она была первая - не работало, разрыв не устанавливался в true).
Информацию об этом нашел здесь:
https://forums.autodesk.com/t5/net/breaking-a-table/m-p/10380425#M69283

Во-вторых: не понял разницы между
table.BreakEnabled = true и table.BreakOptions = TableBreakOptions.EnableBreaking. В чем отличие и что действительно нужно изменять?
Пробовал со вторым вариантом - разрыв строился, но потом вернулся к первому, основываясь на источник по ссылке выше.

В-третьих,и это самое главное: мне требуются разрывы разной длины, задаю вот так:

table.SetBreakHeight(0, 223);
table.SetBreakHeight(1, 260);

Чтобы появилась возможность для таблицы применить разрывы разной высоты необходимо установить:
table.BreakOptions = TableBreakOptions.AllowManualHeights;
И вот тут то и возникает у меня коллизия. Это строка как бы "переписывает" строку table.BreakOptions = TableBreakOptions.RepeatTopLabels;

Получается или я повторяю верхние метки или делаю возможным разрывы разной длины, а мне требуется и то и другое.
При этом, если я уже во вставленной таблице руками сделаю table.BreakOptions = TableBreakOptions.AllowManualHeights;, то величина этого второго разрыва станет 260 мм, то есть код по заданию величины разрыва отработал.

Need Help.

« Последнее редактирование: 17-01-2023, 18:28:29 от Alexandr1993 »

Онлайн Lemieux

  • ADN OPEN
  • ****
  • Сообщений: 384
  • Карма: 21
Re: Настройка разрыва таблиц AutoCad
« Ответ #5 : 10-01-2023, 14:24:49 »
Так ты опции передавай через TableBreakOptions.RepeatTopLabels  | TableBreakOptions.AllowManualHeights если мне память не изменяет.

Отмечено как Решение Alexandr1993 10-01-2023, 16:15:32

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

  • ADN OPEN
  • Сообщений: 13
  • Карма: 0
Re: Настройка разрыва таблиц AutoCad
« Ответ #6 : 10-01-2023, 16:15:26 »
Так ты опции передавай через TableBreakOptions.RepeatTopLabels  | TableBreakOptions.AllowManualHeights если мне память не изменяет.

Да, все именно так, благодарю.

Вот код с комментариями по настройке разрыва таблицы:

Код - C# [Выбрать]
  1.                 table.BreakFlowDirection = TableBreakFlowDirection.Left;//Направление разрыва
  2.                 table.BreakOptions = TableBreakOptions.RepeatTopLabels | TableBreakOptions.AllowManualHeights;//Опции разрыва, здесь это повторение верхних меток
  3.                                                                                                               //и задание высоты вручную
  4.                 table.SetBreakSpacing(25);//Интервал (расстояние от левой границы основной таблицы до правой границы "оторванной" части
  5.                 table.SetBreakHeight(0, 223);//Высота разбиения основной (нулевой) таблицы
  6.                 table.SetBreakHeight(1, 287);//Высота разбиения первой "оторванной" таблицы
  7.                 table.BreakEnabled = true;//Разрыв = Да

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

« Последнее редактирование: 17-01-2023, 18:28:02 от Alexandr1993 »