ForemkaCAD

Język skryptowy Foremki: dokumentacja

Wszystko o języku, którym Foremka buduje modele z kodu: w konsoli skryptów i w odpowiedziach asystenta. Strona powstaje z tego samego katalogu funkcji co podpowiedzi w konsoli, więc zawsze opisuje aktualną wersję programu.

Skrypt buduje model tak samo, jak robi to interfejs: każda funkcja odpowiada jednej operacji z historii. Uruchomiony na pustym dokumencie odtwarza model od zera, uruchomiony na istniejącym dopisuje operacje na końcu historii.

Podstawy

# komentarz do końca linii

grubosc = 12          # zmienna
param("bok", 40)      # parametr dokumentu, widoczny w panelu parametrów

b = box([80, 20, 40])          # wywołanie z argumentem pozycyjnym
fillet(edges(b), radius: 3)    # argument nazwany po dwukropku

Liczby wolno pisać z jednostką: 12mm, 2.5cm, 1in, 30deg, 1.57rad. Bez jednostki długość znaczy milimetry, a kąt stopnie. Wewnątrz skryptu wszystko jest już przeliczone na milimetry i stopnie.

Punkt w szkicu zapisuje się jako [x, y], punkt i wektor w przestrzeni jako [x, y, z]. Wektory dodaje się i mnoży przez liczbę: [10, 0, 0] * 2.

Układ świata

Pionem jest oś Y, a nie Z. Stała up to [0, 1, 0], down to [0, -1, 0], a osie mają nazwy x_axis, y_axis, z_axis. Płaszczyzny bazowe to plane.xy (leży poziomo, normalna w górę), plane.yz i plane.xz (obie pionowe). Szkic na plane.xy wyciąga się więc do góry, a box([80, 20, 40]) ma 20 milimetrów wysokości.

Sterowanie

if grubosc > 10 {
  print("gruby")
} else {
  print("cienki")
}

for i in range(0, 5) {
  hole(face(b, "top"), at: [10 + i * 15, 20], diameter: 5)
}

def wysokosc_zebra(dlugosc) {
  return dlugosc / 3
}

Dostępne operatory: + - * / % ^, porównania < > <= >= == != oraz and, or, not.

Trzy rzeczy, które warto wiedzieć

  1. Bryły są wynikiem operacji. b = extrude(sk, 10) daje bryłę, a b = fillet(edges(b), 2) zastępuje ją zaokrągloną. Stara zmienna też zadziała: odwołania nadążają za aktualną postacią bryły.

  2. Geometrię wybiera się opisem, nie numerem. Zamiast pamiętać, że chodzi o krawędź numer siedem, pisze się edges(b, dir: up) albo faces(b, kind: "cylinder", diameter: 6). Taki zapis przeżywa zmianę wymiarów, numer nie przeżywa.

  3. Szkic ma własny układ współrzędnych. [0, 0] to jego początek, także gdy leży on na ścianie bryły. Wyciągnięcie idzie prostopadle do szkicu.

Przykład

grubosc = param("grubosc", 12)

plyta = sketch(plane.xy) {
  rect(center: [0, 0], width: 120, height: 80)
}
b = extrude(plyta, grubosc)
b = fillet(edges(b, dir: up), 8)
b = shell(b, 2, openings: faces(b, side: "top"))

for i in range(0, 4) {
  b = hole(face(b, "bottom"), at: [-45 + i * 30, 0], diameter: 5, depth: 6)
}
name(b, "Podstawa")

Funkcje

Parametry

param

Zapisuje parametr dokumentu i zwraca jego wartość. Wymiary zbudowane z tej wartości, także przeliczonej (w / 2 + 3), wiążą się z parametrem i przeliczają po jego zmianie w panelu parametrów: rozmiary i położenia prymitywów, odległości wyciągnięć, kąty obrotów, promienie zaokrągleń, grubości, wzory, wymiary szkicu oraz punkty linii, prostokątów, okręgów i łamanych.

parametr typ opis
name (wymagany) tekst Nazwa parametru, bez spacji.
value (wymagany) dowolny Liczba albo wyrażenie w tekście, na przykład "grubosc * 2".
unit tekst Jednostka parametru. Wartości: "mm", "deg", "unitless". Domyślnie mm.

Zwraca: liczba: wyliczona wartość parametru.

grubosc = param("grubosc", 12)
kat = param("pochylenie", 3, unit: "deg")
bok = param("bok", "grubosc * 4")

Szkic

arc

Łuk przez trzy punkty: początek, koniec i punkt leżący na łuku.

parametr typ opis
p1 (wymagany) [x, y] Początek łuku.
p2 (wymagany) [x, y] Koniec łuku.
through (wymagany) [x, y] Punkt na łuku.
construction prawda/fałsz Geometria konstrukcyjna: rysowana przerywaną linią, nie zamyka obszarów i nie bierze udziału w operacjach.

Zwraca: encja szkicu.

arc([0, 0], [20, 0], [10, 6])

arc_center

Łuk o zadanym środku, od punktu początkowego do końcowego, przeciwnie do ruchu wskazówek zegara.

parametr typ opis
center (wymagany) [x, y] Środek łuku.
start (wymagany) [x, y] Punkt początkowy.
end (wymagany) [x, y] Punkt końcowy.
large prawda/fałsz Weź łuk dłuższy niż półokrąg. Łuk zawsze biegnie przeciwnie do ruchu wskazówek zegara, więc przy dłuższej stronie początek i koniec zamieniają się rolami. Domyślnie false.
construction prawda/fałsz Geometria konstrukcyjna: rysowana przerywaną linią, nie zamyka obszarów i nie bierze udziału w operacjach.

Zwraca: encja szkicu.

center

Środek okręgu albo łuku.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
entity (wymagany) encja szkicu Okrąg albo łuk.

Zwraca: punkt szkicu.

chamfer_2d

Ścina narożnik między dwiema liniami szkicu.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
a (wymagany) encja szkicu Pierwsza linia.
b (wymagany) encja szkicu Druga linia.
size (wymagany) liczba Odległość ścięcia od narożnika.

Zwraca: nic.

circle

Okrąg o zadanym środku. Rozmiar podaje się promieniem albo średnicą.

parametr typ opis
center (wymagany) [x, y] Środek okręgu.
radius liczba Promień.
diameter liczba Średnica.
construction prawda/fałsz Geometria konstrukcyjna: rysowana przerywaną linią, nie zamyka obszarów i nie bierze udziału w operacjach.

Zwraca: encja szkicu.

circle([0, 0], diameter: 20)
circle([10, 10], 5)

circle_2pt

Okrąg przez dwa punkty leżące na końcach średnicy.

parametr typ opis
p1 (wymagany) [x, y] Pierwszy punkt.
p2 (wymagany) [x, y] Drugi punkt.
construction prawda/fałsz Geometria konstrukcyjna: rysowana przerywaną linią, nie zamyka obszarów i nie bierze udziału w operacjach.

Zwraca: encja szkicu.

circle_3pt

Okrąg przechodzący przez trzy punkty.

parametr typ opis
p1 (wymagany) [x, y] Pierwszy punkt.
p2 (wymagany) [x, y] Drugi punkt.
p3 (wymagany) [x, y] Trzeci punkt.
construction prawda/fałsz Geometria konstrukcyjna: rysowana przerywaną linią, nie zamyka obszarów i nie bierze udziału w operacjach.

Zwraca: encja szkicu.

construction

Przełącza rysowanie na geometrię konstrukcyjną i z powrotem. Działa do końca bloku szkicu.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
on prawda/fałsz Prawda włącza tryb konstrukcyjny. Domyślnie true.

Zwraca: nic.

construction(true)
line([0,0], [50,0])
construction(false)

end

Punkt końcowy linii, łuku albo krzywej.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
entity (wymagany) encja szkicu Encja szkicu.

Zwraca: punkt szkicu.

fillet_2d

Zaokrągla narożnik między dwiema encjami szkicu.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
a (wymagany) encja szkicu Pierwsze ramię narożnika.
b (wymagany) encja szkicu Drugie ramię narożnika.
radius (wymagany) liczba Promień zaokrąglenia.

Zwraca: nic.

intersect_curves

Wstawia krzywe i punkty powstałe z przecięcia wskazanej geometrii z płaszczyzną szkicu.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
target (wymagany) dowolny Bryła, ściany, krawędzie, inny szkic, oś albo płaszczyzna przecinająca płaszczyznę szkicu.

Zwraca: lista encji.

intersect_curves(b)
intersect_curves(faces(b, kind: "cylinder"))

Ściana i bryła dają krzywe przekroju, krawędź i oś punkt przebicia, płaszczyzna linię wspólną. Geometria, która płaszczyzny szkicu nie dotyka, jest błędem, bo cichy brak wyniku ukryłby pomyłkę w skrypcie.

line

Odcinek między dwoma punktami szkicu.

parametr typ opis
p1 (wymagany) [x, y] Punkt początkowy [x, y].
p2 (wymagany) [x, y] Punkt końcowy [x, y].
construction prawda/fałsz Geometria konstrukcyjna: rysowana przerywaną linią, nie zamyka obszarów i nie bierze udziału w operacjach.

Zwraca: encja szkicu.

a = line([0, 0], [80, 0])

mirror_curves

Odbija wskazane encje względem linii szkicu i wiąże kopie symetrią.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
entities (wymagany) encje szkicu Encje do odbicia.
line (wymagany) encja szkicu Linia będąca osią odbicia.

Zwraca: liczba: ile encji odbito.

offset_curves

Odsuwa wskazane krzywe o zadaną odległość, tworząc równoległy kontur.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
entities (wymagany) encje szkicu Encje do odsunięcia.
distance (wymagany) liczba Odległość; dodatnia odsuwa na zewnątrz konturu.

Zwraca: lista encji.

offset_curves(kontur, 3)

pattern_rect

Wzór siatkowy w szkicu: kopie encji w rzędach i kolumnach.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
entities (wymagany) encje szkicu Encje do powielenia.
cols (wymagany) liczba Liczba kolumn łącznie z oryginałem.
rows liczba Liczba rzędów łącznie z oryginałem. Domyślnie 1.
dx liczba Odstęp kolumn w milimetrach. Domyślnie 0.
dy liczba Odstęp rzędów w milimetrach. Domyślnie 0.

Zwraca: nic.

pattern_rect(otwor, cols: 4, rows: 2, dx: 20, dy: 15)

pattern_ring

Wzór kołowy w szkicu: kopie encji rozłożone wokół punktu.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
entities (wymagany) encje szkicu Encje do powielenia.
center (wymagany) [x, y] Środek obrotu w układzie szkicu.
count (wymagany) liczba Liczba kopii łącznie z oryginałem.
angle liczba Rozpiętość kątowa w stopniach. Domyślnie 360.

Zwraca: nic.

pattern_ring(otwor, [0, 0], count: 6)

point

Samodzielny punkt szkicu. Nie tworzy obszaru, służy jako odniesienie dla wiązań i wzorów.

parametr typ opis
at (wymagany) [x, y] Położenie punktu.
construction prawda/fałsz Geometria konstrukcyjna: rysowana przerywaną linią, nie zamyka obszarów i nie bierze udziału w operacjach.

Zwraca: encja szkicu.

polygon

Wielokąt foremny wpisany w okrąg albo opisany na nim.

parametr typ opis
center (wymagany) [x, y] Środek wielokąta.
sides (wymagany) liczba Liczba boków, co najmniej trzy.
radius liczba Promień okręgu odniesienia.
diameter liczba Średnica okręgu odniesienia.
inscribed prawda/fałsz Prawda wpisuje wielokąt w okrąg (wierzchołki na okręgu), fałsz opisuje go na okręgu (boki styczne). Domyślnie true.
angle liczba Obrót wielokąta w stopniach. Domyślnie 0.
construction prawda/fałsz Geometria konstrukcyjna: rysowana przerywaną linią, nie zamyka obszarów i nie bierze udziału w operacjach.

Zwraca: lista encji.

polygon([0, 0], sides: 6, diameter: 20)

polyline

Łamana przez kolejne punkty. Z opcją domknięcia daje zamknięty kontur.

parametr typ opis
points (wymagany) lista Lista punktów [[x, y], ...].
closed prawda/fałsz Domknij łamaną odcinkiem od końca do początku. Domyślnie false.
construction prawda/fałsz Geometria konstrukcyjna: rysowana przerywaną linią, nie zamyka obszarów i nie bierze udziału w operacjach.

Zwraca: lista encji.

polyline([[0,0], [40,0], [40,20], [0,20]], closed: true)

project

Rzutuje geometrię na płaszczyznę szkicu wzdłuż jej normalnej. Rzut jest powiązany ze źródłem.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
target (wymagany) dowolny Krawędzie, ściany, bryła, inny szkic (cały, jego encja albo punkt), oś, płaszczyzna albo punkt [x, y, z].

Zwraca: lista encji.

project(faces(b, side: "top"))
project(edges(b, dir: up))
project(sk1)

Rzut spłaszcza źródło wzdłuż normalnej szkicu, więc powstaje zawsze. Gdy potrzebny jest ślad geometrii dokładnie na płaszczyźnie, użyj intersect_curves.

rect

Prostokąt. Podaje się dwa przeciwległe narożniki albo środek z szerokością i wysokością.

parametr typ opis
p1 [x, y] Pierwszy narożnik.
p2 [x, y] Narożnik przeciwległy.
center [x, y] Środek prostokąta.
width liczba Szerokość wzdłuż osi X szkicu.
height liczba Wysokość wzdłuż osi Y szkicu.
construction prawda/fałsz Geometria konstrukcyjna: rysowana przerywaną linią, nie zamyka obszarów i nie bierze udziału w operacjach.

Zwraca: lista czterech encji.

rect([0, 0], [80, 40])
rect(center: [0, 0], width: 80, height: 40)

rect_3pt

Prostokąt obrócony: dwa punkty wyznaczają bok, trzeci wysokość.

parametr typ opis
p1 (wymagany) [x, y] Początek boku.
p2 (wymagany) [x, y] Koniec boku.
p3 (wymagany) [x, y] Punkt wyznaczający wysokość.
construction prawda/fałsz Geometria konstrukcyjna: rysowana przerywaną linią, nie zamyka obszarów i nie bierze udziału w operacjach.

Zwraca: lista czterech encji.

sketch

Tworzy szkic na płaszczyźnie i wypełnia go geometrią z bloku albo z listy encji.

parametr typ opis
plane (wymagany) płaszczyzna Płaszczyzna bazowa, konstrukcyjna albo płaska ściana bryły.
entities lista Lista encji, gdy nie używa się bloku.
name tekst Nazwa szkicu w drzewie.

Zwraca: szkic.

sk = sketch(plane.xy) {
  rect([0, 0], [80, 40])
  circle([40, 20], diameter: 10)
}
sk = sketch(face(b, "top"), [circle([0, 0], diameter: 6)])

Wiązania działają tylko w formie z blokiem, bo tylko tam encje mają nazwy.

spline

Krzywa swobodna przechodząca przez podane punkty.

parametr typ opis
points (wymagany) lista Lista punktów [[x, y], ...], co najmniej dwa.
closed prawda/fałsz Domknij krzywą w pętlę. Domyślnie false.
control prawda/fałsz Prawda traktuje punkty jako bieguny, przez które krzywa nie przechodzi. Domyślnie false.
construction prawda/fałsz Geometria konstrukcyjna: rysowana przerywaną linią, nie zamyka obszarów i nie bierze udziału w operacjach.

Zwraca: encja szkicu.

spline([[0,0], [20,15], [40,0]], closed: false)

start

Punkt początkowy linii, łuku albo krzywej.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
entity (wymagany) encja szkicu Encja szkicu.

Zwraca: punkt szkicu.

text

Napis z fontu: w punkcie, w ramce z dwóch narożników albo wzdłuż krzywej szkicu. Litery są zamkniętymi konturami, więc napis się wyciąga i wycina jak każdy profil.

parametr typ opis
content (wymagany) tekst Treść; kolejne wiersze rozdziela "\n".
at [x, y] Punkt, w którym stoi napis (według halign i valign), albo pierwszy narożnik ramki, gdy podano parametr to. Domyślnie [0, 0].
to [x, y] Narożnik ramki przeciwległy do at; napis wyrównuje się w ramce.
height liczba Wysokość wielkich liter w milimetrach. Bez niej napis wypełnia ramkę albo zajmuje część krzywej, a w punkcie ma 5 mm.
font tekst Font po nazwie, na przykład "Roboto", "Liberation Serif", "Black Ops One"; "Arial", "Times New Roman" i "Courier New" dają fonty o tych samych szerokościach znaków. Domyślnie Liberation Sans.
font_file tekst Plik fontu TTF, OTF albo WOFF zamiast fontu po nazwie.
bold prawda/fałsz Pogrubienie, gdy font ma taką odmianę. Domyślnie false.
italic prawda/fałsz Kursywa; font bez odmiany pochyłej dostaje pochylenie 12°. Domyślnie false.
halign tekst Wyrównanie w poziomie. Wartości: "left", "center", "right". Domyślnie center.
valign tekst Wyrównanie w pionie (w punkcie i w ramce). Wartości: "top", "middle", "bottom". Domyślnie middle.
angle liczba Obrót napisu w stopniach wokół at. Domyślnie 0.
spacing liczba Odstęp znaków w procentach szerokości z fontu (0 jak w foncie, ujemny zagęszcza). Domyślnie 0.
flip_h prawda/fałsz Odbicie w poziomie (napis lustrzany, na przykład do stempla). Domyślnie false.
flip_v prawda/fałsz Odbicie w pionie. Domyślnie false.
path encja szkicu Krzywa szkicu (odcinek, łuk, okrąg, splajn), po której biegnie napis.
side tekst Napis nad krzywą (na okręgu na zewnątrz) albo pod nią. Wartości: "above", "below". Domyślnie above.
fit prawda/fałsz Rozłóż znaki na całej długości krzywej. Domyślnie false.

Zwraca: encja szkicu.

text("FOREMKA", at: [0, 0], height: 8, font: "Roboto", bold: true)
text("Pokrywa\nrev. 2", [-30, -10], [30, 10], font: "Liberation Serif")
c = circle([0, 0], 20)
text("NA OKRĘGU", path: c, height: 4)

Napis w ramce i na krzywej da się potem edytować w szkicu dwuklikiem, tak jak napis z narzędzia Tekst. Obszary liter wyciąga extrude(sk, ...); w szkicu z prostokątem wokół napisu litery są dziurami w płytce.

trim

Usuwa kawałek krzywej wskazany punktem, tnąc ją w miejscach przecięcia z innymi krzywymi.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
entity (wymagany) encja szkicu Krzywa do przycięcia.
at (wymagany) [x, y] Punkt na kawałku, który ma zniknąć.

Zwraca: nic.

Wiązania

angle

Wymiar kąta między dwiema liniami.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
a (wymagany) encja szkicu Pierwsza linia.
b (wymagany) encja szkicu Druga linia.
value (wymagany) liczba Kąt w stopniach.

Zwraca: nic.

circle_line_distance

Wymiar odległości obwodu okręgu od prostej. Wymiar do środka daje point_line_distance.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
circle (wymagany) encja szkicu Okrąg albo łuk.
line (wymagany) encja szkicu Linia.
value (wymagany) liczba Odległość obwodu od prostej w milimetrach.

Zwraca: nic.

coincident

Skleja dwa punkty szkicu w jeden. To najsilniejsze wiązanie: punkty przestają istnieć osobno.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
a (wymagany) punkt Pierwszy punkt.
b (wymagany) punkt Drugi punkt.

Zwraca: nic.

coincident(end(a), start(b))

diameter

Wymiar średnicy okręgu.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
circle (wymagany) encja szkicu Okrąg.
value (wymagany) liczba Średnica w milimetrach.

Zwraca: nic.

distance

Wymiar odległości między dwoma punktami. Wpisana wartość steruje geometrią.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
a (wymagany) punkt Pierwszy punkt.
b (wymagany) punkt Drugi punkt.
value (wymagany) liczba Odległość w milimetrach.

Zwraca: nic.

distance(start(a), end(a), 80)

equal

Wymusza równą długość dwóch linii albo równy promień dwóch okręgów.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
a (wymagany) encja szkicu Pierwsza encja.
b (wymagany) encja szkicu Druga encja.

Zwraca: nic.

equal(a, b)

h_distance

Wymiar odległości poziomej między dwoma punktami.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
a (wymagany) punkt Pierwszy punkt.
b (wymagany) punkt Drugi punkt.
value (wymagany) liczba Odległość w milimetrach.

Zwraca: nic.

horizontal

Wymusza poziome ułożenie linii albo poziomą prostą przez dwa punkty. Poziom liczy się w układzie szkicu.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
a (wymagany) dowolny Linia albo pierwszy punkt.
b punkt Drugi punkt, gdy pierwszym argumentem był punkt.

Zwraca: nic.

horizontal(a)
horizontal(center(c1), center(c2))

midpoint

Wymusza, żeby punkt leżał w połowie odległości między dwoma innymi.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
mid (wymagany) punkt Punkt środkowy.
a (wymagany) punkt Pierwszy punkt skrajny.
b (wymagany) punkt Drugi punkt skrajny.

Zwraca: nic.

parallel

Wymusza równoległość dwóch linii.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
a (wymagany) encja szkicu Pierwsza encja.
b (wymagany) encja szkicu Druga encja.

Zwraca: nic.

parallel(a, b)

perpendicular

Wymusza prostopadłość dwóch linii.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
a (wymagany) encja szkicu Pierwsza encja.
b (wymagany) encja szkicu Druga encja.

Zwraca: nic.

perpendicular(a, b)

point_line_distance

Wymiar odległości punktu od prostej.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
point (wymagany) punkt Punkt.
line (wymagany) encja szkicu Linia.
value (wymagany) liczba Odległość w milimetrach.

Zwraca: nic.

point_on

Wymusza, żeby punkt leżał na linii albo na okręgu.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
point (wymagany) punkt Punkt.
curve (wymagany) encja szkicu Linia albo okrąg.

Zwraca: nic.

radius

Wymiar promienia okręgu albo łuku.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
circle (wymagany) encja szkicu Okrąg albo łuk.
value (wymagany) liczba Promień w milimetrach.

Zwraca: nic.

symmetric

Wymusza symetrię dwóch punktów względem linii.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
a (wymagany) punkt Pierwszy punkt.
b (wymagany) punkt Drugi punkt.
line (wymagany) encja szkicu Oś symetrii.

Zwraca: nic.

tangent

Wymusza styczność linii do okręgu albo dwóch okręgów do siebie.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
a (wymagany) encja szkicu Pierwsza encja.
b (wymagany) encja szkicu Druga encja.

Zwraca: nic.

tangent(l, c)

v_distance

Wymiar odległości pionowej między dwoma punktami.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
a (wymagany) punkt Pierwszy punkt.
b (wymagany) punkt Drugi punkt.
value (wymagany) liczba Odległość w milimetrach.

Zwraca: nic.

vertical

Wymusza pionowe ułożenie linii albo pionową prostą przez dwa punkty.

Działa tylko wewnątrz bloku szkicu.

parametr typ opis
a (wymagany) dowolny Linia albo pierwszy punkt.
b punkt Drugi punkt, gdy pierwszym argumentem był punkt.

Zwraca: nic.

Wybór

axis

Oś podana punktem i kierunkiem. Do obrotu i wzoru kołowego.

parametr typ opis
origin (wymagany) [x, y, z] Punkt na osi.
direction (wymagany) [x, y, z] Kierunek osi.

Zwraca: oś.

revolve(sk, axis([0,0,0], up), 360)

axis_of

Oś wyprowadzona z geometrii: z krawędzi prostej jej kierunek, z okrągłej albo ze ściany walcowej oś obrotu.

parametr typ opis
geometry (wymagany) dowolny Krawędź albo ściana.

Zwraca: oś.

pattern_circular(b, axis_of(face(b, kind: "cylinder")), count: 6)

bodies

Lista wszystkich widocznych brył dokumentu.

Zwraca: lista brył.

for b in bodies() { print(b.name) }

body

Bryła po nazwie z drzewa. Bez argumentu daje ostatnio utworzoną.

parametr typ opis
name tekst Nazwa bryły, na przykład "Bryła 1".

Zwraca: bryła.

b = body("Bryła 1")

edges

Krawędzie bryły spełniające wszystkie podane warunki. Bez warunków daje wszystkie krawędzie.

parametr typ opis
body (wymagany) bryła Bryła.
kind tekst Rodzaj krawędzi. Wartości: "line", "circle", "arc", "curve".
dir [x, y, z] Kierunek; zostają krawędzie proste równoległe do niego.
perpendicular [x, y, z] Kierunek; zostają krawędzie do niego prostopadłe.
length liczba Dokładna długość w milimetrach.
min_length liczba Najmniejsza długość.
max_length liczba Największa długość.
radius liczba Promień okręgu albo łuku.
diameter liczba Średnica okręgu albo łuku.
near [x, y, z] Punkt w przestrzeni; zostają elementy leżące blisko niego.
within liczba Promień wyszukiwania dla „near”, w milimetrach. Domyślnie 1.
index dowolny Numer albo lista numerów w BREP. Zapis kruchy, przeżywa tylko do najbliższej zmiany modelu.
where funkcja Własny warunek: funkcja biorąca cechy elementu i zwracająca prawdę albo fałsz.
sort tekst Porządek wyniku, na przykład "z" albo "-area". Minus odwraca.
limit liczba Zostaw najwyżej tyle elementów.

Zwraca: zbiór krawędzi.

fillet(edges(b, dir: up), radius: 3)
chamfer(edges(b, kind: "circle", diameter: 6), 0.5)
edges(b, where: def(e) { return e.length > 20 and e.mid.z > 0 })

Krawędzie styczne, szwy i zdegenerowane są pomijane, tak jak przy zaznaczaniu myszą.

face

Jedna ściana. Skrót na faces(...) z wymogiem, żeby wynik był dokładnie jeden; przy większej liczbie skrypt się zatrzymuje, zamiast po cichu wybrać pierwszą lepszą.

parametr typ opis
body (wymagany) bryła Bryła.
side tekst Strona bryły. Wartości: "top", "bottom", "front", "back", "left", "right".
kind tekst Rodzaj powierzchni. Wartości: "plane", "cylinder", "cone", "sphere", "torus", "spline", "surface".
normal [x, y, z] Kierunek normalnej.
diameter liczba Średnica walca albo kuli.
internal prawda/fałsz Prawda wybiera ściany otworów.
near [x, y, z] Punkt w przestrzeni; zostają elementy leżące blisko niego.
within liczba Promień wyszukiwania dla „near”, w milimetrach. Domyślnie 1.
index dowolny Numer albo lista numerów w BREP. Zapis kruchy, przeżywa tylko do najbliższej zmiany modelu.
where funkcja Własny warunek: funkcja biorąca cechy elementu i zwracająca prawdę albo fałsz.
sort tekst Porządek wyniku, na przykład "z" albo "-area". Minus odwraca.
limit liczba Zostaw najwyżej tyle elementów.

Zwraca: zbiór ścian z jedną ścianą.

sk = sketch(face(b, "top"))
hole(face(b, "top"), at: [10, 10], diameter: 5)

faces

Ściany bryły spełniające wszystkie podane warunki.

parametr typ opis
body (wymagany) bryła Bryła.
kind tekst Rodzaj powierzchni. Wartości: "plane", "cylinder", "cone", "sphere", "torus", "spline", "surface".
normal [x, y, z] Kierunek normalnej; zostają ściany zwrócone w tę stronę.
side tekst Skrajna ściana z danej strony bryły. Wartości: "top", "bottom", "front", "back", "left", "right".
area liczba Dokładne pole w milimetrach kwadratowych.
min_area liczba Najmniejsze pole.
max_area liczba Największe pole.
radius liczba Promień walca, stożka albo kuli.
diameter liczba Średnica walca albo kuli.
internal prawda/fałsz Prawda wybiera ściany otworów, fałsz powierzchnie zewnętrzne.
near [x, y, z] Punkt w przestrzeni; zostają elementy leżące blisko niego.
within liczba Promień wyszukiwania dla „near”, w milimetrach. Domyślnie 1.
index dowolny Numer albo lista numerów w BREP. Zapis kruchy, przeżywa tylko do najbliższej zmiany modelu.
where funkcja Własny warunek: funkcja biorąca cechy elementu i zwracająca prawdę albo fałsz.
sort tekst Porządek wyniku, na przykład "z" albo "-area". Minus odwraca.
limit liczba Zostaw najwyżej tyle elementów.

Zwraca: zbiór ścian.

shell(b, 2, openings: faces(b, side: "top"))
faces(b, kind: "cylinder", diameter: 6, internal: true)
faces(b, normal: up, min_area: 100)

find_sketch

Szkic po nazwie z drzewa. Bez argumentu daje ostatnio utworzony.

parametr typ opis
name tekst Nazwa szkicu, na przykład "Sketch1".

Zwraca: szkic.

sk = find_sketch("Sketch1")
b = extrude(find_sketch(), 10)

Odpowiednik „body” dla szkiców: pozwala sięgnąć po szkic z wcześniejszego uruchomienia skryptu, gdzie zmienna z nim już nie istnieje.

plane_from

Płaszczyzna podana punktem i normalną.

parametr typ opis
origin (wymagany) [x, y, z] Punkt na płaszczyźnie.
normal (wymagany) [x, y, z] Normalna płaszczyzny.

Zwraca: płaszczyzna.

mirror(b, plane_from([0,0,0], x_axis))

profile

Obszary szkicu do wyciągnięcia albo obrotu. Bez dodatkowych warunków bierze wszystkie zamknięte obszary szkicu.

parametr typ opis
sketch (wymagany) szkic Szkic.
near [x, y] Punkt w układzie szkicu; zostaje obszar, w którym ten punkt leży.
index dowolny Numer albo lista numerów obszarów, licząc od zera.
min_area liczba Najmniejsze pole obszaru.
max_area liczba Największe pole obszaru.

Zwraca: profil.

extrude(profile(sk, index: 0), 10)

Zwykle wystarczy podać sam szkic: extrude(sk, 10) bierze wszystkie jego obszary.

sketches

Lista wszystkich szkiców dokumentu.

Zwraca: lista szkiców.

print(count(sketches()))

Prymitywy

box

Prostopadłościan o zadanych wymiarach.

parametr typ opis
size (wymagany) [x, y, z] Wymiary [x, y, z] w milimetrach.
at [x, y, z] Narożnik początkowy. Domyślnie [0, 0, 0].

Zwraca: bryła.

b = box([80, 40, 20])

cylinder

Walec o osi pionowej.

parametr typ opis
radius liczba Promień.
height (wymagany) liczba Wysokość.
diameter liczba Średnica, zamiast promienia.
at [x, y, z] Środek podstawy. Domyślnie [0, 0, 0].

Zwraca: bryła.

b = cylinder(diameter: 30, height: 50)

gear_rack

Zębatka (listwa zębata) o zębach prostych, do pary z kołem spur_gear o tym samym module i kącie przyporu. Leży na płaszczyźnie poziomej: listwa biegnie wzdłuż +X, zęby patrzą w -Z, szerokość rośnie w górę.

parametr typ opis
teeth (wymagany) liczba Liczba zębów, od 1 do 1000; długość listwy to teeth * pi * moduł.
module liczba Moduł w mm: podziałka zębów przez pi.
diametral_pitch liczba Podziałka średnicowa (zęby na cal) zamiast modułu, dla zębatki calowej.
thickness liczba Szerokość listwy (w górę, wzdłuż osi koła). Domyślnie 10.
height liczba Wysokość od spodu do linii podziałowej; brak = 2,5 modułu + 10 mm.
pressure_angle liczba Kąt przyporu w stopniach, zwykle 20 (bywa 14.5 albo 25). Domyślnie 20.
backlash liczba Luz międzyzębny pary po linii podziałowej; zębatka oddaje połowę. Domyślnie 0.
fillet liczba Promień zaokrąglenia u stopy zęba; brak = 0.375 modułu.
at [x, y, z] Początek linii podziałowej na spodniej ścianie. Domyślnie [0, 0, 0].

Zwraca: bryła.

r = gear_rack(24, 2, thickness: 10, at: [-75.4, 0, 20])
p = spur_gear(20, 2, thickness: 10, hole: 8)

Koło o promieniu podziałowym r zazębia się z listwą, gdy jego środek leży r od linii podziałowej po stronie zębów: listwa z at: [x, 0, r] pasuje do koła w początku układu. Ząb numer k ma oś w x + (k + 1/2) * pi * moduł, więc oba końce listwy wypadają w połowie wrębu. Obrót koła o kąt a (w radianach) przesuwa listwę o a * r.

sphere

Kula.

parametr typ opis
radius liczba Promień.
diameter liczba Średnica, zamiast promienia.
at [x, y, z] Środek kuli. Domyślnie [0, 0, 0].

Zwraca: bryła.

spur_gear

Koło zębate walcowe o zębach prostych, z zarysem ewolwentowym (zarys odniesienia ISO 53). Leży na płaszczyźnie poziomej z osią pionową, ząb numer 0 patrzy w +X.

parametr typ opis
teeth (wymagany) liczba Liczba zębów, od 3 do 300.
module liczba Moduł w mm: średnica podziałowa przez liczbę zębów.
diametral_pitch liczba Podziałka średnicowa (zęby na cal średnicy podziałowej) zamiast modułu, dla koła calowego.
thickness liczba Grubość koła. Domyślnie 10.
pressure_angle liczba Kąt przyporu w stopniach, zwykle 20 (bywa 14.5 albo 25). Domyślnie 20.
backlash liczba Luz międzyzębny pary kół po okręgu podziałowym; każde koło oddaje połowę. Domyślnie 0.
fillet liczba Promień zaokrąglenia u stopy zęba; brak = 0.375 modułu. Za duży zmniejsza się do takiego, który mieści się we wrębie.
hole liczba Średnica otworu na wałek; 0 = bez otworu. Domyślnie 0.
at [x, y, z] Środek dolnej podstawy. Domyślnie [0, 0, 0].

Zwraca: bryła.

g = spur_gear(24, 2, thickness: 8, hole: 8)
p = spur_gear(13, 2, thickness: 8, at: [37, 0, 0])

Para kół zazębia się przy odległości osi moduł * (z1 + z2) / 2. Koło stojące w +X od drugiego ma naprzeciw wrąb, gdy liczba jego zębów jest nieparzysta; przy parzystej obróć je o pół podziałki: move(p, rotate: 180 / z, axis: up) przed przesunięciem na miejsce. Przy mniej niż 17 zębach (kąt 20°) zęby nie mają podcięcia, więc mała zębatka styka się z dużym kołem także pod okręgiem zasadniczym.

torus

Torus o osi pionowej.

parametr typ opis
radius (wymagany) liczba Promień większy, od osi do środka przekroju.
tube (wymagany) liczba Promień przekroju.
at [x, y, z] Środek torusa. Domyślnie [0, 0, 0].

Zwraca: bryła.

Bryły

emboss

Wytłacza albo wgłębia profil szkicu na ścianie bryły, także zakrzywionej (napis albo logo na walcu).

parametr typ opis
face (wymagany) dowolny Ściana, na której leży profil (ze zbioru ścian liczy się pierwsza) albo bryła razem z punktem "at".
profile (wymagany) profil Szkic albo jego obszary.
depth (wymagany) liczba Głębokość.
deboss prawda/fałsz Wgłębienie w ścianę zamiast wytłoczenia nad nią. Domyślnie false.
wrap prawda/fałsz Owinięcie po powierzchni bez rozciągania; fałsz rzutuje profil wzdłuż normalnej szkicu. Domyślnie true.
offset_x liczba Przesunięcie wzdłuż osi X szkicu, przy owinięciu po powierzchni. Domyślnie 0.
offset_y liczba Przesunięcie wzdłuż osi Y szkicu. Domyślnie 0.
angle liczba Obrót profilu wokół jego środka, w stopniach. Domyślnie 0.
at [x, y, z] Punkt leżący na ścianie, gdy zamiast ściany podana jest bryła; wskazuje ścianę najbliższą.

Zwraca: bryła.

emboss(face(walec, kind: "cylinder"), napis, 1)
emboss(walec, napis, 1, at: [0, 20, 20])
emboss(face(b, "top"), logo, 0.5, deboss: true)

Punktem odniesienia jest środek profilu rzucony wzdłuż normalnej szkicu na ścianę, więc szkic rysuje się na płaszczyźnie zwróconej do ściany (dla walca: przez jego oś albo stycznej).

extrude

Wyciąga profil prostopadle do jego płaszczyzny. Profilem jest szkic, jego wybrane obszary albo ściana bryły (wtedy działa jak wyciąganie ściany).

parametr typ opis
profile (wymagany) profil Szkic, obszary szkicu albo ściana.
distance (wymagany) liczba Długość wyciągnięcia; ujemna wyciąga w drugą stronę.
direction tekst "one" wyciąga w jedną stronę, "symmetric" po połowie w obie, "two" osobno w każdą. Wartości: "one", "symmetric", "two". Domyślnie one.
distance2 liczba Druga długość przy direction: "two".
op tekst Co zrobić z bryłami docelowymi: "new" tworzy osobną bryłę, "join" dokłada materiał, "cut" go odbiera, "intersect" zostawia część wspólną. Wartości: "new", "join", "cut", "intersect", "auto". Domyślnie new.
target bryła lub lista brył Bryła albo bryły, na których wykonuje się operacja logiczna. Wymagane dla "join", "cut" i "intersect".
to płaszczyzna Zamiast długości: płaszczyzna albo ściana, na której wyciągnięcie ma się skończyć.
offset liczba Odsunięcie od obiektu docelowego. Domyślnie 0.
through_all prawda/fałsz Zamiast długości: przez całe bryły docelowe, w stronę znaku odległości albo w obie przy direction: "symmetric". Tylko z op: "cut" albo "intersect". Domyślnie false.
solid prawda/fałsz Fałsz daje powierzchnię zamiast bryły; profil może być wtedy otwarty. Domyślnie true.

Zwraca: bryła albo lista brył.

b = extrude(sk, 20)
extrude(sk, -10, op: "cut", target: b)
extrude(sk, -1, op: "cut", target: b, through_all: true)
extrude(face(b, "top"), 5, op: "join", target: b)
extrude(sk, 0, to: face(other, "bottom"), offset: 1)

Wyciągnięcie ze szkicu założonego na ścianie bryły domyślnie dokłada albo odbiera materiał, zależnie od znaku odległości.

loft

Rozpina bryłę między profilami z różnych płaszczyzn, w podanej kolejności.

parametr typ opis
profiles (wymagany) lista Lista profili, co najmniej dwa.
closed prawda/fałsz Zamknij w pętlę: ostatni profil łączy się z pierwszym. Domyślnie false.
ruled prawda/fałsz Prawda łączy profile odcinkami prostymi zamiast gładko. Domyślnie false.
solid prawda/fałsz Fałsz daje powierzchnię. Domyślnie true.
twist liczba Skręt: przekroje między profilami obracają się wokół własnego środka, łącznie o tyle stopni od pierwszego do ostatniego profilu. Nie łączy się z closed. Domyślnie 0.
op tekst Co zrobić z bryłami docelowymi: "new" tworzy osobną bryłę, "join" dokłada materiał, "cut" go odbiera, "intersect" zostawia część wspólną. Wartości: "new", "join", "cut", "intersect", "auto". Domyślnie new.
target bryła lub lista brył Bryła albo bryły, na których wykonuje się operacja logiczna. Wymagane dla "join", "cut" i "intersect".

Zwraca: bryła albo lista brył.

b = loft([dol, srodek, gora])
b = loft([dol, gora], twist: 90)

pipe

Rura o przekroju kołowym wzdłuż ścieżki ze szkicu.

parametr typ opis
path (wymagany) szkic Szkic ze ścieżką.
diameter liczba Średnica rury.
radius liczba Promień, zamiast średnicy.

Zwraca: bryła.

b = pipe(sciezka, diameter: 12)

project_to_surface

Kładzie krzywe szkicu na ścianach bryły, także zakrzywionych. Wynikiem jest bryła z samych krzywych, na przykład linia podziału ściany.

parametr typ opis
faces (wymagany) dowolny Ściany jednej bryły albo bryła razem z punktami "at".
curves (wymagany) profil Szkic, jego obszary (obrysy, także liter napisu) albo wybrane krzywe. Szkic bez obszarów daje swoje otwarte krzywe.
mode tekst "vector" rzutuje wzdłuż normalnej szkicu, "closest" do najbliższego punktu ściany. Wartości: "vector", "closest". Domyślnie vector.
at dowolny Punkt albo lista punktów leżących na ścianach, gdy zamiast ścian podana jest bryła.

Zwraca: bryła krzywych.

k = project_to_surface(face(walec, kind: "cylinder"), napis)
split_face(face(walec, kind: "cylinder"), k)

Krzywe nie dokładają materiału. Służą jako narzędzie podziału ściany albo odniesienie; materiał na ścianie daje emboss.

revolve

Obraca profil wokół osi.

parametr typ opis
profile (wymagany) profil Szkic albo jego obszary.
axis (wymagany) oś Oś obrotu: oś, krawędź albo kierunek.
angle liczba Kąt obrotu w stopniach; 360 daje pełną bryłę obrotową. Domyślnie 360.
start_angle liczba Obrót profilu przed rozpoczęciem, w stopniach. Domyślnie 0.
pitch liczba Skok: podany robi gwint z profilu, czyli obrót śrubowy, w którym profil przesuwa się wzdłuż osi o tyle na każdy obrót. Kąt jest wtedy pomijany.
length liczba Długość gwintu z profilu wzdłuż osi; ujemna idzie w przeciwną stronę. Wymagana razem z pitch.
left_hand prawda/fałsz Gwint z profilu lewoskrętny. Domyślnie false.
trim prawda/fałsz Gwint z profilu z op: "join": ząb przycięty równo z czołami bryły docelowej; fałsz zostawia go wystającego poza nią. Domyślnie true.
solid prawda/fałsz Fałsz daje powierzchnię obrotową z krzywych szkicu; profil może być wtedy otwarty. Domyślnie true.
op tekst Co zrobić z bryłami docelowymi: "new" tworzy osobną bryłę, "join" dokłada materiał, "cut" go odbiera, "intersect" zostawia część wspólną. Wartości: "new", "join", "cut", "intersect", "auto". Domyślnie new.
target bryła lub lista brył Bryła albo bryły, na których wykonuje się operacja logiczna. Wymagane dla "join", "cut" i "intersect".

Zwraca: bryła albo lista brył.

b = revolve(sk, axis([0,0,0], up), 360)
gwint = revolve(trapez, axis([0,0,0], up), pitch: 4, length: 30, op: "join", target: pret)
czasza = revolve(luk, axis([0,0,0], up), 360, solid: false)

rib

Żebro z otwartego profilu: rośnie do bryły i kończy się tam, gdzie do niej dolega.

parametr typ opis
body (wymagany) bryła Bryła, do której dokleja się żebro.
profile (wymagany) szkic Szkic z otwartym profilem żebra.
thickness (wymagany) liczba Grubość żebra.
direction [x, y, z] Kierunek, w którym profil rośnie. Bez tego liczony z geometrii.

Zwraca: bryła.

sweep

Przeciąga profil wzdłuż ścieżki z innego szkicu.

parametr typ opis
profile (wymagany) profil Szkic profilu albo jego obszar.
path (wymagany) szkic Szkic ze ścieżką.
solid prawda/fałsz Fałsz daje powierzchnię z otwartego profilu. Domyślnie true.
frenet prawda/fałsz Profil obraca się razem ze skrętem ścieżki (tryb Frenet); potrzebne na helisie, inaczej profil wychodzi z płaszczyzny osi. Domyślnie false.
rail szkic Szkic z prowadnicą: jej odległość od ścieżki skaluje profil, a kierunek do niej obraca go wokół ścieżki.
scale tekst Jak prowadnica zmienia profil: "scale" skaluje jednolicie, "stretch" rozciąga tylko w jej stronę, "none" tylko obraca. Wartości: "scale", "stretch", "none". Domyślnie scale.
twist liczba Obrót profilu wokół ścieżki na całej jej długości, w stopniach. Domyślnie 0.
spin liczba Obrót profilu wokół jego własnego środka na całej długości ścieżki, w stopniach. Domyślnie 0.
orientation tekst "perpendicular" trzyma profil prostopadle do ścieżki, "parallel" przesuwa go bez obracania. Wartości: "perpendicular", "parallel". Domyślnie perpendicular.

Zwraca: bryła albo lista brył.

b = sweep(profil, sciezka)
filar = sweep(kwadrat, os, rail: sylwetka, twist: 120, spin: 180)

web

Ścianka z otwartego profilu: w odróżnieniu od żebra wchodzi w bryłę na całej długości.

parametr typ opis
body (wymagany) bryła Bryła.
profile (wymagany) szkic Szkic z profilem ścianki.
thickness (wymagany) liczba Grubość ścianki.
direction [x, y, z] Kierunek, w którym profil rośnie.

Zwraca: bryła.

Modyfikacje

chamfer

Ścina wskazane krawędzie.

parametr typ opis
edges (wymagany) krawędzie Krawędzie do ścięcia.
distance (wymagany) liczba Odległość ścięcia.
distance2 liczba Druga odległość; podana daje ścięcie niesymetryczne.

Zwraca: bryła.

b = chamfer(edges(b, kind: "circle", diameter: 8), 0.5)

copy

Kopia bryły w tym samym miejscu. Oryginał zostaje.

parametr typ opis
body (wymagany) bryła Bryła do skopiowania.

Zwraca: bryła.

druga = move(copy(b), [40, 0, 0])

draft

Pochyla wskazane ściany względem kierunku wyciągania. Do form odlewniczych i wtryskowych.

parametr typ opis
faces (wymagany) ściany Ściany do pochylenia.
angle (wymagany) liczba Kąt pochylenia w stopniach; ujemny odwraca zbieżność.
neutral (wymagany) płaszczyzna Płaszczyzna neutralna: przekrój, którego wymiar się nie zmienia.
pull [x, y, z] Kierunek wyciągania. Bez tego brany z normalnej płaszczyzny neutralnej.

Zwraca: bryła.

b = draft(faces(b, kind: "plane", normal: x_axis), 3, neutral: face(b, "bottom"))

fillet

Zaokrągla wskazane krawędzie.

parametr typ opis
edges (wymagany) krawędzie Krawędzie do zaokrąglenia.
radius (wymagany) liczba Promień zaokrąglenia.
radius2 liczba Drugi promień: przy trybie "variable" promień na końcu krawędzi, przy "elliptic" zasięg na drugiej ścianie.
mode tekst Znaczenie drugiego promienia. Wartości: "variable", "elliptic". Domyślnie variable.

Zwraca: bryła.

b = fillet(edges(b, dir: up), 3)
fillet(edges(b, kind: "circle"), radius: 1)

Zaokrąglenie zastępuje bryłę źródłową, tak jak przy pracy myszą. Gdy promień jest za duży dla geometrii, operacja nie powstaje i skrypt zgłasza błąd.

hole

Wierci otwór w ścianie bryły: prosty, z pogłębieniem walcowym albo stożkowym, z opcjonalnym gwintem.

parametr typ opis
face (wymagany) ściany Ściana, w której zaczyna się otwór.
at (wymagany) dowolny Środek otworu: punkt [x, y] w układzie tej ściany albo punkt [x, y, z] w przestrzeni.
diameter liczba Średnica otworu.
depth liczba Głębokość; bez niej otwór idzie na wylot.
type tekst Rodzaj otworu. Wartości: "simple", "counterbore", "countersink". Domyślnie simple.
drill_point prawda/fałsz Stożek wiertła na dnie otworu nieprzelotowego. Domyślnie false.
cb_diameter liczba Średnica pogłębienia walcowego.
cb_depth liczba Głębokość pogłębienia walcowego.
cs_diameter liczba Średnica wejścia pogłębienia stożkowego.
cs_angle liczba Kąt stożka w stopniach. Domyślnie 90.
thread tekst Oznaczenie gwintu, na przykład "M6". Średnica otworu bierze się wtedy z normy.
thread_length liczba Długość gwintu od wejścia; bez tego gwint na całej głębokości.

Zwraca: bryła.

b = hole(face(b, "top"), at: [10, 10], diameter: 6, depth: 12)
b = hole(face(b, "top"), at: [0, 0], thread: "M8")
b = hole(face(b, "top"), at: [20, 0], diameter: 5, type: "countersink", cs_diameter: 10)

move

Przesuwa i obraca bryłę.

parametr typ opis
body (wymagany) bryła Bryła.
by [x, y, z] Przesunięcie [x, y, z]. Domyślnie [0, 0, 0].
rotate liczba Kąt obrotu w stopniach.
axis oś Oś obrotu.
around [x, y, z] Punkt, wokół którego następuje obrót. Bez tego środek osi.

Zwraca: bryła.

move(b, [0, 0, 25])
move(b, rotate: 45, axis: up)

offset_body

Odsuwa wszystkie ściany bryły naraz, razem z zaokrągleniami i otworami. Ujemna odległość zmniejsza bryłę i powiększa otwory: kompensacja rozlewania się druku 3D.

parametr typ opis
body (wymagany) bryła Bryła do odsunięcia.
distance (wymagany) liczba Odsunięcie; dodatnie powiększa bryłę, ujemne ją zmniejsza.
corners tekst Narożniki, w których odsunięte ściany się rozchodzą: "sharp" przedłuża ściany do przecięcia, "round" zaokrągla je promieniem równym odsunięciu. Wartości: "sharp", "round". Domyślnie sharp.

Zwraca: bryła.

b = offset_body(b, -0.1)
b = offset_body(b, 0.5, corners: "round")

scale

Skaluje bryłę; osobne współczynniki dla osi dają skalowanie nierównomierne.

parametr typ opis
body (wymagany) bryła Bryła.
factor (wymagany) dowolny Współczynnik: jedna liczba albo [sx, sy, sz].
center [x, y, z] Punkt nieruchomy. Domyślnie [0, 0, 0].

Zwraca: bryła.

scale(b, 2)
scale(b, [2, 1, 1])

shell

Wydrąża bryłę, zostawiając ściankę o zadanej grubości. Wskazane ściany są usuwane i tworzą otwarcia; bez nich skorupa jest zamknięta, z pustką w środku.

parametr typ opis
body (wymagany) bryła Bryła do wydrążenia.
thickness (wymagany) liczba Grubość ścianki.
openings ściany Ściany do usunięcia. Bez nich skorupa zostaje zamknięta.
corners tekst Narożniki wewnętrzne: "round" zaokrągla je promieniem równym grubości, "sharp" przedłuża ściany do przecięcia. Wartości: "round", "sharp". Domyślnie round.

Zwraca: bryła.

b = shell(b, 2, openings: faces(b, side: "top"))
b = shell(b, 2)

thicken

Nadaje grubość powierzchni albo wskazanym ścianom, zamieniając je w bryłę.

parametr typ opis
target (wymagany) dowolny Bryła powierzchniowa albo zbiór ścian.
thickness (wymagany) liczba Grubość.
thickness2 liczba Grubość po przeciwnej stronie.
flip prawda/fałsz Odwraca stronę pogrubienia. Domyślnie false.

Zwraca: bryła.

b = thicken(powierzchnia, 2)

thread

Nacina gwint na ścianie walcowej: na wałku od zewnątrz, w otworze od wewnątrz.

parametr typ opis
face (wymagany) ściany Ściana walcowa.
standard (wymagany) tekst Oznaczenie z biblioteki gwintów, na przykład "M10x1.5".
length liczba Długość gwintu; bez tego na całej ścianie.
offset liczba Odsunięcie początku gwintu wzdłuż osi. Domyślnie 0.
modeled prawda/fałsz Prawda tnie prawdziwy zarys, fałsz rysuje gwint tylko na podglądzie. Domyślnie true.
fit prawda/fałsz Prawda bierze z normy tylko zarys (krok, kąt, głębokość) i kładzie go na średnicy walca. Fałsz dopasowuje walec do średnicy normy. Domyślnie false.
chamfer tekst Faza 45° na końcu gwintu: "start", "end" albo "both". Początek to koniec ściany o mniejszej współrzędnej wzdłuż osi.
chamfer_size liczba Wielkość fazy; bez tego równa głębokości gwintu (krawędź schodzi do średnicy rdzenia).

Zwraca: bryła.

b = thread(face(b, kind: "cylinder", diameter: 10), "M10")
b = thread(face(b, kind: "cylinder", diameter: 75), "M75x2", fit: true)
b = thread(face(b, kind: "cylinder", diameter: 10), "M10", chamfer: "end")

Operacje logiczne

cut

Odejmuje bryły narzędzia od bryły docelowej.

parametr typ opis
target (wymagany) bryła Bryła, z której odbiera się materiał.
tools (wymagany) bryła lub lista brył Bryła albo bryły odejmowane.
keep prawda/fałsz Zostaw narzędzia po operacji. Domyślnie false.

Zwraca: bryła albo lista brył.

b = cut(korpus, wiertlo)

intersect

Zostawia część wspólną brył.

parametr typ opis
target (wymagany) bryła Pierwsza bryła.
tools (wymagany) bryła lub lista brył Druga bryła albo ich lista.
keep prawda/fałsz Zostaw bryły źródłowe. Domyślnie false.

Zwraca: bryła albo lista brył.

mirror

Odbija bryły względem płaszczyzny. Oryginały zostają.

parametr typ opis
bodies (wymagany) bryła lub lista brył Bryła albo lista brył.
plane (wymagany) płaszczyzna Płaszczyzna odbicia.
features lista Zamiast całej bryły odbij te operacje historii, na przykład wycięcie; wynik trafia na podaną bryłę.

Zwraca: bryła albo lista brył.

mirror(b, plane.yz)
mirror(b, plane.yz, features: [wyciecie])

split_body

Dzieli bryłę płaszczyzną albo narzędziem (powierzchnią, też zagiętą, lub inną bryłą) na osobne bryły.

parametr typ opis
body (wymagany) bryła Bryła do podziału.
plane płaszczyzna Płaszczyzna cięcia; pomiń, gdy podajesz narzędzie.
tool bryła Zamiast płaszczyzny: powierzchnia albo bryła, która tnie całym swoim kształtem i zostaje nietknięta. Powierzchnia musi przechodzić przez bryłę na wylot.

Zwraca: lista brył.

czesci = split_body(b, plane.xy)
czesci = split_body(b, tool: zagieta)

union

Łączy bryły w jedną.

parametr typ opis
target (wymagany) bryła Bryła, która przejmuje nazwę i kolor wyniku.
tools (wymagany) bryła lub lista brył Bryła albo bryły dołączane do niej.
keep prawda/fałsz Zostaw bryły źródłowe obok wyniku. Domyślnie false.

Zwraca: bryła albo lista brył.

b = union(podstawa, wspornik)

Wzory

pattern_circular

Powiela bryłę wokół osi.

parametr typ opis
body (wymagany) bryła Bryła do powielenia.
axis (wymagany) oś Oś wzoru.
count (wymagany) liczba Liczba egzemplarzy łącznie z oryginałem.
angle liczba Rozpiętość kątowa w stopniach. Domyślnie 360.
features lista Zamiast całej bryły powiel te operacje historii.

Zwraca: bryła albo lista brył.

pattern_circular(b, axis([0,0,0], up), count: 6)

pattern_linear

Powiela bryłę wzdłuż kierunku.

parametr typ opis
body (wymagany) bryła Bryła do powielenia.
direction (wymagany) oś Kierunek wzoru.
count (wymagany) liczba Liczba egzemplarzy łącznie z oryginałem.
distance (wymagany) liczba Rozstaw albo rozpiętość, zależnie od "spacing".
spacing prawda/fałsz Prawda traktuje odległość jako rozstaw sąsiednich egzemplarzy, fałsz jako rozpiętość całego wzoru. Domyślnie true.
features lista Zamiast całej bryły powiel te operacje historii, na przykład otwór.
direction2 oś Drugi kierunek: cały rząd powielony także wzdłuż niego, co daje siatkę.
count2 liczba Liczba rzędów wzdłuż drugiego kierunku. Domyślnie 2.
distance2 liczba Rozstaw albo rozpiętość wzdłuż drugiego kierunku, według tego samego "spacing".

Zwraca: bryła albo lista brył.

pattern_linear(b, x_axis, count: 5, distance: 20)
pattern_linear(b, x_axis, count: 4, distance: 15, direction2: y_axis, count2: 3, distance2: 10)

pattern_path

Powiela bryłę wzdłuż ścieżki ze szkicu.

parametr typ opis
body (wymagany) bryła Bryła do powielenia.
path (wymagany) szkic Szkic ze ścieżką.
count (wymagany) liczba Liczba egzemplarzy.
distance (wymagany) liczba Rozstaw albo rozpiętość.
spacing prawda/fałsz Prawda traktuje odległość jako rozstaw. Domyślnie true.
follow prawda/fałsz Prawda obraca kopie razem ze styczną ścieżki. Domyślnie true.

Zwraca: bryła albo lista brył.

Ściany

delete_face

Usuwa wskazane ściany, domykając bryłę sąsiednimi. Do zdejmowania zaokrągleń i faz.

parametr typ opis
faces (wymagany) ściany Ściany do usunięcia.

Zwraca: bryła.

offset_face

Odsuwa wskazane ściany o zadaną odległość, zmieniając wymiar bryły.

parametr typ opis
faces (wymagany) ściany Ściany do odsunięcia.
distance (wymagany) liczba Odsunięcie; dodatnie dokłada materiał.

Zwraca: bryła.

replace_face

Zastępuje wskazane ściany inną powierzchnią.

parametr typ opis
faces (wymagany) ściany Ściany do zastąpienia.
tool (wymagany) bryła Powierzchnia wchodząca na ich miejsce; musi przecinać bryłę na wylot.

Zwraca: bryła.

split_face

Dzieli ściany innym kształtem, bez zmiany objętości.

parametr typ opis
faces (wymagany) ściany Ściany do podziału.
tool (wymagany) bryła Bryła, powierzchnia albo krzywe z project_to_surface; narzędzie zostaje nietknięte.

Zwraca: bryła.

Powierzchnie

boundary_fill

Rozpina powierzchnię na wskazanych krawędziach brył.

parametr typ opis
edges (wymagany) krawędzie Krawędzie brzegowe, co najmniej dwie.

Zwraca: bryła powierzchniowa.

extend_surface

Przedłuża powierzchnię przy wskazanych krawędziach.

parametr typ opis
edges (wymagany) krawędzie Krawędzie do przedłużenia.
length (wymagany) liczba Długość przedłużenia.
natural prawda/fałsz Prawda przedłuża zgodnie z krzywizną, fałsz liniowo wzdłuż stycznej. Domyślnie true.

Zwraca: bryła powierzchniowa.

offset_surface

Tworzy powierzchnię odsuniętą od wskazanej. Źródło zostaje.

parametr typ opis
surface (wymagany) bryła Powierzchnia źródłowa.
distance (wymagany) liczba Odległość; znak decyduje o stronie.
mode tekst "simple" odsuwa każdą ścianę osobno i jest odporniejszy, "join" domyka sąsiadów. Wartości: "simple", "join". Domyślnie simple.
join_type tekst Sposób domykania w trybie "join". Wartości: "arc", "intersection". Domyślnie arc.

Zwraca: bryła powierzchniowa.

patch

Wypełnia zamknięty kontur szkicu powierzchnią.

parametr typ opis
boundary (wymagany) szkic Szkic z zamkniętym konturem.

Zwraca: bryła powierzchniowa.

stitch

Zszywa powierzchnie w powłokę, a przy szczelnym wyniku w bryłę.

parametr typ opis
surfaces (wymagany) bryła lub lista brył Powierzchnie do zszycia, co najmniej dwie.
tolerance liczba Tolerancja zszycia; zero bierze domyślną. Domyślnie 0.
solid prawda/fałsz Domknij do bryły, gdy powłoka wyszła szczelna. Domyślnie true.

Zwraca: bryła.

trim_surface

Przycina powierzchnię innym kształtem, zostawiając kawałek wskazany punktem.

parametr typ opis
surface (wymagany) bryła Przycinana powierzchnia.
tool (wymagany) bryła Narzędzie tnące; zostaje nietknięte.
keep (wymagany) [x, y, z] Punkt wewnątrz kawałka, który ma zostać.
invert prawda/fałsz Zachowaj wszystko poza wskazanym kawałkiem. Domyślnie false.

Zwraca: bryła powierzchniowa.

unstitch

Rozkłada kształt na osobne ściany.

parametr typ opis
target (wymagany) dowolny Bryła albo wybrane ściany.

Zwraca: lista brył powierzchniowych.

Geometria konstrukcyjna

construction_axis

Oś konstrukcyjna w drzewie, widoczna w scenie.

parametr typ opis
origin (wymagany) [x, y, z] Punkt na osi.
direction (wymagany) [x, y, z] Kierunek osi.
name tekst Nazwa w drzewie. Domyślnie Oś.

Zwraca: oś konstrukcyjna.

construction_point

Punkt konstrukcyjny w drzewie.

parametr typ opis
position (wymagany) [x, y, z] Położenie punktu.
name tekst Nazwa w drzewie. Domyślnie Punkt.

Zwraca: punkt konstrukcyjny.

offset_plane

Płaszczyzna konstrukcyjna odsunięta równolegle od podanej. Trafia do drzewa i można na niej szkicować.

parametr typ opis
base (wymagany) płaszczyzna Płaszczyzna bazowa albo ściana.
distance (wymagany) liczba Odsunięcie wzdłuż normalnej, w milimetrach.

Zwraca: płaszczyzna konstrukcyjna.

p = offset_plane(plane.xy, 25)
sk = sketch(p)

plane_along_path

Płaszczyzna konstrukcyjna prostopadła do krzywej szkicu we wskazanym miejscu jej długości.

parametr typ opis
path (wymagany) encja szkicu Krzywa szkicu.
at liczba Położenie wzdłuż krzywej: 0 to początek, 1 to koniec. Domyślnie 0.

Zwraca: płaszczyzna konstrukcyjna.

przekroj = plane_along_path(sciezka, 0.5)

Przydaje się przed przeciągnięciem: profil rysuje się na płaszczyźnie prostopadłej do ścieżki.

plane_at_angle

Płaszczyzna konstrukcyjna zawierająca linię szkicu, obrócona wokół niej o zadany kąt.

parametr typ opis
line (wymagany) encja szkicu Linia szkicu, wokół której obraca się płaszczyzna.
angle (wymagany) liczba Kąt w stopniach, liczony od płaszczyzny szkicu.

Zwraca: płaszczyzna konstrukcyjna.

skos = plane_at_angle(krawedz, 30)

Pomiary

measure

Właściwości bryły: objętość, pole, środek masy, zasięg.

parametr typ opis
body (wymagany) bryła Bryła.

Zwraca: rekord z polami volume, area, center, min, max, size.

m = measure(b)
print("objętość " + round(m.volume / 1000, 2) + " cm3")

Dokument

color

Ustawia kolor bryły.

parametr typ opis
body (wymagany) bryła Bryła.
value (wymagany) tekst Kolor w zapisie szesnastkowym, na przykład "#c0392b".

Zwraca: ta sama bryła.

color(b, "#3498db")

hide

Ukrywa bryłę, szkic albo płaszczyznę.

parametr typ opis
target (wymagany) dowolny Bryła, szkic albo płaszczyzna.

Zwraca: nic.

material

Przypisuje bryle materiał z biblioteki wyglądów. Materiał z gęstością pozwala policzyć masę.

parametr typ opis
body (wymagany) bryła Bryła.
value (wymagany) tekst Nazwa materiału, na przykład "Aluminium".

Zwraca: ta sama bryła.

name

Nadaje nazwę bryle albo szkicowi. Ta sama nazwa pozwala odnaleźć obiekt później przez body("...").

parametr typ opis
target (wymagany) dowolny Bryła albo szkic.
label (wymagany) tekst Nowa nazwa.

Zwraca: ten sam obiekt.

name(b, "Korpus")

remove

Usuwa bryłę, szkic albo operację z historii.

parametr typ opis
target (wymagany) dowolny Obiekt do usunięcia.

Zwraca: nic.

Usunięcie operacji usuwa też wszystko, co z niej wynika.

show

Pokazuje ukrytą bryłę, szkic albo płaszczyznę.

parametr typ opis
target (wymagany) dowolny Bryła, szkic albo płaszczyzna.

Zwraca: nic.

Wymiana

export_file

Zapisuje bryły do pliku w podanym formacie.

parametr typ opis
bodies (wymagany) bryła lub lista brył Bryła albo lista brył.
file (wymagany) tekst Nazwa pliku wraz z rozszerzeniem.
format tekst Format zapisu. Bez tego brany z rozszerzenia nazwy pliku. Wartości: "step", "iges", "brep", "stl", "obj", "ply", "3mf", "glb", "dxf".

Zwraca: nic.

export_file(b, "korpus.step")

import_file

Wczytuje plik CAD i wstawia jego zawartość jako bryły.

parametr typ opis
file (wymagany) tekst Nazwa pliku do wczytania.

Zwraca: bryła albo lista brył.

Plik musi być dostępny dla aplikacji: w przeglądarce z katalogu wskazanego w ustawieniach biblioteki modeli.

Widok

fit

Dopasowuje widok tak, żeby cały model był widoczny.

Zwraca: nic.

section

Włącza analizę przekroju: model jest pokazywany przecięty wskazaną płaszczyzną. Nie zmienia geometrii.

parametr typ opis
plane (wymagany) płaszczyzna Płaszczyzna cięcia.
flip prawda/fałsz Pokaż drugą stronę. Domyślnie false.

Zwraca: nic.

section(plane.yz)

section_off

Wyłącza analizę przekroju.

Zwraca: nic.

view

Ustawia kamerę na widok standardowy.

parametr typ opis
name tekst Nazwa widoku (ściana, narożnik albo izometria). Wartości: "home", "top", "bottom", "front", "back", "left", "right", "iso", "top-front-left", "top-front-right", "top-back-left", "top-back-right", "bottom-front-left", "bottom-front-right", "bottom-back-left", "bottom-back-right". Domyślnie home.

Zwraca: nic.

Matematyka

abs

Wartość bezwzględna.

parametr typ opis
x (wymagany) liczba Liczba.

Zwraca: liczba.

acos

Arcus cosinus, wynik w stopniach.

parametr typ opis
x (wymagany) liczba Liczba.

Zwraca: liczba.

asin

Arcus sinus, wynik w stopniach.

parametr typ opis
x (wymagany) liczba Liczba.

Zwraca: liczba.

atan

Arcus tangens, wynik w stopniach.

parametr typ opis
x (wymagany) liczba Liczba.

Zwraca: liczba.

atan2

Kąt w stopniach wektora (x, y) względem osi X.

parametr typ opis
y (wymagany) liczba Składowa Y.
x (wymagany) liczba Składowa X.

Zwraca: liczba: kąt w stopniach.

ceil

Zaokrąglenie w górę.

parametr typ opis
x (wymagany) liczba Liczba.

Zwraca: liczba.

clamp

Wartość przycięta do przedziału.

parametr typ opis
x (wymagany) liczba Wartość.
low (wymagany) liczba Dolna granica.
high (wymagany) liczba Górna granica.

Zwraca: liczba.

cos

Cosinus kąta podanego w stopniach.

parametr typ opis
x (wymagany) liczba Kąt w stopniach.

Zwraca: liczba.

cross

Iloczyn wektorowy: wektor prostopadły do obu podanych.

parametr typ opis
a (wymagany) [x, y, z] Pierwszy wektor.
b (wymagany) [x, y, z] Drugi wektor.

Zwraca: wektor.

deg

Zamienia radiany na stopnie.

parametr typ opis
x (wymagany) liczba Kąt w radianach.

Zwraca: liczba: kąt w stopniach.

dot

Iloczyn skalarny dwóch wektorów.

parametr typ opis
a (wymagany) [x, y, z] Pierwszy wektor.
b (wymagany) [x, y, z] Drugi wektor.

Zwraca: liczba.

floor

Zaokrąglenie w dół.

parametr typ opis
x (wymagany) liczba Liczba.

Zwraca: liczba.

length_of

Długość wektora.

parametr typ opis
v (wymagany) [x, y, z] Wektor.

Zwraca: liczba.

max

Większa z dwóch liczb.

parametr typ opis
a (wymagany) liczba Pierwsza liczba.
b (wymagany) liczba Druga liczba.

Zwraca: liczba.

min

Mniejsza z dwóch liczb.

parametr typ opis
a (wymagany) liczba Pierwsza liczba.
b (wymagany) liczba Druga liczba.

Zwraca: liczba.

normalized

Wektor o długości jeden, zgodny kierunkiem z podanym.

parametr typ opis
v (wymagany) [x, y, z] Wektor.

Zwraca: wektor.

pow

Potęga. To samo co operator ^.

parametr typ opis
x (wymagany) liczba Podstawa.
y (wymagany) liczba Wykładnik.

Zwraca: liczba.

rad

Zamienia stopnie na radiany. Rzadko potrzebne, bo cały język liczy w stopniach.

parametr typ opis
x (wymagany) liczba Kąt w stopniach.

Zwraca: liczba: kąt w radianach.

round

Zaokrąglenie do zadanej liczby miejsc po przecinku.

parametr typ opis
x (wymagany) liczba Liczba.
digits liczba Liczba miejsc po przecinku. Domyślnie 0.

Zwraca: liczba.

sin

Sinus kąta podanego w stopniach.

parametr typ opis
x (wymagany) liczba Kąt w stopniach.

Zwraca: liczba.

sqrt

Pierwiastek kwadratowy.

parametr typ opis
x (wymagany) liczba Liczba.

Zwraca: liczba.

tan

Tangens kąta podanego w stopniach.

parametr typ opis
x (wymagany) liczba Kąt w stopniach.

Zwraca: liczba.

vec

Wektor albo punkt w przestrzeni. To samo co zapis [x, y, z], wygodne przy liczeniu.

parametr typ opis
x (wymagany) liczba Składowa X.
y (wymagany) liczba Składowa Y.
z liczba Składowa Z. Domyślnie 0.

Zwraca: wektor [x, y, z].

Listy

count

Liczba elementów listy albo zbioru krawędzi lub ścian.

parametr typ opis
value (wymagany) dowolny Lista albo zbiór.

Zwraca: liczba.

item

Element listy po numerze, licząc od zera. Numer ujemny liczy od końca.

parametr typ opis
list (wymagany) dowolny Lista albo zbiór.
index (wymagany) liczba Numer elementu.

Zwraca: element.

range

Lista liczb od początku do końca, bez wartości końcowej. Do pętli.

parametr typ opis
start (wymagany) liczba Wartość początkowa.
end liczba Wartość końcowa, nie należy do listy.
step liczba Krok. Domyślnie 1.

Zwraca: lista liczb.

for i in range(0, 5) { print(i) }
range(0, 100, 25)

Diagnostyka

assert

Przerywa skrypt, gdy warunek nie jest spełniony. Do sprawdzania założeń, na przykład czy selektor trafił w tyle krawędzi, ile powinien.

parametr typ opis
condition (wymagany) dowolny Warunek.
message tekst Komunikat błędu. Domyślnie Warunek nie jest spełniony.

Zwraca: nic.

assert(edges(b, kind: "circle").count == 4, "spodziewam się czterech otworów")

print

Wypisuje wartość w konsoli skryptu.

parametr typ opis
value (wymagany) dowolny Co wypisać.

Zwraca: nic.

print("wysokość: " + h)