Kompas

Автор S@neK, 08.07.09, 02:56:48

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

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

S@neK

Здравствуйте, столкнулся с КМ и сразу же возник вопрос, возможно ли связать КМ с Excel?? есть отчеты но они скидываются в Word((((
Помогите если знаете...
Заранее спасибо

Maxagg

Смотря что ты хочешь связать?
Ты можешь программно связаться с компасом, прочитать данные, затем связаться с экселем и отправить данные туда

S@neK

Не, нужно чтоб из компас-менеджера нажав закладку отчеты->сформировать отчеты, он выкидывал их не в ворд а в эксель!!!

S@neK

а как связаться программно, можешь рассказать??

Maxagg

Например так
Начальное условие: открыт эксель, компас с чертежом на котором есть линии

код на delphi
var
  kompas:KompasObject;
  d2d:ksDocument2D;
  excel:olevariant;
procedure TForm1.Button1Click(Sender: TObject);
var
  iter:ksiterator;
  ln:variant;
  obj:reference;
  line:kslinesegparam;
  perimetr:real;
begin
  kompas:=KompasObject(GetActiveOleObject('Kompas.Application.5'));
  excel:=GetActiveOleObject('Excel.Application');
  kompas.Visible:=true;
  d2d:=ksDocument2D(Kompas.ActiveDocument2D);
  excel.visible:=true;
  iter:=ksiterator(kompas.GetIterator);
  iter.ksCreateIterator(LINESEG_OBJ,0);
  obj:=iter.ksMoveIterator('F');
  perimetr:=0;
  while obj<>0 do
  begin
    line:=ksLineSegparam(kompas.GetParamStruct(ko_linesegparam));
    line.Init;
    d2d.ksGetObjParam(obj, line,ALLPARAM);
    ln:=excel.activeworkbook.activesheet.shapes.addline(line.x1,line.y1,line.x2,line.y2);
    perimetr:=perimetr+sqrt(sqr(line.x1-line.x2)+sqr(line.y1-line.y2));
    obj:=iter.ksMoveIterator('N');
  end;
  iter.ksDeleteIterator;
  excel.activeworkbook.activesheet.cells[1,1]:='Периметр='+floattostr(perimetr)+'мм';
  excel.activeworkbook.saveas('c:\1.xls');
end;