【问题标题】:In an Inkscape extension, how do I set a path's control points?在 Inkscape 扩展中,如何设置路径的控制点?
【发布时间】:2021-10-19 13:22:47
【问题描述】:

我正在尝试构建一个用于学习目的的 Inkscape 扩展,并且想要操纵路径的控制点。

我知道我可以这样列出它们:

inkex.utils.debug([ p for p in self.svg.selected[0].path.control_points ])

但我无法设置它们 - path.control_points 是一个生成器。

除了将其转换为 SVG 的“d”属性、使用 svgpathtools 对其进行操作并将其设置回来之外,还有其他方法吗?

【问题讨论】:

    标签: python inkscape


    【解决方案1】:

    如果您知道路径中的内容,可能有一种方法可以做到这一点。如果是随机路径或者任意路径,代码会比较复杂。

    pel = self.svg.selected[0] # assuming selected is a path
    path_old = pel.path
    

    假设您的路径具有这 2 个组件,或类似的一些已知组件。

    [Move(80.3412, 87.9089), Curve(99.575, 67.2665, 
            103.398, 73.9063, 113.129, 83.6942)]
    

    您可以使用相同的组件重新创建新路径。

    path_new = Path()
    
    old_move = path_old[0]
    new_move = Move(old_move.x + 10, old_move.y + 11) # modify Move coordinates
    old_curve = path_old[1]
    new_curve = Curve(......)
    
    path_new.append(new_move)
    path_new.append(new_curve) 
    

    根据您的需要,有时直接操作d 属性可能更容易。

    【讨论】:

      猜你喜欢
      • 2021-11-02
      • 2023-03-09
      • 2012-06-08
      • 2021-12-02
      • 2014-09-04
      • 1970-01-01
      • 1970-01-01
      • 2012-11-14
      • 2015-06-05
      相关资源
      最近更新 更多