Как реализовать движение ручки с определенным шагом?

andrey__chirkin
отредактировано 16 авг Раздел: Модуль «СПДС»

Необходимо, чтобы ручка двигалась с шагом в 100 мм.

В функции OnMoveGripPoint для ручки 1, алгоритм такой:

  1. Берем последние два числа с помощью нахождения остатка от деления на 100 (new_value % 100)
  2. Если последние два числа меньше 50, то из new_value вычитаем эти числа. Если больше 50, то к new_value прибавляем 100 - последние два числа. Например: если new_value = 443, то оно округлится до 400, если new_value = 475, то округлится до 500.

Диапазон new_value может быть от 300 до 1000.

Итоговое значение new_value я записываю в переменную длины объект rL.

Я написал этот алгоритм на C++, все работает.

int new_value = 475; //условное значение
int last_two_numbers = new_value % 100; if (last_two_numbers < 50)
new_value -= last_two_numbers;
else
new_value += 100 - last_two_numbers;

if (new_value < 300)
new_value = 300;
if (new_value > 1000)
new_value = 1000;

std::cout << new_value << std::endl;

В параметрическом объекте расчет происходит не корректно. Исходники прилагаю.

Ответы