January 9th, 2015

Реечная передача и плагины для Инкскейпа

В прошлый раз я сказал, что инструмент для отрисовки шестерёнок в Инкскейпе «Расширения > Отрисовка > Зубчатое колесо...» в качестве единицы измерения использует только абстрактные пиксели и не позволяет выбрать физические меры длины, которые лучше подойдут для нужд реального цифрового производства, например миллиметры.

К нашей удаче, Inkscape является свободным программным обеспечением, а это значит, что любой можеть исправить в нем найденные недочеты или добавить недостающие функции не дожидаясь, пока это решат сделать обладатели проприетарной кодовой базы.

В случае с расширениями для отрисовки объектов в Inkscape всё еще проще - они представляют собой скрипты на языке Python и конфигурационные файлы в формате XML, которые можно добавлять и редактировать в любом текстовом редакторе и запускать на любом компьютере с установленным Inkscape (все приложение целиком собирать из исходников не нужно).

В диалог с параметрами шестерёнки добавил новый параметр "Единица измерения" (англ. Unit), который определяет единицу измерения для параметра "Шаг колеса" (на картинке с русским переводом он превратился в английскую версию Circular pitch, т.к. из строки с именем параметра я убрал уточнение по пиксели и из-за этого поплыли файлы с переводом, которые я не исправлял). К параметрам "Количество зубцов" и "Угол зацепления" он не относится.

inkscape-gears-04.png

Чтобы установить исправленное расширение у себя в системе, нужно скачать два файла:
inkscape/extensions/gears1.inx (файл XML с настройками расширения)
inkscape/extensions/gears1.py (код расширения на языке Пайтон)

и скопировать их в каталог ~/.config/inkscape/extensions в Linux или в C:\Users\user\AppData\Roaming\inkscape\extensions в Windows. После этого перезапустить Inkscape, исправленный диалог для отрисовки шестеренки появится в меню «Расширения > Отрисовка > Gear1...» (я исправил имя на временное Gear1, чтобы не вносить путаницу со старым расширением; при желании можно также просто исправить расширение «Зубчатое колесо» из стандартной поставки Инкскейпа, для этого нужно заменить содержимое файлов gears.inx и gears.py в каталоге C:\Program Files (x86)\Inkscape\share\extensions в Windows на содержимое файлов, приведённых выше).

Реечная передача

Также в текущей версии Inkscape вообще отсутствовала возможность нарисовать плоскую дощечку с зубами от шестерёнки (реечная передача, англ. rack and pinion). Такая штука может оказаться полезной для того, чтобы превращать вращательное движение с моторчиков и сервомоторчиков в поступательное движение рейки; пригодится при проектировании каких-нибудь подвижных узлов для роботизированных механизмов, которые можно будет вырезать лазером.

Вообще говоря, нарисовать правильную форму зубца для шестерёнки не так просто, как кажется на первый взгляд. При её расчете используется большое количество (ну может и не очень большое, но в них все равно нужно вникать) разных параметров и формул, вот несколько случайных ссылок:
https://ru.wikipedia.org/wiki/Реечная_передача
https://ru.wikipedia.org/wiki/Зубчатая_передача
http://en.wikipedia.org/wiki/Rack_and_pinion
http://en.wikipedia.org/wiki/Gear
http://www.prikladmeh.ru/lect4.htm
http://expertmeet.org/topic/17156-передачи-движения/
http://allrefs.net/c12/3uly5/p14/?full

Разбираться во всех этих теориях и формулах мне не очень хотелось, поэтому для отрисовки реечной передачи я взял за основу код для отрисовки шестеренки из предыдущего расширения и просто сделал так, чтобы нужное количество зубов размножалось по прямой линии, а не по окружности.

Файлы для расширения:
inkscape/extensions/rack_and_pinion.inx (файл XML с настройками расширения)
inkscape/extensions/rack_and_pinion.py (код расширения на языке Пайтон)

Их нужно точно также скопировать в каталог ~/.config/inkscape/extensions в Linux или в C:\Users\user\AppData\Roaming\inkscape\extensions в Windows, перезапустить Inkscape, новый диалог для отрисовки реечной передачи появится в меню «Расширения > Отрисовка > Rack and pinion...»

inkscape-gears-03.png


Чтобы нарисовать совместимые между собой зубчатое колесо и реечную передачу, нужно при их создании задать одинаковые значения параметров "Шаг колеса" (Circular pitch) и Угол зацепления (Pressure angle); количество зубцов в обоих случаях может быть любым.

inkscape-gears-06.png

Я также отправил ссылки на эти исправления в багтрекер Inkscape и в процессе выяснил, что, во-первых, в репозитории с исходным кодом уже есть новое расширение для отрисовки реечной передачи (вероятно, оно может появиться уже в следующем релизе), во-вторых, в работе есть еще одна улучшенная версия расширения для отрисовки зубчатого колеса с большим количеством дополнительных параметров.

Collapse )

исходники занятия, подсветка синтаксиса