Project Icon

vpype

专为绘图仪设计的多功能矢量图形处理和优化工具

vpype是一款专为绘图仪设计的命令行工具,用于处理和优化矢量图形。它能精确布局矢量文件、优化SVG加快绘图、为老式绘图仪输出HPGL、创建生成艺术作品以及处理多层矢量文件。vpype可通过插件扩展功能,作为Python库还提供了创建生成艺术和绘图仪工具所需的数据结构、实用函数和硬件加速的矢量图形查看器。

banner

vpype

PyPI python Downloads license Test codecov Sonarcloud Status Documentation Status Code style: Black

vpype 是绘图矢量图形的瑞士军刀命令行工具。

目录

vpype 是什么?

vpype 是绘图矢量图形的瑞士军刀命令行工具。以下是它的功能:

  • 对现有矢量文件进行精确的位置、比例和页面格式控制的布局;
  • 优化现有SVG文件以实现更快速、更清晰的绘图;
  • 为老式绘图仪创建HPGL输出;
  • 通过内置命令或插件从头开始创建生成艺术作品;
  • 创建、修改和处理多层矢量文件以进行多色绘图;
  • 以及更多...

vpype 高度可扩展,通过插件可以大大扩展其功能。例如,已经存在用于绘制像素艺术用阴影进行半色调处理等的插件。请参阅下面的现有插件列表

vpype 也是一个文档完善Python库, 对创建生成艺术和绘图仪工具很有用。它包括数据结构、实用程序和I/O函数,以及 硬件加速的灵活矢量图形查看器。例如,绘图仪生成艺术环境 vsketch就是基于 vpype 构建的。

查看文档以获取更全面的 vpype 介绍。

它是如何工作的?

vpype 通过构建所谓的_命令_的_管道_来工作,其中每个命令的输出被输送到下一个命令的输入。 一些命令将几何图形加载到管道中(例如 read 命令从SVG文件加载几何图形)。其他命令修改这些几何图形,例如通过 裁剪(crop)或重新排序以最小化笔抬起 移动(linesort)。最后,一些其他命令 仅读取管道中的几何图形以用于显示目的(show) 或输出到文件(write)。

管道是使用 vpype 的CLI(命令行界面)在终端中定义的,方法是输入 vpype 后跟 命令列表,每个命令都带有其可选参数和参数:

命令行 这个流程使用五个命令(以粗体显示):

  • read 从SVG文件加载几何图形。
  • linemerge 合并端点相近的路径(在给定的容差范围内)。
  • linesort 重新排序路径,以最小化笔抬起的移动距离。
  • crop 进行裁剪。
  • write 将生成的几何图形导出为SVG文件。

vpype 中还有许多其他可用的命令,请参阅下方的概览

一些命令有必需的参数(以斜体显示)。例如,read命令必须提供文件路径,crop命令必须提供尺寸。命令也可能有可选项。在本例中,--page-size a4表示write命令将生成A4大小的SVG(否则它将与_in.svg_的大小相同)。同样,因为使用了--center,所以write命令在保存SVG之前会将几何图形居中(否则几何图形将保持在原始位置)。

示例

注意:以下示例使用行尾转义符(\)分布在多行上。这样做是为了突出显示管道由哪些命令组成,在实际使用中通常不会这样做。

加载SVG文件,将其缩放到特定大小,并将其居中导出到A4大小的、可直接绘图的SVG文件中:

$ vpype \
  read input.svg \
  layout --fit-to-margins 2cm a4 \
  write output.svg

优化路径以减少绘图时间(合并相连的线条,排序以最小化笔抬起距离,随机化闭合路径的接缝,并减少节点数):

$ vpype \
  read input.svg \
  linemerge --tolerance 0.1mm \
  linesort \
  reloop \
  linesimplify \
  write output.svg

加载SVG并在vpype的查看器中显示(可以仔细检查图层和路径结构):

$ vpype \
  read input.svg \
  show

加载多个SVG文件并将它们保存为单个多层SVG文件(例如用于多色绘图):

$ vpype \
  forfile "*.svg" \
    read --layer %_i% %_path% \
  end \
  write output.svg

将SVG导出为HPGL格式,用于老式绘图仪:

$ vpype \
  read input.svg \
  layout --fit-to-margins 2cm --landscape a4 \
  write --device hp7475a output.hpgl

在SVG上绘制图层名称(此示例使用属性替换):

$ vpype \
    read input.svg \
    text --layer 1 "{vp_name}" \
    write output.svg

将多个SVG文件合并到网格布局中(此示例使用表达式替换):

$ vpype \
    eval "files=glob('*.svg')" \
    eval "cols=3; rows=ceil(len(files)/cols)" \
    grid -o 10cm 10cm "%cols%" "%rows%" \
        read --no-fail "%files[_i] if _i < len(files) else ''%" \
        layout -m 0.5cm 10x10cm \
    end \
    write combined_on_a_grid.svg

上一个示例的交互版本可在examples/grid.vpy中找到。它使用input()表达式向用户询问参数:

$ vpype -I examples/grid.vpy
Files [*.svg]?
Number of columns [3]? 4
Column width [10cm]?
Row height [10cm]? 15cm
Margin [0.5cm]?
Output path [output.svg]?

将SVG按图层拆分为多个文件:

$ vpype \
    read input.svg \
    forlayer \
      write "output_%_name or _lid%.svg" \
    end

更多示例和方法可以在cookbook中找到。

vpype 不是什么?

vpype 专注于绘图仪生成艺术,并不旨在成为通用的(如Illustrator/InkScape)矢量图形工具。其主要原因之一是_vpype_将所有曲线(圆形、贝塞尔曲线等)转换为由小段线条组成的线。_vpype_确实导入了元数据,如描边和填充颜色、描边宽度等,但只部分使用它们,并不旨在与SVG规范保持完全一致。这些设计选择使_vpype_的丰富功能成为可能,但限制了它在印刷媒体等方面的使用。

安装

详细的安装说明可在最新文档中找到。 摘要:

  • 推荐使用 Python 3.12,但 vpype 也兼容 Python 3.10 和 3.11。
  • vpype 发布在 Python 包索引 上,可以使用 pipx 安装:
    pipx install "vpype[all]"
    
  • 这里 提供了 Windows 安装程序,但使用此方法无法安装插件。
  • 可以使用以下命令安装仅包含命令行界面的 vpype 版本:
    pipx install vpype
    
    此版本不包含 show 命令,但不需要在某些平台上难以或无法安装的依赖项(如 matplotlib、PySide6 和 ModernGL)。

文档

vpype 命令行界面包含自身的详细文档:

vpype --help          # 通用帮助和命令列表
vpype COMMAND --help  # 特定命令的帮助

此外,在线文档 提供了关于 vpype 基本原理的广泛背景信息、涵盖大多数常见任务的操作指南、vpype API 文档等更多内容。

功能概览

通用

  • 易于使用的命令行界面,具有集成帮助(vpype --helpvpype COMMAND --help)和支持任意单位(例如 vpype read input.svg translate 3cm 2in)。
  • 一流的多层支持,具有全局或每层处理功能(例如 vpype COMMANDNAME --layer 1,3)和可选的概率性图层编辑命令(lmovelcopyldeletelswaplreverse)。
  • 支持每层和全局属性,作为元数据,被多个命令和插件使用。
  • 支持命令行用户输入中的属性表达式替换
  • 支持复杂的每层处理(perlayer)。
  • 强大的硬件加速显示命令,具有可调整的单位、可选的每线着色、可选的笔抬轨迹显示和每层可见性控制(show)。
  • 几何统计提取(stat)。
  • 支持命令历史记录(vpype -H [...])。
  • 支持生成插件的随机数生成器种子配置(vpype -s 37 [...])。

输入/输出

  • 单层和多层 SVG 输入,具有可调整的精度、大型 SVG 的并行处理,支持百分比或缺失宽度/高度(read)。
  • 支持 SVG 输出,具有精细的布局控制(页面大小和方向、居中)、图层支持和自定义图层名称、可选的笔抬轨迹显示、各种着色选项(write)。
  • 支持基于配置的 HPGL 输出生成,具有精细的布局控制(页面大小和方向、居中)。
  • 支持基于模式的文件集合处理(forfile)。

布局和变换

  • 简单灵活的布局命令,用于居中和适应边距,可选择水平和垂直对齐(layout)。
  • 页面旋转命令(pagerotate)。
  • 强大的变换命令,用于缩放、平移、倾斜和旋转几何图形(scaletranslateskewrotate)。
  • 支持任意尺寸的缩放裁剪scaletocrop)。
  • 支持任意数量的几何图形修剪trim)。
  • 任意页面大小定义(pagesize)。

元数据

绘图优化

  • 线条合并,支持可选的路径反转和可配置的合并阈值(linemerge)。
  • 线条排序,支持可选的路径反转(linesort)。
  • 可调节精度的线条简化linesimplify)。
  • 闭合路径的接缝位置随机化,以减少笔抬起/落下的痕迹(reloop)。
  • 支持对每条线生成多次通过multipass)。

滤镜

  • 支持按线长或闭合性进行过滤filter)。
  • 扭曲滤镜,用于手抖或液体般的风格效果(squiggles
  • 支持将所有线条拆分为其组成段(splitall)。
  • 支持反转图层内路径的顺序(reverse)。
  • 支持按绘制距离拆分图层(splitdist

生成

  • 生成任意基本图形,包括线条、矩形、圆形、椭圆和弧线(linerectcircleellipsearc)。
  • 使用内置的赫西字体生成文本text
  • 生成网格状布局(grid)。
  • 在几何图形周围生成边框frame)。
  • 生成用于调试/学习目的的随机线条(random

可扩展性和API

插件

以下是已知的vpype插件列表(如果您的插件未列出,请提交拉取请求):

贡献

欢迎为本项目做出贡献,这并不一定需要软件开发技能!请查看文档中的贡献部分以获取更多信息。

许可证

本项目采用MIT许可证 - 详情请参阅LICENSE文件。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号