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


Поиск  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
Свойства размера
 
Здравствуйте, уважаемые.
Возникла необходимость программно задать выбранному размеру, проставленному на проекции, свои значения номинала и отклонений.
После 3х дней попыток код макроса выложить на форум так и не удалось. Всё зависает напрочь.
Поэтому привести его здесь не могу. На словах вопрос такой:
когда я пытаюсь присвоить свойству Value класса Dimension или же свойствам TolerLowerDev, TolerUpperDev класса LinearDimension какое-либо значение - это не работает. Значения не попадают в параметры размера. Свойство ManualValue устанавливаю в true.
zip-файл с текстом програмы прикладываю к посту.
Смотрел примеры макросов, например пересчёт размеров в середину поля допуска. Судя по тем макросам всё элементарно. Но, тем не менее, простое присваивание не работает.
Может кто-то знает, как обойти проблему и всё-таки задать размеру свои собственные значения номинала и допусков.
Изменено: Николай - 24.04.2012 22:06:55
 
Уважаемый Николай.
Попробуйте вот этот код:
Код
doc.BeginChanges("Изменение размеров");
   foreach (Dimension dim in doc.Dimensions)
    {
     CircularDimension cdim = dim as CircularDimension;
     if (cdim != null)
   {
    cdim.ValueType = DimensionValueType.Manual;
    cdim.Value = 999;
    cdim.TolerAutomatic = true;
    cdim.TolerLowerDev = -3;
    cdim.TolerUpperDev = 5;
   }
     LinearDimension ldim = dim as LinearDimension;
     ...
    }
doc.EndChanges();
Тут есть небольшая хитрость: как вы видите, для задания отклонений объект типа Dimension приводится к типу CircularDimension. Это нужно делать, так как объект Dimension не содержит в себе таких полей, как верхнее и нижнее отклонение.
 
Осирис, спасибо, ваш код навел меня на правильную мысль, всё получилось ;)
 
Здравствуйте, уважаемые.
Работаю тут потихоньку с размерами. Заметил такую забавную странность с заданием допусков через свойства LinearDimension.TolerLowerDev и LinearDimension.TolerUpperDev.
Задаю:
TolerLowerDev = new Parameter(-0.2); - изменяется поле размера, соответствующее ВЕРХНЕМУ!!!! отклонению.
TolerUpperDev = new Parameter(0.5); - изменяется поле размера, соответствующее НИЖНЕМУ!!!! отклонению.
То же самое наблюдается при чтении:
задал в размере нижнее отклонение - программно прочиталось как верхнее и наоборот.
До этой простой истины дошёл за 3 часа поиска бага в своём макросе. Сначала не поверил... Потом истерически ржал ;)
Оказалось, дело не в моей проге ;).
Надо будет проверить этот баг в 12й версии.
Порой складывается ощущение, что API доделывалось в режиме "ночь перед экзаменом".
Страницы: 1