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

ADN Club => AutoCAD .NET API => Тема начата: Alexandr1993 от 09-01-2023, 11:00:51

Название: Настройка разрыва таблиц AutoCad
Отправлено: Alexandr1993 от 09-01-2023, 11:00:51
Приветствую всех!

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

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

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

Через MgdDbg эти свойства не обнаружил. Таблицу создаю программно, если это на что-то влияет.
Название: Re: Настройка разрыва таблиц AutoCad
Отправлено: Алексей Кулик от 09-01-2023, 15:25:33
Пункт 5, кажется, вообще не выполнить. Максимум на что можно рассчитывать - это расстояние между частями таблицы, насколько я помню.
Название: Re: Настройка разрыва таблиц AutoCad
Отправлено: Вильдар от 09-01-2023, 15:32:25
BreakEnabled, BreakOptions все с break в названии  ;)
5 - наверно можно сделать через SetBreakOffset
Название: Re: Настройка разрыва таблиц AutoCad
Отправлено: Алексей Кулик от 09-01-2023, 20:26:05
По-моему, BreakOffset задается как смещение и действует на все куски таблицы.
Название: Re: Настройка разрыва таблиц AutoCad
Отправлено: Alexandr1993 от 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 (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.

Название: Re: Настройка разрыва таблиц AutoCad
Отправлено: Lemieux от 10-01-2023, 14:24:49
Так ты опции передавай через TableBreakOptions.RepeatTopLabels  | TableBreakOptions.AllowManualHeights если мне память не изменяет.
Название: Re: Настройка разрыва таблиц AutoCad
Отправлено: Alexandr1993 от 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;//Разрыв = Да

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