Я новичок в 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);
}