Заполнить штамп в текстовом документе

Автор podshibyakinea, 08.11.17, 17:01:04

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

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

podshibyakinea

else if (iKompas.ksGetDocumentType(0) =  lt_DocTxtStandart) then     // ksDocumentTxt
  begin
    iDocumentTxt := ksDocumentTxt(iKompas.ActiveDocumentTxt());
    reg.RootKey := HKEY_CURRENT_USER;
    reg.OpenKey('Software\ASCON\kb_library\shtamp', true);
    iTextItemParam := ksTextItemParam(iKompas.GetParamStruct(ko_TextItemParam));
    iStamp := ksStamp(iDocumentTxt.GetStamp);
    iStamp.ksOpenStamp;



Код не работает, что сделал так?

SerGoVec

Может быть лучше API7 использовать?

     K7: IApplication;
     disp: IDispatch;
     sheets: ILayoutSheets;
     sheet: ILayoutSheet;
     stamp: IStamp;
    doc: IkompasDocument;

   disp := IDispatch(CreateKompasApplication);
   K7 := disp as IApplication;
   doc := K7.ActiveDocument;
  if doc.DocumentType = ksDocumentDrawing then
  begin
      sheets := doc.LayoutSheets; //все листы документа
      sheet := sheets.Item[0];
      stamp := sheet.Stamp;
      if (stamp <> nil) then
         text := stamp.Text[25]; //первичное применение (знач. первого листа)
         ...
  end;

   
как-то так.

podshibyakinea

Наверное лучше, но как быть с моим кодом?
Все работает с Чертежом и СП. Посмотрел KsTLB - сделал по аналогии - не работает.