Как реализовать движение ручки с определенным шагом?
Необходимо, чтобы ручка двигалась с шагом в 100 мм.
В функции OnMoveGripPoint для ручки 1, алгоритм такой:
- Берем последние два числа с помощью нахождения остатка от деления на 100 (new_value % 100)
- Если последние два числа меньше 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;
В параметрическом объекте расчет происходит не корректно. Исходники прилагаю.
Тэги темы:
0
Ответы
-
rL=(round(new_value/100; 0))*100
0 -
Благодарю за предложенное решение.
В чем заключается ошибка в моем решении?
0 -
С телефона и без очков, но вроде как new_value лишнее
rL = (round(rL/100; 0))*100;
if (rL<300) rL=300;
if (rL>1000) rL =1000;или так
0 -
В языке для создания парам объектов нет оператора остатка от деления? (% - вызывает ошибку)
0 -
Нет (
0 -
Ясно
0 -
Добавьте выше
Остаток = rXCoord-rL;
rXCoord для примера просто
0 -
Понятно, что работать будет >300 <1000
0
Разделы
- Все разделы
- 35 Общие вопросы
- 25 Работа nanoCAD в ОС Linux
- 251 Платформа nanoCAD
- 6 nanoCAD GeoniCS
- 57 nanoCAD BIM Строительство
- 3 nanoCAD Механика PRO
- 38 nanoCAD BIM Электро
- 10 nanoCAD BIM Вентиляция
- 5 nanoCAD BIM ВК
- nanoCAD BIM Отопление
- 6 nanoCAD BIM СКС
- 27 nanoCAD BIM ОПС
- 2 nanoCAD Стройплощадка
- 2 nanoCAD Металлоконструкции
- 1 nanoCAD Конструкции PS
- 2 TDMS Фарватер
- Облака точек
- NSR Specification
- Учебным заведениям и учащимся