On Sat, 04 Mar 2017 02:14:54 +0300, Nickita A Startcev wrote: NAS> поясню задачу. NAS> есть хитрая 3д-модель с параметрическим описанием. я ее кручу-верчу NAS> в опенскаде. потом автоматом из скрипта делаю нарезку этой модели и NAS> экспорт срезов в dxf. этот dxf в принципе понимает cia и с всплыванием NAS> разных менюшек понимает инкскейп. хочется на выходе автоматом получить NAS> контрастное изображение срезов, чтоб потом впихнуть их в одну дурную NAS> софтинку, где придется руками масштабировать. NAS> NAS> как мне кажется, идеальным было бы как-то пакетно NAS> 1. экспортировать svg в инкскейп (как подавить при этом всплывающие NAS> вопросы про версию формата dxf?) NAS> 2. без запуска гуи без ручного тыкания как-то сделать заливку контуров NAS> не прозрачной, а, например, #008800 NAS> 3. поверх всего этого нарисовать незалитый контур размером 167х167 мм NAS> ярко красного цвета. NAS> 4. экспортировать только ту область, которая в описанном вокруг обоих NAS> объектов прямоугольнике, экспортировать в jpg (ага, следующая в цепочке NAS> софтинка понимает жпег и некоторые бмп) Я тут надыть глянул как экспортит DXF в SVG librecad... Если все остальные делают примерно также, то это тупик. Проще уж растр перекрашивать. Так что звиняй, с SVG я похоже погорячился. Про inkscape ничего рассказать не могу - сам никогда им не пользовался. BTW, а он в этой цепочке не лишний? Openscad не может экспортировать срезы сразу в графические форматы или делает это как-то не так?
NAS> но тут я задолбался. в хелпе инкскейпа описана огромная куча команд но не NAS> описаны их параметры, или я протупил. NAS> NAS> for A in *.dxf ; do { NAS> inkscape -f $A --export-png=`basename $A .dxf`.png \ NAS> --export-dpi=75 -D -b "#00ff00"; NAS>}; done NAS> дает неплохие картинки, но весь фон зеленый, а граница размытая NAS> NAS> for A in sh*.png ; do { NAS> convert \ NAS> -flip \ NAS> -strokewidth 2 -stroke red -fill none -draw 'rectangle 1,1 100,100' \ NAS> -rotate 270 \ NAS> $A `basename $A .png`.jpg NAS>}; done NAS> рисует прямоугольник "для масштаба", но на мелких срезах прямоугольник не NAS> всегда влезает в кадр. NAS> NAS> convert -fuzz 20% sh00.png \ NAS> -fill darkgreen -floodfill +28+28 "#00ff00" \ NAS> sh00_a.png NAS> выдает совсем уж порнографию. Первое, что непонятно - откуда взялось 'rectangle 1,1 100,100'? 100px при DPI=75 - это ну никак не 167mm. Второе - что значит "на мелких срезах"? Где-то, либо в самом DXF, либо при рендеринге потеряна информация об относительном расположении срезов? В моём понимании картинки должны получаться либо одинакового размера, либо для меньших должны быть известны смещения относительно самой большой (в метаданных PNG предусмотрено хранение таких смещений). Третье - в чём заключается "выдает совсем уж порнографию"? Hе виновата ли тут "а граница размытая"? То есть линия контура слишком тонкая для рендеринга в 75dpi. Если так, то можно попробовать уменьшать fuzz. Если не поможет - рендерить с большим DPI, а после перекрашивания уменьшать размер до соответствующего DPI=75. При уменьшении размера может пригодиться -filter <type>. Где-то на imagemagick.org была статья с картинками, где достаточно подробно описывалось как какие фильтры и с какими параметрами влияют на результат. --- ifmail v.2.15dev5.4 * Origin: Black CaT's Point (2:5020/400)