- Цилиндр (для корпуса ракеты и сопел).
- Конус (для носовой части ракеты).
- Куб (для создания стабилизаторов, которые затем можно будет модифицировать).
- Операции:
union()– для объединения объектов.translate()– для перемещения объектов.rotate()– для поворота объектов.scale()– для масштабирования объектов (если потребуется).difference()– для вычитания одного объекта из другого (если потребуется для более сложных деталей).minkowski()илиhull()– для создания плавных переходов или оболочек (если потребуется для более сложных форм).
Шаг 1: Создание корпуса ракеты.
Корпус ракеты состоит из цилиндрической части и конической носовой части.
// Корпус ракеты
module rocket_body() {
// Цилиндрическая часть
cylinder(h = 60, r = 10, $fn = 50); // Высота 60, радиус 10, 50 граней для гладкости
// Носовая часть (конус)
translate([0, 0, 60]) { // Перемещаем конус на верхнюю часть цилиндра
cone(h = 20, r1 = 10, r2 = 0, $fn = 50); // Высота 20, нижний радиус 10, верхний радиус 0
}
}
Шаг 2: Создание стабилизаторов (крыльев).
Стабилизаторы можно сделать из кубов, которые затем масштабируются и поворачиваются. На рисунке видно три стабилизатора.
// Стабилизатор
module fin() {
cube([2, 20, 15]); // Создаем куб: ширина 2, длина 20, высота 15
}
// Размещение стабилизаторов
module rocket_fins() {
for (i = [0, 1, 2]) { // Три стабилизатора
rotate([0, 0, i * 120]) { // Поворачиваем каждый стабилизатор на 120 градусов
translate([0, -10, 10]) { // Перемещаем стабилизатор к корпусу
rotate([90, 0, 0]) { // Поворачиваем стабилизатор, чтобы он был вертикальным
fin();
}
}
}
}
}
Шаг 3: Создание сопел.
Сопла можно сделать из небольших цилиндров или усеченных конусов.
// Сопло
module nozzle() {
cylinder(h = 8, r1 = 3, r2 = 5, $fn = 30); // Высота 8, нижний радиус 3, верхний радиус 5
}
// Размещение сопел
module rocket_nozzles() {
for (i = [0, 1, 2, 3]) { // Четыре сопла
rotate([0, 0, i * 90 + 45]) { // Поворачиваем сопла вокруг центра
translate([0, 7, 0]) { // Перемещаем сопло от центра
rotate([90, 0, 0]) { // Поворачиваем сопло, чтобы оно было направлено вниз
nozzle();
}
}
}
}
}
Шаг 4: Объединение всех частей ракеты.
Теперь объединим все модули в одну ракету.
// Главный модуль ракеты
module rocket() {
union() {
rocket_body();
rocket_fins();
translate([0, 0, -8]) { // Перемещаем сопла немного вниз от основания корпуса
rocket_nozzles();
}
}
}
// Вызов главного модуля для отображения ракеты
rocket();
Полный код для OpenSCAD:
// Задание 53: Создание модели "Ракета" (рис. 135)
// Корпус ракеты
module rocket_body() {
// Цилиндрическая часть
cylinder(h = 60, r = 10, $fn = 50); // Высота 60, радиус 10, 50 граней для гладкости
// Носовая часть (конус)
translate([0, 0, 60]) { // Перемещаем конус на верхнюю часть цилиндра
cone(h = 20, r1 = 10, r2 = 0, $fn = 50); // Высота 20, нижний радиус 10, верхний радиус 0
}
}
// Стабилизатор
module fin() {
// Создаем куб, который будет основой стабилизатора
// Можно сделать его более сложной формы, используя hull() или difference()
cube([2, 20, 15]); // Ширина 2, длина 20, высота 15
}
// Размещение стабилизаторов
module rocket_fins() {
for (i = [0, 1, 2]) { // Три стабилизатора
rotate([0, 0, i * 120]) { // Поворачиваем каждый стабилизатор на 120 градусов вокруг оси Z
translate([0, -10, 10]) { // Перемещаем стабилизатор от центра корпуса и поднимаем его
rotate([90, 0, 0]) { // Поворачиваем стабилизатор, чтобы он был вертикальным
fin();
}
}
}
}
}
// Сопло
module nozzle() {
// Усеченный конус для имитации сопла
cylinder(h = 8, r1 = 3, r2 = 5, $fn = 30); // Высота 8, нижний радиус 3, верхний радиус 5
}
// Размещение сопел
module rocket_nozzles() {
for (i = [0, 1, 2, 3]) { // Четыре сопла
rotate([0, 0, i * 90 + 45]) { // Поворачиваем сопла вокруг центра, добавляем смещение 45 градусов для лучшего расположения
translate([0, 7, 0]) { // Перемещаем сопло от центра
rotate([90, 0, 0]) { // Поворачиваем сопло, чтобы оно было направлено вниз
nozzle();
}
}
}
}
}
// Главный модуль ракеты, объединяющий все части
module rocket() {
union() {
rocket_body();
rocket_fins();
translate([0, 0, -8]) { // Перемещаем сопла немного вниз от основания корпуса
rocket_nozzles();
}
}
}
// Вызов главного модуля для отображения ракеты
rocket();
Как использовать этот код:
- Откройте программу OpenSCAD.
- Скопируйте весь приведенный выше код в текстовый редактор OpenSCAD.
- Нажмите F5 (или "Render" -> "Preview") для предварительного просмотра модели.
- Нажмите F6 (или "Render" -> "Render") для окончательного рендеринга модели.
- Вы можете сохранить модель в формате STL (File -> Export -> Export as STL...) для 3D-печати или дальнейшего использования.
Этот код создает базовую модель ракеты, похожую на ту, что изображена на рисунке 135. Вы можете экспериментировать с параметрами (высота, радиус, количество граней, углы поворота, смещения) для достижения более точного или желаемого результата.
