如何将对象填充转换为细线?

平面设计 向量 svg 工具
2022-02-02 18:52:56

我正在尝试找到一种将实体对象填充转换为数百万(或多或少)行的方法?例如: 对象填充到线条

我可以使用任何工具,但理想情况下我希望以 SVG 格式输出(不是必需的)

放大视图: 在此处输入图像描述

3个回答

这是 Inkscape 的部分解决方案。Illustrator 的另一个答案显示了如何以非随机方式使用 Scribble 效果并获得所需的直线之字形填充,结果只需要一些小的手动修复(=如果形状复杂,则填充间隙)

Inkscape 没有这样的效果。它具有生成粗糙填充填充的路径效果,但结果非常粗糙。从理论上讲,它可以与 Illustrator 的 Scribble 相同,但它根本不具备所需的可调节性和准确性。

提问者在评论中给出了一个提示:绘图仪制造商(= EggBot)的第 3 方扩展可以生成一些类似的填充模式。我跳过它们,因为我没有它们。我试图得到它们,但安装停止了,因为我的 Inkscape 没有以标准方式安装。

如果您的形状是垂直对称的,因此上半部分可以在 XY 坐标中表示为 Y=f(x),其中 f 是用 Python 数学函数和运算符编写的公式,您可以使用 Inkscape 的函数绘图仪扩展绘制锯齿形填充。例如,我们检查您的圈子。

我必须作弊,因为三角锯齿曲线的确切公式很复杂。它需要棘手的模运算。我不知道如何用 Python 的函数编写它。一个称职的程序员可能会在一秒钟内说出来。

但是 Python 有一些众所周知的(= 与 Excel 中相同的)基本数学知识,例如正弦、圆周率和平方根。我使用它们,因为生成的曲线稍后可以转换为直线。

在此处输入图像描述

高缩放视图显示它实际上是一条柔和的曲线:

在此处输入图像描述

让它画一个正方形并转到扩展>渲染>函数绘图仪。我选择的正方形表示 x 和 y 的范围都从 -1 到 +1。

该功能取自电子设备。它是调幅正弦波(无载波!)。信封部分 sqrt(1-x*x) 是一个半圆。最后一个数字 40 定义了正弦曲线的 40 个完整周期,即 40 个顶部和底部峰值。它已定义为大约总共有 161 个节点。每个过零和峰值都有一个节点。

如果您想要更多,比如 100 个完整周期,则必须将 40 更改为 100 并将 161 更改为 401。

如果将所有节点转换为角点,则无需计算即可获得三角形形式。Extension Modify Path > Flatten Bezier 完成这项工作。下面是一个扁平化的例子:

在此处输入图像描述

您应该应用 Flatten,然后使用 none 工具选择除最左边和最右边之外的所有零线节点,然后按 DEL。然后再次展平,你就完成了——只有直线,没有额外的节点:

在此处输入图像描述

将其保存为纯 SVG 以删除所有 Inkscape 自己的部分(应该没有,因为结果是路径,它没有功能)。

我猜函数绘图方法不实用,所以我尝试了其他方法。如果接受直线平行线填充(= 无锯齿形),则可以平铺一堆线并设置剪贴蒙版或使用形状破坏性地分割线

Inkscape 有几种方法可以创建一堆直线

  • 平铺克隆(如果要拆分行,必须重新链接)
  • 路径效果插入子路径
  • 从路径 > 插值生成扩展

第三种方法最简单。它将中间行生成为一组:

在此处输入图像描述

这些线应该被取消组合和组合(路径>组合),以确保它们作为一个对象。组很容易被破坏,因为它们的成员仍然可以独立选择。此外,许多路径操作不适用于组,它们需要单个路径或组合路径。

下图显示了将形状放置在线条上并应用对象 > 剪辑 > 设置时的结果:

在此处输入图像描述

剪辑可以随时取回,原始部分完好无损,只是部分隐藏。没有办法将任何东西捕捉到行的明显末端,因为没有节点。为此,必须破坏性地分割线条,否则不应进行剪裁。捕捉到路径交叉点在 Inkscape 中效果很好。

我们可以通过用笔绘制三角形锯齿形来利用捕捉:

在此处输入图像描述

蓝色之字形是用笔只通过单击制作的,每个交叉点单击一次。花了大约一分钟。蓝色之字形是一条独立的单一路径。

在此处输入图像描述

如果线段 s 的一半是垂直的而另一半是倾斜的,这是令人不安的,则可以通过在绘制之字形之前旋转线来修复它。

出现了一个问题“如果用路径>切割路径分割线,是否可以以某种方式自动组合,而不是一个接一个地组合成锯齿形。理论上可以。但是有一些困难使得结果不确定。

首先,我们用相同的黑色曲线分割线条。如果将它们组合在一起(路径 > 组合),顶部形状确实会拆分底层线。可以使用普通选择工具在“触摸时选择”模式(=Alt+Drag)中轻松选择和移除残留物:

在此处输入图像描述

然后我们可以选择所有行的底端节点并尝试节点功能加入选定的节点。不幸的是,结果出乎意料:

在此处输入图像描述

所有节点加入结束连接操作,当捆绑时,选择顺序不可预测。连接必须一一完成。如上图所示,用钢笔画锯齿形要容易得多。

Illustrator 涂鸦效果可以满足您的要求

只需在路径填充上涂抹涂鸦。然后将涂鸦设置调整为 0 变化。

在此处输入图像描述

然后因为这是一个现场效果,你需要用Object → Expand Appearance来扩展它

在此处输入图像描述

现在,Scribble 测量种子点之间的距离与您的示例略有不同。这可能是也可能不是问题,它在问题设置中没有如此准确地描述。

sin如果你能找到一种数学方法来描述你的形状的包络线,你可以用很短的时间乘以这个函数。对于磁盘示例,sin(100*x) * sqrt(1 - x**2)似乎工作正常:

在此处输入图像描述

这是一个现场示例,您可以在其中使用滑块更改参数。

可以从gnuplotmatplotlib或 this website将函数绘制为 SVG