2015-03-25 7 views
1

У меня проблема с оператором If в OpenScad. У меня есть 4 переменныхopenscad Если проблема с переменной

a=20; 
b=14; 
w=1; 
c=16; 

Я хочу, чтобы проверить количество ведьм больше a или b. И после того, как кто-то меньше, чтобы принять значение меньшей переменной (в нашем случае b < a) и сделать простую операцию с переменной c (c=b-w).

Я пробовал, как это, но он не работает.

a=20; 
b=14; 
w=1; 
c=16; 
if(a>b) 
{ 
    c=b-w; 
} 

if (a<b) 
{ 
c=a-w; 
} 

if (a==b) 
{ 
c=a-w; 
} 

кажется логика, но в openscad, как я понял, вы не можете изменить значение переменной внутри заявлении If. Какой трюк я могу использовать, чтобы получить свою цель. Спасибо!

ответ

2

OpenSCAD различна. Вы можете назначать переменные внутри скобки. Таким образом, c = b - w будет назначен только внутри кронштейн if. Снаружи, если эта скобка все равно будет 16. Не спрашивайте меня, почему. Вы можете прочитать больше в Documentation of OpenSCAD.

3

в 3. ноге вы путаете оператор присваивания «=» с равным оператором «==» (правильный if (a==b)). в вашем 3. ноге вы делаете то же самое, что и в 2., поэтому вы можете обрабатывать оба как «else» -leg.

Правильно: присвоение не допускается в if-statement. В openscad вы можете использовать оператор - вместо «?»:

c= a>b ? b-w : a-w; 

после «=» следует условие, после того, что делать, если условие истинно, то после «:» в ложно «?» ноги. Возможны вложенные условия, например. Ваши условия:

c= a>b ? b-w : (a<b ? a-w : a-w); 

дополнительная информация в documentation

-1
c = min(c,min(a,b)/2-w); 

это также решить проблему) присваивание переменной

+0

это приводит к ошибке: ПРЕДУПРЕЖДЕНИЕ: Игнорирование неизвестной переменной 'c'. не «c = min (a, b) -w» соответствует вашему вопросу? –

 Смежные вопросы

  • Нет связанных вопросов^_^