Все фигуры на одной доске используя модули

Рис. 1 Шахматные фигуры на доске. Взято с сайта OZON.ru

Это второй способ, как в одном проекте можно собрать сразу несколько моделей из других проектов. На мой взгляд, он является более технически верным, т.к позволяет создавать целые библиотеки, которые можно собирать в одном файле, а потом добавлять по мере необходимости в любые другие работы. Для этого мы будем использовать представление о модулях. С точки зрения программистов - это самый правильный путь.

Что такое МОДУЛЬ?

Если по-простому, то модуль - это программа внутри программы.

Мы создаём мини-программу, которая имеет своё имя и выполняет несколько команд, которые мы в неё написали:

module имя_модуля( параметры ) { команды модуля }

Так в основной программе объявляется присутствие модуля. Про имя тут говорить нечего. Параметры - это слова и цифры, которые мы можем сообщить модулю и он сможет использовать их в своей работе. Но описать модуль - недостаточно. Чтобы он заработал - нужно еще вызвать/запустить этот модуль в нашей программе. Поэтому код должен выглядеть примерно так:

module имя_модуля( параметры ) { команды модуля } //создание модуля

имя_модуля( параметры ) //Запуск модуля в работу

Рассмотрим пример:

Рис.2 Импортированная доска


Рис.3 Результат попытки передвинуть импортированную модель

Попробуем передвинуть шахматную доску

translate([50,50,0])

include <Desc 1.scad>

и вот, что мы получим (рис.3).

Как видно сдвинулись не все элементы, а только шашечки, жёлтая рамка осталась неподвижной. Это связано с тем, что шашечки и поле - это два отдельных объекта в файле Desc 1.scad, созданных отдельными наборами команд, и команда translate() применяется только к первому попавшемуся объекту, то есть к шашечкам (клетчатому полю).

Исправить это довольно просто. Объединим весь код импортируемого файла в единый объект командой union():

translate([50,50,0])

union(){

include <Desc 1.scad>

}

Результат не заставит себя ждать (рис.4)

Рис.4 Эффект действия команды union()

Итак, вернём доску на исходную позицию и добавим ещё один объект - пешку (рис.5).

Очевидно, что она требует некоторого перемещения. Сдвинем её на нужную позицию (рис.6), а потом размножим (рис.7).

Рис.5 Добавили пешку
Рис.6 Сдвинули пешку на её "законное" место
Рис.7 Размножили пешку при помощи цикла for

Следом за пешкой добавим остальные фигуры, объединим все 16 фигур командой union(), а затем перекрасим их в нужный цвет.

Далее нам останется скопировать весь код ещё раз, перекрасить фигуры в другой цвет, развернуть на 180 градусов и сдвинуть их на противоположную сторону доски.