Strony

poniedziałek, 17 lipca 2017

OpenSCAD "napisałem bryłę 3D w notatniku"

czyli,
pierwsze podejście do OpenSCAD,
kilka linii kodu i kartka zamalowana i to w 3D,
nareszcie jawny kod,
wartości podawane w kodzie, a nie rysowanie na czuja
i wielokrotne przyglądanie czy aby się coś nie rozjechało podczas edycji.

Składnia języka taka C podobna,
ale to inny świat poleceń rozwiązań geometrycznych.
Ale powiem, że jest prosty, po dwóch godzinach od włączenia tego programu "napisałem bryłę 3D".

OpenSCAD będzie to idealny komplet do drukarki 3D i CNC.
Podgląd natychmiastowy, ale Render trwał ponad 2 minuty na C2D 2.8GHz (STL 13.5MB)
To jest trochę inna semantyka,
nie wiem jak ją opisać, może przykład który będę rozwijał:

Gdy wyjsciem jest bryła 3D (sphere, cub, cylinder, polyhedron) [OpenSCAD CheatSheet]
  •  cube([2]); 
  •  cube([2,3,4]); 
  •  translate([3,0,0]) cube([2,3,4]); 
  •  translate([3,0,0]) color("red") cube([2,3,4]); 
  •  translate([3,0,0]) rotate([45,0,0]) color("red") cube([2,3,4]); 
  •  translate([3,0,0]) rotate([45,0,0]) color("red") cube([2,3,4], center=true); 
  •  for (x=[0:5]) translate([x*10,0,0]) rotate([45,0,0]) color("red") cube([2,3,4], center=true);
  •  for (y=[0:5]) for (x=[0:5]) translate([x*10,y*10,0]) rotate([45,0,0]) color([x/5,y/5,0]) cube([2,3,4], center=true); 
  •  for (z=[0:5]) for (y=[0:5]) for (x=[0:5]) translate([x*10,y*10,z*10]) rotate([x*10,y*10,z*10]) color([x/5,y/5,z/5]) cube([2+x,3+y,4+z], center=true);  
lub gdy wyjściem jest figura 2D (circle, square, polygon, text, N-bok circle(D,$fn=N); )
  •  linear_extrude(...)  // height = wysokość, twist = skręcanie bryły, scale - zawężanie lub rozszerzanie do góry, slices = precyzja figóry
  •  rotate_extrude(...)  - figura obrotowa.

No i kombinacje, bo np: figura której rozszerzy się kontur o 2 i zawęży o 2
 p = [ [0,0], [10,0], [12,10], [2,10]]; offset(2) offset(-2) polygon(p); 
ma podobną wielkość ale to już nie ta samą figurą i tu zaczyna się kombinatoryka z OpenSCAD

Brak komentarzy:

Prześlij komentarz