ksTable

Автор HaHa, 26.01.13, 20:21:30

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

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

Ваша ошибка в том, что вы пытаетесь получить интерфейсы из воздуха.
//==============================================================================
procedure TForm1.ErrorKompas(Sender: TObject);
var
Disp:IDispatch;
KompasAPI:IApplication;
CutDocuments:IDocuments;
Document:IKompasDocument;
Symbols2DContainer:ISymbols2DContainer;
Doc2D:IKompasDocument2D;
ViewsAndLayersManager:IViewsAndLayersManager;
Views:IViews;
View:IView;
DocTable:IDrawingTable;
DocTables:IDrawingTables;
begin
  Disp:=IDispatch(CreateKompasApplication);
  KompasAPI:=Disp as IApplication;
  CutDocuments:=KompasAPI.Documents;
  if CutDocuments<>nil then
   begin
     Document:=CutDocuments.Add(ksDocumentDrawing,True);
     if Document<>nil then
      begin
        Doc2D:=Document as IKompasDocument2D;
        if Doc2D<>nil then
         begin
           ViewsAndLayersManager:=Doc2D.ViewsAndLayersManager;
           if ViewsAndLayersManager<>nil then
            begin
              Views:=ViewsAndLayersManager.Views;
              if Views<>nil then
               begin
                 View:=Views.View[0]; // системный вид
                 if View<>nil then
                  begin
                    Symbols2DContainer:=View as ISymbols2DContainer;
                    if Symbols2DContainer<>nil then
                     begin
                       DocTables:=Symbols2DContainer.DrawingTables;
                       if DocTables<>nil then
                        begin
                          DocTable:=DocTables.Add(10,10,10,10,2);
                          if DocTable<>nil then
                           begin
                             DocTable.X:=100;
                             DocTable.Y:=100;
                             DocTable.Angle:=30;
                             DocTable.Update;
                             DocTable:=nil;
                           end;
                          DocTables:=nil;
                        end;
                       Symbols2DContainer:=nil;
                     end;
                    View:=nil;
                  end;
                 Views:=nil;
               end;
              ViewsAndLayersManager:=nil;
            end;
           Doc2D:=nil;
         end;
        Document:=nil;
      end;
     CutDocuments:=nil;
   end;
  KompasAPI:=nil;
  Disp:=nil;
end;
//==============================================================================
+ Благодарностей: 1

HaHa

Спасибо Большое :)

Bordes

Как вариант:
в документ можно вставить заранее сделанную таблицу, а потом уж редактировать ее (это попроще, чем создавать ее прямо в документе).
Для этого надо создать фрагмент с одной таблицей, потом:
PlacementParam parPlacement;
  parPlacement.xBase=parPlacement.yBase=parPlacement.ang=0;
  parPlacement.scale=1;
reference refTmpGroup=ksReadFragmentToGroupEx(DataFileName, 1, &parPlacement, 0); // загрузили фрагмент россыпью во временную группу
reference refIt=CreateIterator(TABLE_OBJ, refTmpGroup);
reference refTable=MoveIterator(refIt, 'F'); // получили ref на таблицу
DeleteIterator(refIt);
StoreTmpGroup(refTmpGroup); // сохранили объекты временной группы в документ
ClearGroup(refTmpGroup);
DeleteObj(refTmpGroup);