Привет, ЛОР.
Для 3D есть такая замечательная штука как OpenSCAD. Где можно наколхозить программно, например, 5 цилиндров в цикле, раскрасить, трансформировать и всё это экспортировать.
А есть ли что-то аналогичное для двумерного рисования? Чтобы рисовать на скриптовом языке линии, круги, многоугольники, текстовые вставки, закрашивать всё это? Потом экспортировать в векторный (SVG) либо растровый (PNG) файл.
В принципе, в самом OpenSCAD 2D-примитивы имеются. Но вот как задать толщину обрамляющей линии для square, например, я так и не нашёл (да, подозреваю, что можно наложить два square через difference, но это уже лютый колхоз и натягивание филина на глобус, если мне нужно просто порисовать квадратики и линии).
С экспортом тоже проблема. Я нарисовал в опенскаде два разноцветных квадратика. Сохранил в SVG. Потом открываю что в gimp, что в inkscape – вожделенная плоская картинка есть, но информация о цвете потеряна. А «Экспорт в растр» из OpenSCAD вместо плоской картинки записывает в PNG вид на трёхмерную сцену (и я его не обвиняю, он, в общем-то, для другого делался).
В общем, ищется более подходящий инструмент.
В принципе, есть подозрение, что большая часть моих хотелок закрывается скриптингом, к примеру, на питоне (или другом скриптоЯП общего назначения). Если есть для него простейшая библиотека рисования, которая умеет не только на экран вывести, но и в файлик вывести (те же PNG и SVG, на крайняк обойдусь каким-то одним из них) – сойдёт, хоть это и менее удобно, чем специализированный инструмент. Есть такое (желательно с примерами)?
Обновление: всем спасибо за советы, остановился на PyCairo. Совет писать простой SVG вручную тоже интересен, там оказалось не так сложно, как я думал. Может, как-нибудь тоже пригодится.