He estado luchando con esto por un tiempo, y parece que no puedo encontrar una respuesta (que funcione) en ningún lado. Tengo un archivo SVG que se ve así:
<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>
Quiero eliminar la transform="..."
línea, pero aún así mi imagen permanece donde la he colocado (en InkScape). Si elimino manualmente la transformación, la imagen se comprime en otra parte de la pantalla (como se esperaba), pero necesito deshacerme por completo de la transformación y, al mismo tiempo, hacer que la imagen permanezca exactamente donde la quiero. ¿Hay alguna forma de eliminar / aplanar las transformaciones en las coordenadas de la ruta? (Las únicas transformaciones con las que tengo que lidiar son traducir y escalar, sin matrices).
Respuestas:
Cómo eliminar transformaciones en Inkscape
Cómo mover todos los objetos en conjunto sin crear otros atributos de transformación
Vaya a Objeto -> Transformar
En el panel Transformar
Desmarque Movimiento relativo y marque Aplicar a cada objeto por separado
fuente
Resolví cuál era el problema. ¡Esperaba no tener que recurrir a la respuesta de Robert, aunque me alegra que me confirmen que funcionaría! Al final, la respuesta de Duopixel fue en realidad la más cercana, aunque resulta que también estaba sucediendo algo más.
Cuando trabajas con diferentes rutas en documentos de Inkscape, creo que su comportamiento predeterminado es agruparlos bajo una
<svg:g.../>
etiqueta. Al modificar rutas en un grupo, Inkscape agregará automáticamente una transformación al grupo para representar estos cambios. Sin embargo, si abre el editor XML y arrastra su ruta fuera de la<svg:g.../>
etiqueta y la convierte en su propia<svg:path.../>
etiqueta, Inkscape puede editar los puntos individuales a voluntad. ¡Al final resultó ser un problema de agrupación a pesar de que solo estaba trabajando con una ruta! Espero que esto ayude a otros en situaciones similares.fuente
fuente
Existe una extensión de Inkscape llamada Apply Transforms que vuelve a calcular las rutas con sus transformaciones. Esto es exactamente lo que he estado buscando.
Después de instalarlo, encontrará el menú en Extensiones> Modificar ruta> Aplicar transformación .
créditos: foro de Inkscape> Eliminar todas las transformaciones mientras se mantiene en su lugar
fuente
Para los grupos, la reagrupación puede hacer el trabajo rápidamente. Seleccione el grupo y presione Ctrl + Shift + G (degroup) y luego Ctrl + G (group).
Para algunos objetos que tienen un problema similar, espirales y estrellas, por ejemplo, la forma rápida es presionar Ctrl + Alt + C (trazo a ruta); sin embargo, esto convierte el objeto en una ruta pura y elimina todos los atributos adicionales, tales como sodipodi: cx, sodipodi: revoluciones, etc.
fuente
Abre tu svg en Inkscape :
De esta forma, se deshará de las transformaciones aplicadas al grupo y se transferirán a las rutas que se encuentran dentro de este grupo.
fuente
En mi experiencia, si está usando Inkscape, es suficiente mover ligeramente el elemento de ruta (por ejemplo, con las teclas del cursor), e Inkscape eliminará el atributo de transformación y ajustará los datos de ruta en consecuencia. (Molesto si realmente desea mantener el atributo de transformación).
Por lo tanto, simplemente puede seleccionar la ruta (asegúrese de que sea la ruta y no el grupo circundante), presione la tecla de cursor derecha e izquierda, y listo.
fuente
<g>
y quiero mantener la transformación en<g>
.Si bien prefiero Inkscape, Affinity Designer (~ $ 40 / Mac) me ahorró horas de esfuerzo al trabajar con Android Vector Drawables.
Abra un SVG, Archivo -> Exportar -> SVG -> Más -> Acoplar transformaciones funcionó muy bien.
fuente
SVGO es una excelente herramienta de línea de comandos de código abierto para esta y muchas otras optimizaciones. Hay una IU web en línea igualmente excelente porque se llama SVGOMG
Las opciones relevantes en este caso son
moveGroupAttrsToElems
(SVGOMG:Move group attrs to elements
) para movertransform
los atributos de los grupos de elementos de la ruta, además deconvertPathData
(SVGOMG:Round/rewrite paths
) para aplanartransform
end
.fuente
Cabe mencionar que existe el modo "Optimizado" en las preferencias:
Preferencias de Inkscape> Transformaciones> Transformación de tienda> Optimizado
Lo que se supone que minimiza la aparición de
transform
atributos tanto como sea posible (pero no lo hace).Esto parece estar activado por defecto de todos modos.
Según una discusión , una instancia en la que este modo Optimizado carece de celo es cuando se cambia el tamaño de la página . Esto hace
translate
que se aplique una transformación al<g>
elemento de capa . Parece que evacuar a los niños a otra capa es la mejor solución en este momento.fuente
translate
transformaciones molestas en cada capa, intente abrir el.svg
archivo en un editor de texto y manipule los atributos de alto y ancho que aparecen en la parte superior.Inkscape tiene la opción de borrar los datos de transformación pero aún así no se modifica el valor del objeto.
En Inkscape, seleccione el objeto y el menú 'Ruta', 'Simplificar'. Ahora, tendrá las transformaciones eliminadas.
fuente
En este caso, simplemente agregue la traducción a los valores m para cada hijo, de modo que -10.254587 + 10.75 = -0.504587 y -308.96875 + 345.43597 = 36.46722.
Dado que todos los términos en el ejemplo son relativos (es decir, minúsculas) eso es todo. Si alguno fuera absoluto (mayúscula), por ejemplo, M o C, también tendrían que ajustarse.
Para la escala, básicamente multiplicaría todos los valores secundarios por la escala.
fuente
fuente
<g>
con eltransform
atributo permanece tal como estaba. Además, mi objeto (al igual que el que se muestra en la pregunta aquí) ya es un camino.Para eliminar el atributo de transformación de un
g
elemento (grupo) en Inkscape, puede mover el grupo a su lugar final, desagruparlo y luego reagrupar todos los elementos. Ahora se ha creado un nuevo grupo, y si no lo mueve de nuevo, no obtendrá un atributo de transformación adjunto.fuente
Si alguien aterriza aquí buscando una solución para hacer esto en Sketch 3, seleccione la capa y luego haga clic en Capa-> Trazados-> Acoplar.
fuente
Lo encontré:
*: O al menos coloque los objetos donde los necesite, en relación con la esquina superior izquierda de la página. ¡Es lamentable que las coordenadas SVG hagan referencia a la esquina superior izquierda, mientras que Inkscape cambia el tamaño de la página en relación con la esquina inferior izquierda!
fuente
Pude deshacerme de una
matrix(...)
transformación (debido a la duplicación) combinando la ruta con un rectángulo y luego eliminando los nodos del rectángulo. Latranslate(...)
parte se quedó sin embargo.fuente
En mi caso, guardar como SVG optimizado resolvió el problema. Entonces, en el uso de Inkscape:
Archivo -> Guardar como ... -> SVG optimizado.
fuente
transform
Android Studio no admite el atributo.Esto funciona si está utilizando Inkscape:
En todos los casos que he intentado, esto ha eliminado cualquier atributo de transformación. No estoy seguro si funciona para SVG más complejo.
fuente
Probé la solución publicada aquí, a saber, eliminar las etiquetas de grupo en el archivo SVG y volver a abrirlo en Inkscape (0.48.3.1 en mi caso). Por desgracia, después de traducir los caminos nuevamente usando el modo de selección y transformación (F1) y guardarlos, ¡las etiquetas de grupo reaparecieron! Inkscape guarda todas las transformaciones aplicadas a la ruta en un elemento de grupo circundante. A menos que use la herramienta de selección de nodo de ruta (F2), presione ctrl + a y mueva los nodos de la ruta a su lugar correcto. Después de hacer esto y guardarlo, Inkscape no agregó las etiquetas de grupo, porque esta traducción se aplicó directamente al modelo de ruta. Espero que esto ayude.
fuente
En mi caso, los grupos en realidad son causados por capas. La eliminación de todas las capas en el documento eliminó el grupo y la transformación (posiblemente combinado con objetos de desagrupación y reagrupación, etc., como en Eliminar transformaciones en archivos SVG (respuesta-35490189 de @Charlie arriba))
fuente
Mi problema específico fue con los símbolos que se definieron fuera de la página, lo que requiere que se muestre una transformación en la página.
Para mover los símbolos a la página sin requerir una transformación, tuve que seguir estos pasos en Inkscape:
fuente
Esto parece aleatorio, pero nada más que intenté funcionó, así que aquí tienes otra persona aleatoria. Algunos de mis caminos tenían una especie de margen a su alrededor que solo se podía ver al seleccionarlos ( ). Creo que esto se creó cuando pegué una capa de otro archivo inkscape y la giré 90 grados. Esto hizo que un patrón de relleno en las formas tuviera una transformación diferente (líneas espaciadas más separadas). También hizo que los objetos de alineación no funcionen como se esperaba. El uso de la aplicación de transformación mencionada por @Piotr_cz solucionó el problema de transformación, pero el margen extraño permaneció. Accidentalmente lo eliminé cambiando el Blur on Stroke a cualquier valor y volviéndolo a cero.
fuente
De alguna manera no tuve suerte con ninguno de los enfoques. Si hay una
<defs>
sección en su svg y usos como este:Puede que tenga que eliminar todos los usos y sacar todo de la sección defs. Luego, puede usar inkscape para colocar todo de la manera correcta y luego aplicar transformaciones utilizando el complemento mencionado. Espero que ayude a alguien.
fuente
He tenido este problema por años. La solución es claramente poder jugar dinámicamente con transformaciones en el navegador, si no se va a "arreglar" en inkscape.
Un usuario Mc en los foros de Inkscape me dio esta solución .
La solución construye la transformación actual entre un elemento SVG y su elemento raíz SVG, y luego devuelve un conjunto completo de información BBox basada en el total de las transformaciones.
También sería posible cambiar fácilmente a qué elemento se refieren los cálculos, en caso de que desee hacer en el trabajo del navegador entre dos partes del mismo archivo SVG.
Finalmente, puedo tener una vista panorámica SVG.
fuente
Inkscape 1.0 en Kubuntu 20.04
Aunque este hilo es bastante antiguo, me gustaría publicar mi experiencia / solución. Me encontré con este problema al intentar crear una plantilla para el banco de trabajo TechDrawing de FreeCAD. Estas plantillas no deben contener ninguna transformación.
En mi caso, tuve que agregar el logotipo de una empresa desde un archivo externo .svg (hecho completamente con Inkscape). Ese logotipo contiene elementos gráficos y de texto. Al copiar ese logotipo en la plantilla, se crearon transformaciones que hicieron que la plantilla no funcionara correctamente en FreeCAD.
Primero, esta solución sugerida en www.freecadweb.org / ... no funciona para mí. Es por eso que busqué en la web y encontré esta discusión.
En segundo lugar, ninguna de las soluciones sugeridas anteriormente funcionó para mí, pero me pusieron en el camino correcto. La respuesta de Charlie se acercó, pero Objeto> Transformar> Desmarcar movimiento relativo> Aplicar no mostró ninguna diferencia.
Lo que funcionó para mí fue:
Funciona bien cuando uso esa plantilla en FreeCAD.
Un detalle extraño: aunque mi solución connota que los elementos de texto fueron el problema en mi caso, no puede ser tan fácil. De hecho, el documento base (en el que copié el logotipo) contiene muchos elementos de texto y no convertí ninguno de ellos. Por lo tanto, podría ser la combinación de "fuente externa" y elementos de texto. Simplemente publico este detalle como una pista para otros, que podrían tener problemas relacionados.
fuente