Сохранение в файл растрового формата

Автор Wiscont, 01.03.19, 10:32:03

« предыдущая - следующая »

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

Wiscont

    CBUILDERAUTO

    Не хочет сохранять в файл :`(

TForm1::Startjpg()
{
    //моя функ запуска компаса
    StartKompas();

    //путь к графическому файлу
    WideString macr(LabeledEdit1->Text);

    ksDocument2DPtr doc2D = kompas->Document2D();
    doc2D->ksOpenDocument(macr, 0 );

    if ( kompas ) {

    kompas = (IDispatch*)GetActiveOleObject( "KOMPAS.Application.5" );
    ksDocument2D* doc = (ksDocument2D*)kompas->ActiveDocument2D();

    ksRasterFormatParam * RastrPar = (ksRasterFormatParam*)kompas->GetParamStruct( ko_RasterParam );
    RastrPar->Init();

    RastrPar->format = 2;
    RastrPar->colorType = 0;
    RastrPar->extResolution = 300;
    RastrPar->extScale = 1;
    RastrPar->greyScale = true;
    RastrPar->multiPageOutput = true;
    RastrPar->onlyThinLine = false;
    RastrPar->rangeIndex = 0;

    doc->SaveAsToRasterFormat(StringToOleStr("C:\\Users\\....\\Desktop\\1111.jpg"), RastrPar);

    } // if kompas

doc2D->ksCloseDocument();

//моя функ закрытия компаса
ClosedKompas();

Sabahs

 RastrPar->colorType = 0; - не может быть нулём.

BPP_COLOR_01 - 1 - монохромный
BPP_COLOR_02 - 2 - 4 цвета
BPP_COLOR_04 - 4 - 16 цветов
BPP_COLOR_08 - 8 - 256 цветов
BPP_COLOR_16 - 16 - 16 разрядов
BPP_COLOR_24 - 24 - 24 разряда
BPP_COLOR_32 - 32 - 32 разряда

Wiscont

colorType поправил, но файл по прежнему не генерируется
Из справки SDK, функция SaveAsToRasterFormat
Для документов деталей и сборок предварительно нужно получить reference, используя функцию ksGetReferenceFrom3dDocument для COM или свойство reference для Automation.

//Получить свойство
reference rDoc = doc->get_reference();

SaveAsToRasterFormat(rDoc, StringToOleStr("C:\\Users\\...\\Desktop\\1111.jpg"), RastrPar);

не работает, Call to undefined function 'SaveAsToRasterFormat'

int answ = doc->SaveAsToRasterFormat(StringToOleStr("C:\\Users\\
возращает 0

Sabahs

Попробуйте уменьшить RastrPar->extResolution = 300;, может просто памяти не хватать.

Wiscont

уменьшил, но компас все равно возвращает 0
SDK
Синтаксис Automation:
BOOL SaveAsToRasterFormat (BSTR fileName,
LPDISPATCH rasterPar);

ksSaveAsToRasterFormat(reference sheet, char * fileName, RasterFormatParam * par); - так для API

если int answ = doc->ksSaveDocument(StringToOleStr("C:\\Users\\... ответ -1

вроде все правильно, но нет




Sabahs

Doc.SaveAsToRasterFormat(WideString(' fileName'),RasterFormatParam);

Wiscont

ksRasterFormatParam * RastrPar = (ksRasterFormatParam*)kompas->GetParamStruct( ko_RasterParam );
заменил на
ksRasterFormatParam * RastrPar = (ksRasterFormatParam*)doc->RasterFormatParam();
работает )