Доступ к переменным уровня сборки

Автор Д-р Дим, 23.01.08, 00:08:08

« предыдущая - следующая »

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

Д-р Дим

Коллеги, подскажите. Есть сборка, в ней НА УРОВНЕ СБОРКИ есть ряд операций (массив компонентов, смещенная плоскость и т.д.) Каким образом программно добраться до переменных, отвечающих за параметры этих операций? Я могу без проблем менять переменные деталей в сборке (ksPart и ksVariableCollection), но у сборки, то бишь ksPartCollection, нет свойства VariableCollection. Как быть-то? Помогите please.

Slaviation

Нужно взять part :=  iAsmDoc.GetPart(pTop_Part) а уже от него коллекцию переменных.

Д-р Дим

Цитата: Slaviation от 23.01.08, 07:13:56
Нужно взять part :=  iAsmDoc.GetPart(pTop_Part) а уже от него коллекцию переменных.

Цитата: Slaviation от 23.01.08, 07:13:56
Нужно взять part :=  iAsmDoc.GetPart(pTop_Part) а уже от него коллекцию переменных.

Спасибо, почти заработало. Список внешних переменных сборки получаю, менять меняю, но после этого сборка не обновляется, в том числе и вручную по F5, застревая в как4ом-то промежуточном состоянии. Для обновления делаю (Delphi):
  part:=ksPart(doc.GetPart(-1)) // получили ссылку на сборку
  vr:=ksVariableCollection(part.VariableCollection); // ссылка на коллекцию переменных сборки
 // ссылка на нужную переменную varname
  vvv:=ksVariable(vr.GetByName(varname,true,true));
  part.BeginEdit;
  // меняем значение переменной
   vvv.value:=value_;
   part.Update;
   part.RebuildModel;
   part.EndEdit(true);
   parts.refresh;

Переменные компонентов сборки прекрасно меняются, а вот с переменными самой сборки чего-то не хватает. Буду благодарен за подсказку.

yarikv

попробуй так. должно все работать

iPart:=ksPart(iDoc3D.GetPart(pTop_Part));
iFeature:=ksFeature(iPart.GetFeature);
iVariableCollection:=ksVariableCollection(iFeature.VariableCollection);

Slaviation

Цитироватьpart.BeginEdit;

Вроде как для головного парта сборки этого не нужно делать.

Д-р Дим

Цитата: yarikv от 23.01.08, 15:23:41
попробуй так. должно все работать
iPart:=ksPart(iDoc3D.GetPart(pTop_Part));
iFeature:=ksFeature(iPart.GetFeature);
iVariableCollection:=ksVariableCollection(iFeature.VariableCollection);

Большое спасибо, теперь все и правда заработало (на горе моим студентам - это я им методичку по программированию под КОМПАС пишу  :))

yarikv

если не жалко то поделитесь методичкой когда будет готова

Д-р Дим

Цитата: yarikv от 23.01.08, 16:19:00
если не жалко то поделитесь методичкой когда будет готова

готова и выложена на сайт моей кафедры. А вот ссылку тут дать не могу, форум запрещает, пишет "Вам не разрешено добавлять в сообщение ссылки на Internet-ресурсы!"  :( Укажите свой mail

yarikv

30.01.08, 12:53:20 #8 Последнее редактирование: 30.01.08, 12:56:31 от yarikv
мейл в профиле. а ссылку можно же просто текстом дать. типа нттп. а еще можно просто зарегестрироваться. и все будет можно

Леночка

Здравствуйте, скиньте мне на почту пожалуйста ссылку на методичку тоже хочу почитать

Maxxx

Здравствуйте. Если можно и мне - очень интересно!