Создание дерева сборки

Программирование для CATIA.

Re: Создание дерева сборки

Сообщение Rybuf » 03 апр 2008 14:36

Код: Выделить всё
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   ComObj, Dialogs, ComCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    procedure Button1Click(Sender: TObject);
    procedure CatTree(CatObj : Variant);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
   Catia, Products: Variant;
   Level: array[1..20] of integer;   //массив уровней вложенности  20 - думаю хватит, но желающие могут поставить более
   CurrentLevel: Integer;

implementation

{$R *.dfm}

function Spcs(Lg: Integer): string;   // функция добавляет пробелы в строку
begin
Result := '';
while Length(Result) < Lg do
   Result := ' ' + Result;
end;


procedure Tform1.CatTree(CatObj : Variant);
var
i: integer;
str: string;
begin
  for i:=level[CurrentLevel] to CatObj.Count do  begin
    str :=  CatObj.Item(i).ReferenceProduct.Parent.Name;    // полный путь CatObj.Item(i).ReferenceProduct.Parent.FullName;
    memo1.Lines.Add(Spcs(10*CurrentLevel) + str);
     if pos('.CATPRODUCT',AnsiUpperCase(str)) <> 0 then begin // если сборка, то ....
       level[Currentlevel] := i;  //save position
       inc(CurrentLevel);
       CatTree(CatObj.Item(i).Products);
     end;
   end;
level[CurrentLevel]:= 1;
dec(CurrentLevel);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
str: string;
begin
try
  // Create Word Instance
   Catia := CreateOleObject('Catia.Application'); //Запускаем Катю.

except
   ShowMessage('Cannot start Catia.');
   Screen.Cursor := crDefault;
   Exit;
end;
  OpenDialog1.Filter := 'Catia product files (*.CATProduct)|*.CATProduct|All files (*.*)|*.*';  // Открываем файл сборки
  if OpenDialog1.Execute then
      Catia.Documents.Open(Opendialog1.FileName);

  Catia.Visible := True ;
   Products := CATIA.ActiveDocument.Product.Products;
  CurrentLevel := 1;
 
for i := 1 to 20 do         // Значение уровней вложенности в 1
     level[i] := 1;

  CatTree(Products);

end;

end.

Может немного коряво, но работает.
Rybuf
Новичок
Новичок
 
Сообщения: 9
Зарегистрирован: 05 окт 2007 06:18

Re: Создание дерева сборки

Сообщение kaktys » 02 апр 2009 17:16

[PTM] писал(а):в сборке,отдельном парте задаються основные данные
такие как чертил Наименование итп
в самой сборке
запускаеться скрипт скрипт генерит встроенными ср-вами бом по шаьлону из заданных свойств( файл настроек)
затем обработывает обм файл---или текстовик или эксель
сортирует полученную таблицу данных по выбранному критерию и генерит в драфтинге листы спецификации
в данном примере самое сложное это создать файл натроек и обработка текстовика
итогом такого скрипта будет 1 файл с кучей листов спецификации

Всем привет. Столкнулся с такой же задачей. Может у кого-нить есть наработки в этом вопросе :)
kaktys
Новичок
Новичок
 
Сообщения: 1
Зарегистрирован: 25 мар 2009 00:52

Пред.

Вернуться в CAA-RADE

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1