• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Переменные в сборке

Автор eugen47, 21.03.15, 19:49:24

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

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

eugen47

Добрый вечер!
Поставили задачу вывести из сборки (с параметризированными деталями) список переменных и их значения.
Также, должна быть возможность изменения значений.
Пытаюсь вывести эти самые значения, но получаю 0 переменных и ошибку.
Зараннее благодарю за помощь!


procedure TForm1.Button1Click(Sender: TObject);
var i, num: word;
begin
  try
   kompas:=KompasObject(GetActiveOleObject('Kompas.Application.5'));
  except
   kompas:=KompasObject(CreateOleObject('Kompas.Application.5'));
  end;

  Document3D:=ksDocument3D(kompas.ActiveDocument3D);

  if Assigned (Document3D) then
    Document3D.close;
   
    Document3D:=ksDocument3D(kompas.Document3D);
    Document3D.Open('C:\Program Files\Borland\Delphi7\Projects\files\2447-82\Ñáîðêà-2447-82__2015_03_21_16_11_01.a3d',FALSE);

 
   Parts:=ksPartCollection(Document3D.PartCollection(true));
   
   num:=Parts.GetCount;
   ComboBox1.Clear;

  for i:=0 to num-1 do
    begin
      Part:=ksPart(Parts.GetByIndex(i));
      ComboBox1.Items.Add(Part.name);
    end;

   kompas.Visible:=true;

end;

procedure TForm1.ComboBox1Change(Sender: TObject);
var
vr: ksVariableCollection;
univar: ksVariable;
j, numpart: integer;
begin

parts:=ksPartCollection(Document3D.PartCollection(true));
part:=ksPart(parts.GetByName(Combobox1.Text,True,True));
vr:=ksVariableCollection(part.VariableCollection);
numpart:=vr.GetCount;

//showmessage(inttostr(numpart));

for j:=0 to numpart-1 do
begin
univar:=ksVariable(vr.GetByIndex(j));
ListBox1.Items.Add(univar.name);
end
end;

Смотрите интерфейсы IFeature7 и IVariable7.

eugen47

Странно, мне дали методичку, где аналогичные операции проводятся на API5, и там всё работает, а у меня, почему-то нет(
а можно ли как-то открыть указанную модель в сборке и поменять значения в ней ?

eugen47