
Полная версия
PythonScad в задачах и примерах
Как задать диаметр у 2D-круга?
1) circle(d=20)
2) circle(radius=20)
3) circle(r=20)
4) circle(diameter=20)
5) circle(20)
Задача 14:Вычитание
Какой оператор позволяет вычитать одну фигуру из другой?
1) difference()
2) union()
3) intersect()
4) add()
5) subtract()
Задача 15:Пересечение
Какой оператор создаёт пересечение двух фигур?
1) intersection()
2) merge()
3) blend()
4) unite()
5) overlap()
Задача 16:Объединение
Какой оператор объединяет несколько объектов?
1) union()
2) merge()
3) sum()
4) group()
5) combine()
Задача 1:Создание примитивов
Какой оператор используется для создания сферы?
1) sp = sphere(r)
2) r = round()
3) x = cube()
4) l = coil()
Задача 2:Сфера
Какой параметр отвечает за радиус сферы?
1) r
2) x
3) v
4) w
Задача 3:Создание примитивов
Какая команда создаёт куб?
1) cu = cube()
2) sp = sphere()
3) cy = cylinder()
4) tr = trasnparent()
Задача 4:Куб
Как задать размеры куба 10x20x30?
1) cu = cube([10, 20, 30])
2) cu = cube(10, 20, 30)
3) sp = sphere([10, 20, 30])
4) cy = cylinder(10, 20, 30)
Задача 5:Создание примитивов
Как создать цилиндр высотой 50 и радиусом 10?
1) cy = cylinder(50, 10)
2) cy = cube(50, 10)
3) cy = sphere(50, 10)
4) r = round(5)
Задача 6:Цилиндр
Какой параметр позволяет сделать цилиндр усечённым (разные радиусы сверху и снизу)?
1) r1, r2
2) v1, v2
3) h
4) g
Задача 7:Цилиндр
Какая команда создаёт конус?
1) cy =cylinder(10, 5 ,0)
2) cy =cylinder(10, 0 ,5)
3) cy =cylinder(10, 5)
4) cy =cylinder(10, 5 ,5)
Задача 8:Операторы
Можно ли использовать несколько операторов в одном коде?
1) Да
2) Нет
Задача 9:Операторы
Какой код совмещает два оператора?
1) diff = fusion.difference(.....)
2) fusion = union([diff, x])
3) diff = x.difference(.....)
4) c = coil()
Задача 10:Операторы
Какой код соединяет куб и сферу?
1) fusion = union([cu, sp])
2) diff = sp.difference()cu
3) inter = sp.intersection(cu)
4) c = cu.coil(sp)
Задача 11:Операторы
Какой код соединяет цилиндр и сферу?
1) fusion = union([cy, sp])
2) inter = cy.intersection(cu, sp)
3) diff = cy.difference(cu)
4) c = cu.coil(sp)
Задача 12:Операторы
Какой код вырезает цилиндр и куб?
1) diff = cy.difference(cu)
2) c = coil()
3) fusion = union([cy, sp])
4) inter = cy.intersection(cu, sp)
Задача 13:Операторы
Какой код пересекает цилиндр, куб и сферу?
1) inter = cy.intersection(cu, sp)
2) fusion = union([cy, sp])
3) c = coil()
4) diff = cy.difference(cu)
Задача 14:Вычитание
Какой оператор позволяет вычитать одну фигуру из другой?
1) diff = .difference()
2) fusion = union([])
3) inter = .intersection()
4) c = coil()
Задача 15:Пересечение
Какой оператор создаёт пересечение двух фигур?
1) inter = intersection()
2) c = coil()
3) diff = difference()
4) fusion = union()
Задача 16:Объединение
Какой оператор объединяет несколько объектов?
1) fusion = union()
2) c = coil()
3) diff = difference()
4) inter = intersection()
Модуль 4: Трансформации объектов
Повороты
(rotate)
в
PythonSCAD(OpenSCAD)
Оператор rotate() используется для поворота объектов вокруг одной или нескольких осей (X, Y, Z). Он позволяет изменять ориентацию объектов в 3D-пространстве.
Синтаксис
rotate([угол_X, угол_Y, угол_Z]) объект;
угол_X – поворот вокруг оси X (горизонтальная ось).
угол_Y – поворот вокруг оси Y (вертикальная ось, направлена вглубь экрана).
угол_Z – поворот вокруг оси Z (перпендикулярна экрану).
Угол задается в градусах (°) и может быть положительным (по часовой стрелке) или отрицательным (против часовой стрелки).
Также можно использовать альтернативный синтаксис с одной осью:
rotate(угол, [x, y, z]) объект;
Здесь [x, y, z] – вектор направления оси вращения (1 – ось активна, 0 – нет).
Примеры использования
Листинг 1:Поворот вокруг оси Z
rotate([0, 0, 45]) cube([10, 20, 5]);

Рис. 1. Поворот вокруг оси Z
Куб повернется на 45° вокруг оси Z.
Листинг 2:Поворот вокруг нескольких осей
rotate([30, 45, 0]) cylinder(h=20, r=5);

Рис. 2. Поворот вокруг нескольких осей
Цилиндр наклонится на 30° по X и на 45° по Y.
Листинг 3:Поворот вокруг произвольной оси
rotate(60, [1, 1, 0]) cube([10, 10, 10]);

Рис. 3. Поворот вокруг произвольной оси
Куб повернется на 60° вокруг диагонали XY.
Листинг 4:Комбинация с translate()
Поворот выполняется относительно начала координат, поэтому перед вращением можно переместить объект:
translate([10, 0, 0])
rotate([0, 0, 45]) cube([10, 10, 10]);

Рис. 4. Комбинация с translate()
Куб сначала сдвинется, а потом повернется.
Если порядок команд поменять (rotate() → translate()), то объект сначала повернется в исходной точке, а потом сместится.
Листинг 5: Вращение в цикле (for)
for (i = [0:30:360]) {
rotate([0, 0, i]) translate([20, 0, 0]) sphere(2);
}

Рис. 5. Вращение в цикле (for)
Создает кольцо сфер, расположенных каждые 30° вокруг центра.
Заключение
rotate([x, y, z]) поворачивает объект вокруг одной или нескольких осей. Важно учитывать порядок операций, особенно при использовании translate(). Можно использовать for, чтобы создавать повторяющиеся структуры.
Повороты
(rotate)
в
PythonSCAD(Python)
Оператор rotate() используется для поворота объектов вокруг одной или нескольких осей (X, Y, Z). Он позволяет изменять ориентацию объектов в 3D-пространстве.
Синтаксис
rotated=объект.rotate([угол_X, угол_Y, угол_Z])
угол_X – поворот вокруг оси X (горизонтальная ось).
угол_Y – поворот вокруг оси Y (вертикальная ось, направлена вглубь экрана).
угол_Z – поворот вокруг оси Z (перпендикулярна экрану).
Угол задается в градусах (°) и может быть положительным (по часовой стрелке) или отрицательным (против часовой стрелки).
Здесь [x, y, z] – вектор направления оси вращения (1 – ось активна, 0 – нет).
Примеры использования
Листинг 1:Поворот вокруг оси Z
from openscad import *
cu = cube([10, 20, 5])
rotated = cu.rotate([0, 0, 45])
show(rotated)

Рис. 6. Поворот вокруг оси Z
Куб повернется на 45° вокруг оси Z.
Листинг 2:Поворот вокруг нескольких осей
cy = cylinder(20, 5)
rotated = cy.rotate([30, 45, 0])
show(rotated)

Рис. 7. Поворот вокруг нескольких осей
Цилиндр наклонится на 30° по X и на 45° по Y.
Листинг 3:Поворот вокруг произвольной оси
cu = cube([10, 10, 10])
rotated = cu.rotate(60, [1, 1, 0])
show(rotated)

Рис.8. Поворот вокруг произвольной оси
Куб повернется на 60° вокруг диагонали XY.
Листинг 5:Комбинация с
translate
()
cu = cube([10, 10, 10])
cu = cu.translate([10, 0, 0])
rotated = cu.rotate([0, 0, 45])
show(rotated)

Рис. 9. Комбинация с translate()
Куб сначала сдвинется, а потом повернется.
Если порядок команд поменять (rotate() → translate()), то объект сначала повернется в исходной точке, а потом сместится.
Заключение
rotate([x, y, z]) поворачивает объект вокруг одной или нескольких осей. Важно учитывать порядок операций, особенно при использовании translate(). Можно использовать for, чтобы создавать повторяющиеся структуры.
Смещения
(translate)
в
PythonSCAD(OpenSCAD)
Оператор translate() используется для перемещения объектов в 3D-пространстве вдоль осей X, Y и Z.
Синтаксис
translate([X, Y, Z]) объект;
X – сдвиг вдоль оси X (вправо – положительные значения, влево – отрицательные).
Y – сдвиг вдоль оси Y (вперед – положительные значения, назад – отрицательные).
Z – сдвиг вдоль оси Z (вверх – положительные значения, вниз – отрицательные).
Примеры использования
Листинг 1:Простое смещение куба
translate([10, 20, 5]) cube([10, 10, 10]);

Рис. 10. Простое смещение куба
Куб размером 10×10×10 сдвигается на 10 единиц вправо, 20 вперед и 5 вверх.
Листинг 2:Смещение сферы вверх
translate([0, 0, 15]) sphere(10);

Рис. 11. Смещение сферы вверх
Сфера радиусом 10 поднимается на 15 единиц вверх.
Листинг
3:
Комбинация
translate()
и
rotate()
translate([20, 0, 0])
rotate([0, 0, 45]) cube([10, 10, 10]);

Рис. 12. Комбинация translate() и rotate()
Куб сначала сдвигается, затем поворачивается.
Если поменять порядок команд (rotate() → translate()), результат будет другим!
Листинг 4:Размещение нескольких объектов в
for
-цикле
for (i = [0:20:60]) {
translate([i, 0, 0]) sphere(5);
}

Рис. 13. Размещение нескольких объектов в for-цикле
Создает ряд сфер, сдвинутых вдоль оси X на 0, 20 и 40 единиц.
Листинг
5:
Вложенные
Translate()
translate([10, 0, 0]) {
translate([0, 20, 0]) cube([10, 10, 10]);
}

Рис. 14. Вложенные Translate()
Сначала объект смещается на 10 единиц по X,
Потом внутри блока – на 20 по Y.
Заключение
translate([X, Y, Z]) перемещает объект в 3D-пространстве. Важно учитывать порядок операций при сочетании с rotate(). Используется в циклах for для создания повторяющихся структур.
Смещения
(translate)
в
PythonSCAD(Python)
Оператор translate() используется для перемещения объектов в 3D-пространстве вдоль осей X, Y и Z.
Синтаксис
x = обьект.translate([x, y, z])
X – сдвиг вдоль оси X (вправо – положительные значения, влево – отрицательные).
Y – сдвиг вдоль оси Y (вперед – положительные значения, назад – отрицательные).
Z – сдвиг вдоль оси Z (вверх – положительные значения, вниз – отрицательные).
Примеры использования
Листинг 1:Простое смещение куба
from openscad import *
cu = cube([10, 10, 10])
tr = cu.translate([10, 20, 5])
show(tr)

Рис. 15. Простое смещение куба
Куб размером 10×10×10 сдвигается на 10 единиц вправо, 20 вперед и 5 вверх.
Листинг 2:Смещение сферы вверх
from openscad import *
sp = sphere(10)
tr = sp.translate([0, 0, 15])
show(tr)

Рис. 16. Смещение сферы вверх
Сфера радиусом 10 поднимается на 15 единиц вверх.
Листинг
3:
Комбинация
translate()
и
rotate()
cu = cube([10, 10, 10])
tr = cu.translate([20, 0, 0])
rotated = tr.rotate([0, 0, 45])
show([rotated])

Рис. 17. Комбинация translate() и rotate()
Куб сначала сдвигается, затем поворачивается.
Если поменять порядок команд (rotate() → translate()), результат будет другим!
Листинг 4:Размещение нескольких объектов в for
–
цикле
from openscad import *
sp = sphere(5)
result = sp
for i in range(1, 4):
result = result | sp.translate([15 * i, 0, 0])
show(result)

Рис. 18. Размещение нескольких объектов в for-цикле
Листинг
5:
Вложенные
translate()
cu = cube([10, 10, 10])
tr = cu.translate([10, 10, 10])
tr2 = tr.translate([10, 0, 0])
show(tr2)

Рис. 19. Вложенные translate()
Сначала объект смещается на 10 единиц по X,
Потом внутри блока – на 20 по Y.
Заключение
translate([X, Y, Z]) перемещает объект в 3D-пространстве. Важно учитывать порядок операций при сочетании с rotate(). Используется в циклах for для создания повторяющихся структур.
Масштабирование
(scale)
в
PythonSCAD(OpenSCAD)
Оператор scale() используется для изменения размеров объекта по осям X, Y и Z. Это позволяет увеличивать или уменьшать модель в нужных направлениях.
Синтаксис
scale([Sx, Sy, Sz]) объект;
Sx – масштабирование по оси X (ширина).
Sy – масштабирование по оси Y (глубина).
Sz – масштабирование по оси Z (высота).
Если Sx, Sy, Sz < 1 – объект уменьшается.
Если Sx, Sy, Sz > 1 – объект увеличивается.
Если Sx, Sy, Sz = 1 – объект остается без изменений.
Примеры использования
Листинг 1:Увеличение размера объекта в 2 раза
scale([2, 2, 2]) cube([10, 10, 10]);

Рис. 20. Увеличение размера объекта в 2 раза
Исходный куб 10×10×10 увеличится до 20×20×20.
Листинг 2:Растяжение по одной оси
scale([2, 1, 1]) cylinder(h=10, r=5);

Рис. 21. Растяжение по одной оси
Цилиндр растянется в 2 раза по X, а другие оси останутся без изменений.
Листинг 3:Уменьшение по высоте
scale([1, 1, 0.5]) sphere(10);

Рис. 22. Уменьшение по высоте
Сфера сожмется в 2 раза по высоте, превращаясь в сплюснутую форму.
Листинг 4:Симметричное отражение (отрицательный масштаб)
scale([-1, 1, 1]) cube([10, 10, 10]);

Рис. 23. Симметричное отражение (отрицательный масштаб)
Куб отразится относительно оси X (зеркальное отражение).
Если поставить -1 по другой оси, произойдет отражение по соответствующему направлению.
Листинг 5:Масштабирование в цикле
for (i = [1:0.5:2]) {
scale([i, i, i]) sphere(10);
}

Рис. 24. Масштабирование в цикле
Создаст несколько сфер разного размера, увеличивающихся от 10 до 20 единиц.
Заключение
scale([X, Y, Z]) изменяет размер объекта по каждой оси отдельно. Можно увеличивать, уменьшать и отражать объекты. Используется в сочетании с translate() и rotate() для сложных конструкций.
Масштабирование (scale) в PythonSCAD(Python)
Оператор scale() используется для изменения размеров объекта по осям X, Y и Z. Это позволяет увеличивать или уменьшать модель в нужных направлениях.
Синтаксис
scale = Обьект * ([Sx, Sy, Sz])
Sx – масштабирование по оси X (ширина).
Sy – масштабирование по оси Y (глубина).
Sz – масштабирование по оси Z (высота).
Если Sx, Sy, Sz < 1 – объект уменьшается.
Если Sx, Sy, Sz > 1 – объект увеличивается.
Если Sx, Sy, Sz = 1 – объект остается без изменений.
Примеры использования
Листинг 1:Увеличение размера объекта в 2 раза
from openscad import *
cu = cube([10, 10, 10])
scale = cu * ([2, 2, 2])
show(scale)

Рис. 25. Увеличение размера объекта в 2 раза
Исходный куб 10×10×10 увеличится до 20×20×20.
Листинг 2:Растяжение по одной оси
from openscad import *
cy = cylinder(h=10, r=5)
scale = cy * ([2, 1, 1])
show(scale)

Рис. 26. Растяжение по одной оси
Цилиндр растянется в 2 раза по X, а другие оси останутся без изменений.
Листинг 3:Уменьшение по высоте
from openscad import *
sp = sphere(10)
scale = sp * ([1, 1, 0.5])
show(scale)

Рис. 27. Уменьшение по высоте
Сфера сожмется в 2 раза по высоте, превращаясь в сплюснутую форму.
Листинг 4:Симметричное отражение (отрицательный масштаб)
cu = cube([10, 10, 10])
scale = cu * ([-1, 1, 1])
show(scale)

Рис. 28. Симметричное отражение (отрицательный масштаб)
Куб отразится относительно оси X (зеркальное отражение).
Если поставить -1 по другой оси, произойдет отражение по соответствующему направлению.
Задача 1:Команды
Какая команда выполняет перемещение объекта в заданную точку?
1) translate()
2) position()
3) moveTo()
4) displace()
5) offset()
Задача 2:Передвижение кодом
Какой код сдвинет объект на 15 по X, -10 по Y и 5 по Z?
1) translate([15, -10, 5])
2) shift([15, -10, 5])
3) translate(15, -10, 5)
4) move([15, -10, 5])
5) position(15, -10, 5)
Задача 3:Масштабирование
Какая команда выполняет масштабирование объекта?
1) scale()
2) zoom()
3) expand()
4) stretch()
5) resize()
Задача 4:Масштабирование
Как уменьшить объект в 2 раза по всем осям?
1) scale([0.5, 0.5, 0.5])
2) scale(0.5, 0.5, 0.5)
3) scale([0.5])
4) resize([0.5, 0.5, 0.5])
5) shrink(0.5)
Задача 5:Смещение
Как задать поворот объекта на 90 градусов вокруг оси Y?
1) rotate([0,90,0])
2) rotate(a=90, v=[0,1,0])
3) rotateY(90)
4) turn([0,90,0])
5) spin(90, [0,1,0])
Задача 6:Отзеркаливание
Как выполнить зеркальное отражение объекта относительно плоскости XY?
1) mirror([0,0,1])
2) reflect([1,1,0])
3) mirror([0,1,0])
4) flip([0,1,0])
5) invert([0,0,1])
Задача 7:Задать размер объекта
Какая команда позволяет задать конкретные размеры объекта, а не масштабировать его?
1) resize()
2) stretch()
3) scale()
4) expand()
5) adjustSize()
Задача 8:Полупрозрачный объект
Как сделать объект полупрозрачным?
1) % cube([10,10,10])
2) transparency(0.5)
3) opacity(50)
4) fade(50)
5) alpha(0.5)
Задача 9:Невидимый объект
Как сделать объект невидимым, но оставшимся в коде?
1) *cube([10,10,10])
2) hide()
3) invisible()
4) disable()
5) remove()
Задача 10:Линейное Выдавливание
Какая команда создаёт линейное выдавливание 2D-фигуры?
1) linear_extrude()
2) push()
3) extrude()
4) stretch_extrude()
5) height_extrude()
Задача 11:Линейное Выдавливание
Как выдавить 2D-объект на 20 единиц вверх?
1) linear_extrude(height=20)
2) extrude(20)
3) push(20)
4) stretch(20)
5) lift(20)
Задача 12:Вращательное Выдавливание
Как сделать вращательное выдавливание 2D-объекта?
1) rotate_extrude()
2) twist_extrude()
3) spin_extrude()
4) circular_extrude()
5) revolve()

