删除SVG文件中的转换

删除SVG文件中的转换,svg,transform,inkscape,Svg,Transform,Inkscape,我已经为此挣扎了一段时间,似乎在任何地方都找不到一个有效的答案。我有一个SVG文件,如下所示: <svg xmlns:dc="http://purl.org/dc/elements/1.1/" ... width="72.9375" height="58.21875" ...> ... <g ... transform="translate(10.75,-308.96875)" style="..."&g

我已经为此挣扎了一段时间,似乎在任何地方都找不到一个有效的答案。我有一个SVG文件,如下所示:

<svg

   xmlns:dc="http://purl.org/dc/elements/1.1/"
   ...
   width="72.9375"
   height="58.21875"
   ...>
   ...
   <g
     ...
     transform="translate(10.75,-308.96875)"
     style="...">
     <path
       inkscape:connector-curvature="0"
       d="m -10.254587,345.43597 c 0,-1.41732 0.17692,-2.85384 0.5312502,-3.5625 0.70866,-1.41733 2.14518,-2.82259 3.5625,-3.53125 1.41733,-0.70866 2.11392,-0.70867 3.53125,0 1.41732,0.70866 ... z"
       ... />
  </g>
</svg>
<g transform="matrix( *** ) "><use xlink:href="#***"/></g>

...

我想删除
transform=“…”
行,但仍将图像保留在我放置的位置(在InkScape中)。如果我手动删除变换,图像会自动切换到屏幕的另一部分(如预期的那样),但我需要完全删除变换,同时让图像保持在我想要的位置。是否有方法将变换移除/展平到路径坐标本身?(我必须处理的唯一变换是平移和缩放,没有矩阵。)

在这种情况下,只需将平移添加到每个子级的m值,以便-10.254587+10.75=-0.504587和-308.96875+345.43597=36.46722

由于示例中的所有术语都是相对的(即小写),仅此而已。如果有绝对值(大写),例如M或C,也必须进行调整

对于比例,基本上是将所有子值乘以比例。

  • 在方法Draw中加载SVG(文件>打开图像)
  • 解组元素(对象>解组元素)您可能需要多次执行此操作
  • 选择您的路径
  • 重定向路径(对象>重定向路径)
  • 保存图像(文件>保存图像)如果图像出现在新窗口中,您可以右键单击并“将图像另存为…”

  • 根据我的经验,如果使用Inkscape,只需稍微移动路径元素(例如使用光标键),Inkscape就会删除变换属性并相应地调整路径数据。(如果确实要保留“变换”属性,则很烦人。)


    因此,您只需选择路径(确保它是路径而不是周围的组),点击左右光标键,即可完成操作。

    我找到了问题所在。我希望不必求助于罗伯特的答案,尽管我很高兴能证实它会起作用!最后,多比赛的答案实际上是最接近的,尽管事实证明还有其他事情发生


    当您在Inkscape文档中使用不同的路径时,我相信它的默认行为是将它们组合在一个
    标记下。修改组中的路径时,Inkscape将自动向组中添加一个转换以表示这些更改。但是,如果打开XML编辑器并将路径拖到
    标记之外,并使其成为自己的
    标记,Inkscape可以随意编辑各个点。最后,它确实变成了一个分组问题,尽管我只使用一条路径!希望这对其他类似情况的人有所帮助。

    Inkscape可以选择清除转换数据,但仍然保持对象的值不变

    在Inkscape中,选择对象和“路径”菜单“简化”。
    现在,您将删除这些转换。

    我尝试了这里发布的解决方案,即删除SVG文件中的组标记,并在Inkscape中重新打开它(我的例子是0.48.3.1)。唉,在我使用选择和转换模式(F1)再次转换路径并保存后,组标记再次出现!Inkscape保存应用于周围组元素中路径的所有变换。除非使用路径节点选择工具(F2),否则按ctrl+a并将路径的节点移动到正确的位置。在我这样做并保存之后,Inkscape没有添加组标记,因为这种转换直接应用于路径模型。希望这有帮助。

    如何在Inkscape中删除转换

  • 在Inkscape中打开svg文件
  • 转到编辑->全选
  • 转到对象->解组
  • 转到编辑->XML编辑器
  • 在图层中查找“变换”属性并将其删除
  • 如何在不创建其他变换属性的情况下移动所有对象

  • 转到编辑->选择所有层中的全部
  • 转到对象->变换
  • 变换面板中的

  • 取消选中相对移动并选中分别应用于每个对象
  • 根据需要设置水平和垂直值,然后单击应用

  • 对于团队来说,重组可以快速完成这项工作。选择组并按Ctrl+Shift+G(取消组),然后按Ctrl+G(组)

    对于具有类似问题的某些对象(例如,螺旋和星形),快速方法是按Ctrl+Alt+C(笔划到路径)-但这会将对象转换为纯路径并删除所有额外属性,如sodipodi:cx、sodipodi:revolutions等

    找到了它:

    • 设置所需的页面大小*
    • 如果当前层具有转换(使用XML编辑器检查,它是SVG元素下的顶部组),则创建一个新层并将所有对象移动到该层
    • 解组任何组(可能不需要,YMMV)
    • 选择所有对象并应用空变换(例如缩放100%100%或向右箭头+向左箭头),同时使用“存储变换”:在首选项/变换中优化
    • 如果必须撤消任何组,现在可以重新组合它们
    • 将副本另存为优化的SVG,并设置所需的数字精度

    *:或至少将对象放置在需要的位置,相对于页面的左上角。不幸的是,SVG坐标引用了左上角,而Inkscape相对于左下角调整了页面的大小

    要从Inkscape中的
    g
    元素(组)中删除变换属性,可以将组移动到其最终位置,将其解组,然后重新组合所有元素。现在已经创建了一个新组,如果您不再移动它,它将不会获得附加到它的变换属性。

    如果有人在草图3中登陆此处寻找解决方案,请选择该层,然后单击