Проблема с сохранением спецификации в растровый формат

Автор uno-84, 28.04.10, 15:27:31

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

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

uno-84

Доброе время суток!
Пишу программку в Делфи с использованием API5 компаса, по ходу которой необходимо сохранить компасовский документ (чертеж и спецефикацию) в растровый формат, вот код процедуры:

function SaveRaster(AFileName :string; DocType: Integer; AKompas: KompasObject):string;
var
KompasDoc : ksDocument2D;
kompasSpec: ksSpcDocument;
rast : ksRasterFormatParam;
begin
  if AKompas <> nil then
  begin
    case DocType of
     1: begin
            KompasDoc := ksDocument2D( AKompas.ActiveDocument2D() );
            if KompasDoc <> nil then
             rast := ksRasterFormatParam ( kompasDoc.RasterFormatParam() )
            else Exit;
            rast.pages := '1-1';
        end;
     2: begin
            kompasSpec := ksSpcDocument( AKompas.SpcActiveDocument() );
            if kompasSpec <> nil then
                rast := ksRasterFormatParam ( kompasSpec.RasterFormatParam() )
            else Exit;
            rast.pages := '1-' + IntToStr(kompasSpec.ksGetSpcDocumentPagesCount);
        end;
    end;
      rast.colorBPP := BPP_COLOR_04;
      rast.colorType := BLACKWHITE;
      rast.extResolution := 300;
      rast.extScale := 1;
      rast.greyScale := true;
      rast.multiPageOutput := False;
      rast.onlyThinLine := false;
      rast.rangeIndex := 0;
      if not CanSaveEMF
        then begin
          rast.format := FORMAT_GIF;
          Result := '.gif';
          end
        else begin
          rast.format := FORMAT_EMF;
          Result := '.emf';
          end;
      case DocType of
       1: begin
              kompasDoc.SaveAsToRasterFormat( (AFileName + Result),rast );
              kompasDoc := nil;
          end;
       2: begin
              kompasSpec.SaveAsToRasterFormat( (AFileName + Result), rast);
              kompasSpec := nil;
          end;
      end;
  end;
end;


В параметр AFileName передаю TempPath (C:\Documents and Settings\User\Local Settings\Temp), с чертежем все нормально - сохраняет в нужную папку, а вот спецефикация сохраняется на Рабочий Стол.
Может кто сталкивался с такой проблемой? Подскажите что нужно исправить что бы растр спецификации сохранялся в нужную мне папку, а не на рабочий стол?
Заранее спасибо!

uno-84

Небольшая поправка: если спецификация имеет один лист, то программа сохраняет куда нужно, если два и более то на рабочий стол.

uno-84

Не могу сказать в чем тут ошибка, но я нашел несколько другой выход.
Если кто встретиться с таким же вот решение:

for i := 1 to kompasSpec.ksGetSpcDocumentPagesCount do
begin
          rast.pages := IntToStr(i) + '-' + IntToStr(i);
          kompasSpec.SaveAsToRasterFormat( (AFileName + ' ' + '(' + IntToStr(i) + ')' + Result), rast);
end;


Данный код работает как надо.
+ Благодарностей: 1

Дмитрий22

Данная проблема характерна для Компаса v12 и ниже, начиная с v13, Аскон исправил эту проблему, но все равно спасибо за решение, действительно работает.