• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

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

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Сохранение в формате Jpg

Автор zeratul, 21.11.13, 17:21:53

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

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

zeratul

Здравствуйте. Подскажите пожалуйста почему не сохраняет файл
код следующий написан на 1С

   kompas=Новый COMОбъект("Kompas.Application.5");
   kompas.Document3d.open(Path,True);
   iTopPart = kompas.ksGetApplication7.ActiveDocument.TopPart;
   iTopPart.Application.Documents.Open(Path,True,False);   
   NewPath = "D:\"+iTopPart.Application.ActiveDocument.Name;
   iTopPart.Application.ActiveDocument.SaveAs(NewPath);
   RastrPar = kompas.Document3d.RasterFormatParam();
   RastrPar.format = 2;
   RastrPar.colorType = 0;
   RastrPar.extResolution = 300;
   RastrPar.extScale = 1;
   RastrPar.greyScale = true;
   RastrPar.multiPageOutput = true;
   RastrPar.onlyThinLine = false;
   RastrPar.rangeIndex = 0;
   FileFormat = ".jpg";
   kompas.Document3d.SaveAsToRasterFormat(NewPath + iTopPart.Application.ActiveDocument.Name + FileFormat, RastrPar);
   iTopPart.Application.Documents.Open(NewPath,True,False);   
   Kompas.Visible = True;

Язык, какой то китайский.
Эту строку  iTopPart = kompas.ksGetApplication7.ActiveDocument.TopPart; - не пойму, если Вы получили API5, так и работайте с ним.
pDocument3d = kompas.ActiveDocument3D;
iTopPart = pDocument3d.GetPart(pTop_Part); - не нужна имя есть у документа.
NewPath = pDocument3d.fileName - полный путь.
pDocument3d.SaveAs(NewPath);

zeratul

я имел ввиду не сохраняет файл в растровом виде формата jpg

zeratul

   kompas=Новый COMОбъект("Kompas.Application.5");
   Kompas.Visible = True;
   kompas.Document3d.open(Path,False);
   pDocument3d = Kompas.ActiveDocument3d;
   
   RastrPar = kompas.Document2d.RasterFormatParam();
   RastrPar.format = 2;
   RastrPar.colorType = 0;
   RastrPar.extResolution = 300;
   RastrPar.extScale = 1;
   RastrPar.greyScale = true;
   RastrPar.multiPageOutput = true;
   RastrPar.onlyThinLine = false;
   RastrPar.rangeIndex = 0;
   
   FileFormat = ".jpg";
   
   kompas.Document2d.SaveAsToRasterFormat("C:\123" + FileFormat, RastrPar);

последняя строка возвращает False и не сохраняет файл

zeratul

Вот так сохраняет но почему то в черно белых тонах

   kompas=Новый COMОбъект("Kompas.Application.5");
   Kompas.Visible = True;
   kompas.Document3d.open(Path,False);
   pDocument3d = Kompas.ActiveDocument3d;
   
   RastrPar = pDocument3d.RasterFormatParam();
   RastrPar.format = 2;
   RastrPar.colorType = 0;
   RastrPar.extResolution = 300;
   RastrPar.extScale = 1;
   RastrPar.greyScale = 0;
   RastrPar.colorBPP = 24;
   RastrPar.multiPageOutput = 0;
   RastrPar.onlyThinLine = 1;
   RastrPar.rangeIndex = 0;
   
   FileFormat = ".jpg";
   
   pDocument3d.SaveAsToRasterFormat(Лев(pDocument3d.FileName,СтрДлина(pDocument3d.FileName)-4) + FileFormat, RastrPar);

zeratul

Поставил  так RastrPar.colorType = 1; и все получилось

Хорошо, что разобрались.
ksRasterFormatParam::сolorType - Цвет вывода объектов:
BLACKWHITE - 0 - черный,
COLORVIEW - 1 - цвет, установленный для вида,
COLORLAYER - 2 - цвет, установленный для слоя,
COLOROBJECT - 3 - цвет, установленный для объекта.


leo69

Спасибо, ребята. Хоть чем-то помогли, дали место, где искать) :) В дополнение, я сделал приложение, которое позволяем массово экспортировать чертежи в jpg формат с помощью обращения к компас 3d.Для работы нужен установленный компас. Написано на C# в Visual Studio 2010. Может кому пригодится. Исходные коды внутри) ^^  http://rusfolder.com/39537868
+ Благодарностей: 1

Vin

Вот доработать бы её. Чтобы могла шить, стирать, гладить, убирать :-))).
А если серьёзно, неплохо бы расширить функционал в части преобразования spw, kdw.

Sprinter500

А как правильно объявить и определить RastrPar в Delphi ? А то у меня ругается что несовместимы типы:

[dcc32 Error] Unit1.pas(63): E2010 Incompatible types: 'ksRasterFormatParam' and 'IDispatch'

Код:
var
RastrPar: ksRasterFormatParam;
begin
RastrPar:= Document2D.RasterFormatParam;


Жаль что это все через API5, а в API7 этого нет. Кстати в 15-й версии появился PDF-формат. Чтобы сохранить в нем надо также в растр выводить или как-то иначе?

+ Благодарностей: 1

Sprinter500

Спасибо большое. Теперь работает. Про прогу в приведенной ссылке - я это видел, но она мне не нужна - хочу написать собственную "сохранялку", заточенную под нашу специфику.

Теперь стало непонятно, как организовать перебор открытых документов? Тут реализация в API5, соответственно в API5.

А в этой теме про PDF: http://forum.ascon.ru/index.php/topic,25301.0.html     - там под API7, тоже как то надо организовать перебор документов.


Sprinter500

Но IDocumens - это из API7, а тут используется API5. Как их увязать между собой?



Sprinter500

А как тогда должна будет работать функция из API5, если перейдем к документу под API7:

Document2D.SaveAsToRasterFormat('D:\Study\df.jpg', RastrPar);


В API7 у IKompasDocument2D же нет метода SaveAsToRasterFormat.


Можно использовать ksTransferInterface, а можно сделать активным документ в API7 и тупо получить активный документ через API5.
+ Благодарностей: 1

Sprinter500

Спасибо. Получить в API7 так?:

IDocuments и далее
document = iObject.Item (Index)

А как узнать кол-во открытых документов, чтобы через index циклом перебрать?

А свойства, слабо посмотреть?
+ Благодарностей: 1

Sprinter500

Sabahs, спасибо. Вечерком попробую. Можешь еще глянуть эту тему?:
http://forum.ascon.ru/index.php/topic,25301.40.html

Я там пост оставил. А то что то никто не отвечает.