Библиотека "Управление листами в документе"

Автор polisher, 29.08.17, 15:45:12

« назад - далее »

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

polisher

Доброго времени суток всем!
Выкладываю библиотеку, расширяющую стандартный функционал многолистовых документов. Библиотека имеет следующие функции, отсутствующие в стандартном Менеджере документов:
1. Вставка нового листа в любое место документа (а не только в конец). Оформление листа можно выбрать при вставке, некоторые ячейки (обозначение, наименование, подписи и пр.) заполняются автоматически. Номера листов автоматически пересчитываются.
2. Корректное изменение параметров листа. При смене форматов, если изменяются габариты листа, остальные изображения сдвигаются.
3. Корректное удаление листа с удалением изображения внутри его рамки и сдвигом остальных. Номера листов автоматически пересчитываются.
4. Перестановка листов: можно поменять два любых листа местами.
5. Перемещение листа: перенос листа на новое место со сменой номера (например, пятый лист сделать вторым, соответственно, второй становится третьим, третий – четвёртым и т. п.). Названия листов автоматически переносятся.
6. Сохранение выбранного листа в отдельном файле.
7. Сохранение всех листов пофайлово – каждый лист в отдельном файле.
8. Добавление листов из другого документа в произвольное место многолистового документа.

Ограничения:
1. Предполагается, что технические требования (оформленные именно как технические требования, а не текст), размещаются только на первом листе многолистового документа.
2. Библиотека в данной версии не поддерживает работу со спецификациями, размещёнными на листе (если они являются именно спецификациями, а не обычной таблицей). Все операции выполняются только в расчёте на графические изображения, включая таблицы и текст.
3. При добавлении листов из другого документа, предполагается, что в документе-источнике изображение размещено на одном системном виде. Если изображение строится на нескольких видах, библиотека выдаст предупреждение и не отработает должным образом (вставит только пустые листы).
4. Библиотека работает только с изображениями внутри рамок оформления. Изображения вне границ оформления не учитываются и не контролируются.

Библиотека 32-разрядная! КОМПАС 17 64-разрядный её точно не подключает. Остальные версии 64-платформы не пробовал.
Тестировалась на КОМПАС 14 и 15 32-разрядных. КОМПАС 13 после подключения в начале работы может выдавать ошибку. Чтобы этого избежать, следует установить библиотеку, выйти из КОМПАС и снова его загрузить.

Автор является фантастом-графоманом, поэтому в качестве приза за кропотливый труд над этой библиотекой, она раз в сутки при закрытии будет открывать страничку автора на Самиздате. Вирусов и прочей гадости там нет - просто текст романа; необходимо для накрутки и раскрутки. Раз в сутки, думаю, сильно раздражать не будет!

После короткого отдыха предполагается работа над второй версией. Очень хочется сделать следующее:
1. Разобраться со спецификациями на листе (не нашёл, где брать координаты при ручном размещении). И реализовать перечисленные выше функции с учётом спецификаций на листе при наличии таковых.
2. Реализовать слияние видов.

В ZIP-архиве библиотека и краткая инструкция. Жду замечаний и предложений!
+ Благодарностей: 3

ЦитироватьБиблиотека 32-разрядная! КОМПАС 17 64-разрядный её точно не подключает. Остальные версии 64-платформы не пробовал.
Какой смысл пробовать?
Если, библиотека 32-разрядная, то на 64-разрядный Компас, нет смысла ставить, работать не будет.

polisher

ЦитироватьЕсли, библиотека 32-разрядная, то на 64-разрядный Компас, нет смысла ставить, работать не будет
Согласен. Я тоже не встречал 64-приложения, использующие 32-разрядные DLL. Но, думал, мало ли...

Вам, кстати, ещё раз спасибо за ksSelectGroup! Вся библиотека на этой функции построена.

А вот координаты спецификации на листе, расположение которой задано вручную, я не нашёл ни в АПИ5, ни в АПИ7. В 14-м КОМПАСе, по крайней мере...

Вират Лакх

Пишу, чтобы подписаться масло масляное Подписываюсь на интересную тему.
Предложение: сотворить 64-битную версию. Если будет такая, обязательно от меня перепадет список замечаний :)
Заметка: описание.pdf оформлено подробно и аккуратно, сразу видно, что писатель 88)) Чувствуется серьезный подход к делу.
P.S. Предлагаю рассмотреть версию без странички автора на Самиздате, но за денежное вознаграждение.

polisher

Спасибо за похвалу описания. На самом деле набросан он второпях и достаточно небрежно.  :( Но постараюсь к следующей версии исправить.

ЦитироватьПредложение: сотворить 64-битную версию
Предложение принимается. Постараюсь как можно скорее перевести проект на 64 разряда, боюсь только, размер файла вырастет.

ЦитироватьПредлагаю рассмотреть версию без странички автора на Самиздате, но за денежное вознаграждение
64-разрядная версия получится - вышлю Вам чистую, без Самиздата, без вознаграждения.  :)

Вират Лакх

Цитата: polisher от 29.08.17, 15:45:12
Библиотека имеет следующие функции, отсутствующие в стандартном Менеджере документов:
1. Вставка нового листа в любое место документа (а не только в конец).
Хотите замечания? Пожалуйста :)
На всякий случай, если кто не знает, в компасном менеджере документов можно вставлять листы не только в конец, но и после выделенного. Получается, нельзя вставить новый лист только перед первым листом.

polisher

ЦитироватьХотите замечания?
Разумеется!  :)

Цитироватьв компасном менеджере документов можно вставлять листы не только в конец, но и после выделенного
Вот чёрт! Это, получается, что я соврамши?!  :(((
А с какой версии эта возможность появилась? В 14 точно нельзя, только что специально проверил.
Надеюсь, что при вставке пустое место не расчищается  ;)

Вират Лакх

Вы хорошо проверили? В какой-то 13-й версии косячно, но работает эта функция. А в 12 вроде уже/еще нет её.
В 14-й уже должно нормально работать.
UPD
Конечно же при вставке нового листа виды не сдвигаются. Так что вы работу не зря провели.

polisher

ЦитироватьВы хорошо проверили?
Снова только что перепроверил на 13 и 14 версиях (обе 32-разрядные).
В обеих версиях Менеджер документа показывает, что вставляет лист после выделенного, а после нажатия ОК он упорно добавляет лист в конец файла. Да ещё и формат последнего берёт!
В API 14 КОМПАСа нет функционала для вставки листа. Коллекция ILayoutSheets имеет единственный метод Add (чего-то вроде Insert нет). А сам лист имеет только два метода - Update и Delete.

ЦитироватьВ какой-то 13-й версии косячно, но работает эта функция
На 13 (32bit) не работает. В Менеджере выделяем лист в серединке документа, нажимаем "Создать лист" - создаётся в конце (хотя выделенный в середине).

ЦитироватьВ 14-й уже должно нормально работать
Та же петрушка, что и в 13  :(

Варианта три:
- или КОМПАС стоит криво (хотя лицензия, всё как полагается),
- или функция вставки появилась в 15 версии,
- или у меня руки кривые, как-то не так вставляю  :-)))

Вират Лакх

Цитата: polisher от 31.08.17, 08:04:13
В обеих версиях Менеджер документа показывает, что вставляет лист после выделенного, а после нажатия ОК он упорно добавляет лист в конец файла. Да ещё и формат последнего берёт!
Вот я и писал, что как-то оно косячно в 13 версии было. А если стиль сменить с последующего листа на первый лист, то вставит нормально. А потом уже можно обратно поменять на последующий. Как-то так. Но сама идея/функционал-то есть.
И что-то я вас не пойму. Сначала вы говорите, что "В обеих версиях Менеджер документа показывает, что вставляет лист после выделенного", а потом "В Менеджере выделяем лист в серединке документа, нажимаем "Создать лист" - создаётся в конце (хотя выделенный в середине)."
Тема реализована в обеих версиях, другое дело качество проработки.

polisher

ЦитироватьИ что-то я вас не пойму
У меня до обеда приступы косноязычия бывают  :)

Лучше опишу порядок действий:
1) В 14 версии создаю тестовый многолистник из четырёх листов форматов А4, А3, А2, А1. Получилась "лесенка", на которой хорошо видно, что куда вставляется.
2) Открываю Менеджер документа, выделяю первый лист А4, нажимаю "Создать лист" - в списке вторым листом возникает А4 (как бы так и надо); зато после нажатия ОК появляется лист А1 в конце документа, вместо А4 на втором месте.
3) Откатываюсь на исходную "лесенку", выделяю в Менеджере второй лист А3, нажимаю "Создать лист" - в списке третьим листом возникает А4; после ОК - опять А1 в конце документа.
4) Пытаюсь вставить после третьего листа А2 - как и в случае со вторым листом.

Получается, в 14-й версии вставка листов делается только в списке, а не в документе :(
В 13 версии - то же самое!  :`(

Вират Лакх

Вот. Берем пункт (2). Перед тем, как нажать ок, поменяйте у него оформление на конструкторский первый лист. Возможно сначала надо кнопку применить, а потом ок. А может без разницы.
И посмотрите, что будет. Потом можно поменять этот новый первый на последующий.

polisher

ЦитироватьБерем пункт (2)
Получается вообще странно: берём наш документ с листами А4 (первый), А3 (последующий этот и далее), А2, А1
1) Вставляем лист сразу после первого - по дефолту он последующий, формата А4.
2) Меняем оформление на "первый лист".
3) Нажимаем "Применить" - или не нажимаем: проверено, что разницы нет.
4) Получаем странный результат: А4 (первый), А4 (первый), А2 (последующий, и далее тоже все последующие), А1, А1.
То есть А3, который на втором месте) почему-то заменился А четвёртым, а в конец добавился ещё один А1

Не люблю, когда программа подчёркивает тупизну пользователя!  >:(

P.S. На 64 разряда я перевёл, но размер экзешника ужасающий. Надо было сразу под .net делать: нет же, в ностальгию потянуло, Delphi 7!!!

Вират Лакх

У вас все экспресс-обновления и сервис-паки установлены? И, вообще, давайте оставим эту тему, ведь у вас есть своя библиотека.

Дмитрий22

Цитата: polisher от 31.08.17, 09:57:31
P.S. На 64 разряда я перевёл, но размер экзешника ужасающий. Надо было сразу под .net делать: нет же, в ностальгию потянуло, Delphi 7!!!
Одна из причин, почему я перешел на .Net.

Delphi 7, 64-разрядные приложения, компилировать не может, данная возможность, появилась у Delphi XE2 и выше.

polisher

ЦитироватьУ вас все экспресс-обновления и сервис-паки установлены?
На 13 да, на 14 - не знаю. Я на техподдерживаемом предприятии тестирую по удалёнке. Чего они там наставили, даже не знаю

polisher

ЦитироватьОдна из причин, почему я перешел на .Net
Потихоньку тоже переползаю. Хотя 32-разрядные приложения пока на Delphi делаю - быстрее получается и привычнее. Слава богу, в 64 ОС они пока работают

polisher

ЦитироватьDelphi 7, 64-разрядные приложения, компилировать не может, данная возможность, появилась у Delphi XE2 и выше
Вот как раз попробовал проект Delphi 7 перекомпилировать в XE2 на 64 разряда. Проект подхватился без проблем, но размер файла - жуть жутчайшая! Даже выкладывать стыдно!

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