Официальный форум российского программного комплекса T-FLEX PLM


Поиск  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
Работа с вектором привязки
 
Здравствуйте.

Подскажите, пожалуйста, каким образом нужно обращаться к векторам привязки.

Вариант 1:


Код

TFlex.Model.Document doc = TFlex.Application.OpenDocument(@"D:\temp\1.grb");

foreach (FixingVector fv in doc.FixingVectors)
{
   if (fv.Name == "Вектор")
      Console.Write("Вектор найден");
}




При запуске этого варианта doc.FixingVectors.Count == 2, но fv при этом null.



Вариант 2:


Код


foreach (object o2d in doc.Objects2D)
{
   if (o2d is FixingVector)
      {
         Console.WriteLine(((FixingVector)o2d).Name);
      }
}



Не обнаруживает ни одного вектора.


Вариант 3:


Код

ModelObject mo = d.GetObjectByName(vectorName);

и

ModelObject mo = d.GetObjectByID(vectorID);



ничего не находит: mo == null

Вектора реально существуют и имеют верное имя и ID.


Может кто сталкивался. Поделитесь мыслями, что можно сделать?
 
С векторами привязки не сталкивался, но на вскидку вариант 1 правильный... Возможно Вы не правильно задали имя вектора, поэтому для эксперимента предлагаю такой вариант:

Код
TFlex.Model.Document doc = TFlex.Application.OpenDocument(@"D:\temp\1.grb"); 

foreach (FixingVector fv in doc.FixingVectors) 
{ 
      Console.Write("" + fv.Name); 
}


Что касается идентификатора, то в API он имеет другое представление, нежели в CAD (то есть не шестнадцатиричное), возможно по этому вариант 3 не работает.
Изменено: Brom25 - 27.05.2009 22:35:17
Кто ищет - тот всегда найдет!
 
С именем и идентификатором - всё OK. Видимо, что-то я не понимаю...
Foreach не крутится на этом типе. И объекты явно не ищутся :idontnow:
Видимо, только разработчики "в помощь", как говориться...
Но они пока не хотят здесь отписываться.

Попробовал ещё один вариант (так, на всякий случай). Такой вариант тоже не проходит.

Код
                System.Collections.IEnumerator enumer = d.FixingVectors.GetEnumerator();

                while (enumer.MoveNext())
                { 
                    Console.WriteLine(enumer.Current.ToString());
                }
 
Цитата
Bormash пишет:
Вариант 1:...

Попробуйте написать не "fv.Name", а "fv.Comment".
Должно сработать.
 
Всем спасибо за содействие.
Оказалось всё проще. Техподдержка сказала, что в 10-й версии такая функциональность не работает.
Проверил в 11-й - первый вариант работает.
Страницы: 1