Почему я получаю ошибку парсера/синтаксиса имени переменной в openSCAD?

Я новичок в openSCAD и пытаюсь воссоздать анимацию поршня на основе видео на YouTube, которое я видел на канале mathcodeprint. Мой код почти идентичен, за исключением того, что мне пришлось создавать модули самому, потому что он никогда не показывает их в видео.

Я получаю ошибку парсера/синтаксиса в моем коде в строке 6, где определена переменная pin_offset. Однако, если я попытаюсь жестко закодировать и полностью удалить переменные, я получу аналогичную проблему в строке 9, где начинается THROW. Может кто-нибудь, пожалуйста, помогите мне определить, в чем проблема? Код здесь:

$fn=200;
//$t=0

crank_rad = 30;
crank_ang = $t*360
pin_offset = 55;
rod_length = 80;

THROW = sqrt((pow(crank_rad,2)+pow(rod_length,2))-(2*crank_rad*rod_length*cos(crank_angle)));

rod_ang = asin(crank_rad*sin(crank_ang)/rod_length);

translate([75,0,0]) text(str(THROW));
translate([75,-20,0]) text(str(rod_ang));


translate([0,0,THROW-rod_length]) piston()

%translate([0,0,THROW-rod_length]) pin()

#translate([0,-5,pin_offset+THROW-rod_length]) rotate([0,-rod_ang,0]) conrod()

translate([0,0,rod_length+pin_offset]) rotate([0,crank_ang,0]) cam();



module piston(){
    difference(){
        cylinder(h=75,r=50,center=false);
        translate([0,0,pin_offset]) rotate([0,90,0]) cylinder(h=60,r=5,center=true);
    }
    translate([0,0,-5]) cylinder(h=80,r=55,center=false);
}

module pin(){
    translate([0,0,pin_offset]) rotate([0,90,0]) cylinder(h=60,r=5,center=true);
}

module conrod(){
    hull(){
    difference(){
        translate([0,-5,pin_offset]) rotate([0,90,0]) cylinder(h=5,r=5,center=false);
        translate([0,-5,pin_offset+rod_length]) rotate([0,90,0]) cylinder(h=5,r=5,center=false);
    }
    translate([0,-5,pin_offset]) rotate([0,90,0]) cylinder(h=5,r=7,center=false);
        translate([0,-5,pin_offset+rod_length]) rotate([0,90,0]) cylinder(h=5,r=7,center=false);
}
}
    
module cam(){
translate([0,-5,pin_offset+rod_length]) rotate([0,90,0]) cylinder(h=10,r=5,center=false);
}

person pap123    schedule 08.12.2020    source источник


Ответы (1)


точка с запятой отсутствует в строке перед

crank_ang = $t*360; 

и строка 9 должна быть

THROW = sqrt((pow(crank_rad,2)+pow(rod_length,2))-(2*crank_rad*rod_length*cos(crank_ang)));
person a_manthey_67    schedule 08.12.2020