Форум пользователей ПО АСКОН

Профессиональные вопросы => Программирование приложений => Тема начата: snegok74 от 07.12.12, 14:41:35

Название: Предпросмотр многолистового чертежа при открытии файла
Отправлено: snegok74 от 07.12.12, 14:41:35
Подскажите пожалуйста как выполнить предварительный просмотр (при открытии файла) чтоб было видно все листы и объекты из документа, как в стандартном диалоге открытия.
"pic1.jpg" - так надо
"pic2.jpg" - так выводит функция "ksDrawKompasDocument" - так не надо :)
исходник тут http://forum.ascon.ru/index.php/topic,5841.msg163713.html#msg163713 (http://forum.ascon.ru/index.php/topic,5841.msg163713.html#msg163713)
Название: Re: Предпросмотр многолистового чертежа при открытии файла
Отправлено: artemy от 26.07.13, 22:22:17
Всем привет.

Собственно, ап. Интересует тот же вопрос: как получить изображение второго листа в память?

Также, чтобы два раза не вставать, вопрос касательно вывода изображения самого чертежа на любой контрол в своей программе: можно ли как-то получать чертёж, кроме как с помощью api5 и ksDrawDocument?

Заранее спасибо за ответы.
Название: Re: Предпросмотр многолистового чертежа при открытии файла
Отправлено: Sabahs от 27.07.13, 08:21:48
Можно и по другому, но нужно знать, что Вы хотите сделать?
Название: Re: Предпросмотр многолистового чертежа при открытии файла
Отправлено: artemy от 27.07.13, 11:14:44
Хочу, условно говоря, получить картинку чертежа (каждого их листов) либо в экземпляр класса Bitmap; либо, например, вывести в PictureBox или на Panel. Короче говоря, получить Image. Причём желательно, чтобы была возможность вывода именно в виде чертежа (цвета линий и фона), а не самого окна Компаса, как это происходит в случае с ksDrawDocument.

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

Ещё раз спасибо.
Название: Re: Предпросмотр многолистового чертежа при открытии файла
Отправлено: Sabahs от 27.07.13, 11:30:30
Зачем?
Компас, всё это реализует.
Название: Re: Предпросмотр многолистового чертежа при открытии файла
Отправлено: artemy от 27.07.13, 12:11:18
Что именно Компас реализует?

Повторюсь: есть программа (не библиотека, а совершенно отдельная - управляющая); на форме расположен условный Picturebox. Так вот в него мне нужно вывести, к примеру, изображение второго листа многолистового файла чертежа. Как мне это сделать?
Название: Re: Предпросмотр многолистового чертежа при открытии файла
Отправлено: Sabahs от 27.07.13, 12:21:25
Чтобы вывести должен стоять Компас. :)
Название: Re: Предпросмотр многолистового чертежа при открытии файла
Отправлено: artemy от 27.07.13, 12:23:47
Вы так шутите? Естественно, у меня установлен Компас и мои сообщения выше это подтверждают.
Название: Re: Предпросмотр многолистового чертежа при открытии файла
Отправлено: Sabahs от 27.07.13, 12:46:38
За этот ролик, получил по репе http://yadi.sk/d/kc0620_v7Gfgp
Название: Re: Предпросмотр многолистового чертежа при открытии файла
Отправлено: artemy от 27.07.13, 12:57:38
Так, ладно. Спасибо, мы с вами явно друг друга не поймём.

Прошу помощи у остальных участников форума. Вопросы всё те же.
Название: Re: Предпросмотр многолистового чертежа при открытии файла
Отправлено: Sabahs от 27.07.13, 22:43:36
Можно использовать ksDrawKompasGroup, но тут будет проблема с оформлением листа.
Название: Re: Предпросмотр многолистового чертежа при открытии файла
Отправлено: Slaviation от 29.07.13, 08:33:20
Может попробовать конвертнуть, к примеру, в png (см. ksRasterFormatParam::pages) и его давать на предпросмотр.
Название: Re: Предпросмотр многолистового чертежа при открытии файла
Отправлено: artemy от 30.07.13, 19:22:02
Спасибо, но выше я уже отметил, что такой вариант отлично работает, но не подходит.
Название: Re: Предпросмотр многолистового чертежа при открытии файла
Отправлено: Sabahs от 30.07.13, 20:29:37
Можете, более подробно описать, чем именно не подходит?
Есть ещё одна возможность использовать ActiveX компонент KGAX.
Название: Re: Предпросмотр многолистового чертежа при открытии файла
Отправлено: Slaviation от 31.07.13, 07:37:19
Еще один фокус :)
Суть в том, чтобы суметь из cdw получить frw.
Например: сохрани свой чертеж в dxf, затем открой его в КОМПАС - он сконвертится в frw.
frw отданный на вход ksDrawKompasDocument отобразится весь.
Проверил в Менеджере шаблонов, в нем используется ksDrawKompasDocument (рис.)
Название: Re: Предпросмотр многолистового чертежа при открытии файла
Отправлено: Sabahs от 31.07.13, 07:43:24
Вроде уважаемый Slaviation, дал неплохой вариант с ksRasterFormatParam, то, что хотели, как это работает http://forum.ascon.ru/index.php/topic,22913.msg158656.html#msg158656
Название: Re: Предпросмотр многолистового чертежа при открытии файла
Отправлено: artemy от 31.07.13, 19:08:12
Не подходит любой вариант работы с диском. Задача заключается в получении изображения чертежа непосредственно в память.
Название: Re: Предпросмотр многолистового чертежа при открытии файла
Отправлено: Sabahs от 31.07.13, 19:22:02
Почему, не подходит работа с диском?
ksDrawKompasGroup - не работает с диском.
Название: Re: Предпросмотр многолистового чертежа при открытии файла
Отправлено: artemy от 31.07.13, 20:47:08
Работа с диском отнимает время и ресурсы системы, к тому же запись может быть по тем или иным причинам недоступна. Так или иначе задача стоит именно так, если нет нормального решения, то придётся думать немного в другом направлении.

Отрисовка группы - не то, что мне нужно. Просто я думал, что, возможно, от моего взора где-то укрылась функция получения изображения чертежа или возможность использовать ksDrawDocument не только для первого листа. Нет, так нет.

Всем спасибо за помощь.
Название: Re: Предпросмотр многолистового чертежа при открытии файла
Отправлено: Sabahs от 31.07.13, 21:09:12
Есть места, куда запись всегда открыта, а по поводу ресурсов, многое зависит от железа.
Жесткий не SSD, иначе оценка была бы ещё выше.
Название: Re: Предпросмотр многолистового чертежа при открытии файла
Отправлено: artemy от 01.08.13, 19:10:36
Так или иначе, задача была именно в получении изображения в память. Какой смысл мне писать файл на диск (да ещё и проводить операции сжатия графики), когда можно то же самое сразу получить в какую-нибудь переменную? А если файлов сотни? Короче, лирика всё это.
Название: Re: Предпросмотр многолистового чертежа при открытии файла
Отправлено: Sabahs от 01.08.13, 19:36:31
Не хотите рассказывать о задаче, Ваше право, но не могу понять, что сжимать, если можно получить сразу в сжатом состоянии.
Также, если найдёте книгу, у меня она в печатном варианте, то в первом томе на странице 527 начало описания, работы с файлами отображенными в память.
Название: Re: Предпросмотр многолистового чертежа при открытии файла
Отправлено: artemy от 02.08.13, 20:16:38
Файлы действительно получаются уже в сжатом состоянии, только вот сжимает их сам компас (аналогично команде "Сохранить как...", например, в JPEG), причём неприличное время, в этом-то вся загвоздка.

За наводку спасибо, будем посмотреть.