Saya telah berjuang dengan ini untuk sementara waktu, dan sepertinya tidak dapat menemukan jawaban (yang bekerja) di mana saja. Saya memiliki file SVG yang terlihat seperti ini:
<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>
Saya ingin menghapus transform="..."
garis tetapi gambar saya tetap di tempat saya meletakkannya (di InkScape). Jika saya menghapus transformasi secara manual, gambar beralih ke bagian lain dari layar (seperti yang diharapkan), tetapi saya harus menyingkirkan transformasi secara bersamaan dan, pada saat yang sama, memiliki gambar tetap persis di tempat yang saya inginkan. Apakah ada cara untuk menghapus / meratakan transformasi ke jalur koordinat sendiri? (Satu-satunya transformasi yang harus saya tangani adalah menerjemahkan dan skala, tidak ada matriks.)
Jawaban:
Cara menghapus transformasi di Inkscape
Cara memindahkan semua objek sama sekali tanpa membuat atribut transformasi lainnya
Pergi ke Objek -> Transform
Di panel Transform
Hapus centang Pindah relatif dan centang Terapkan ke setiap objek secara terpisah
sumber
Saya mencari tahu apa masalahnya. Aku berharap tidak harus menggunakan jawaban Robert, meskipun aku senang mendapat konfirmasi bahwa itu akan berhasil! Pada akhirnya jawaban Duopixel sebenarnya yang paling dekat, meskipun ternyata ada hal lain yang terjadi juga.
Saat Anda bekerja dengan jalur berbeda di dokumen Inkscape, saya yakin perilaku defaultnya adalah mengelompokkannya di bawah
<svg:g.../>
tag. Saat memodifikasi jalur dalam grup, Inkscape akan secara otomatis menambahkan transformasi ke grup untuk mewakili perubahan ini. Namun, jika Anda membuka editor XML dan menyeret jalur Anda di luar<svg:g.../>
tag dan menjadikannya<svg:path.../>
tag sendiri , Inkscape bebas untuk mengedit setiap poin sesuai keinginan. Pada akhirnya itu ternyata menjadi masalah pengelompokan meskipun saya hanya bekerja dengan satu jalur! Semoga ini bisa membantu orang lain dalam situasi serupa.sumber
sumber
Ada ekstensi inkscape yang disebut Terapkan Transforms yang menghitung ulang jalur dengan transformasi mereka. Inilah yang sebenarnya saya cari.
Setelah menginstalnya, Anda akan menemukan menu itu di bawah Extensions> Modify Path> Apply Transform .
kredit: Forum Inkscape> Hapus semua transformasi sambil tetap di tempat
sumber
Untuk kelompok, pengelompokan ulang dapat melakukan pekerjaan dengan cepat. Pilih grup dan tekan Ctrl + Shift + G (degroup) dan kemudian Ctrl + G (grup).
Untuk beberapa objek yang memiliki masalah yang sama, spiral dan bintang misalnya, cara cepat adalah dengan menekan Ctrl + Alt + C (stroke ke path) - ini mengubah objek menjadi path murni dan menghapus semua atribut ekstra, seperti sodipodi: cx, sodipodi: revolusi dan sebagainya.
sumber
Buka svg Anda di Inkscape :
Dengan cara ini Anda akan menyingkirkan transformasi yang diterapkan ke grup dan mereka akan ditransfer ke jalur yang terkandung dalam grup ini.
sumber
Dalam pengalaman saya, jika Anda menggunakan Inkscape, cukup untuk memindahkan elemen path sedikit (misalnya dengan tombol kursor), dan Inkscape akan menghapus atribut transform dan menyesuaikan data path yang sesuai. (Mengganggu jika Anda benar-benar ingin mempertahankan atribut transformasi.)
Jadi, Anda cukup memilih jalur (pastikan itu jalur dan bukan grup sekitarnya), tekan tombol kursor kanan dan kiri, dan Anda selesai.
sumber
<g>
dan saya ingin tetap mentransformasikannya pada<g>
.Sementara saya lebih suka Inkscape, Affinity Designer (~ $ 40 / Mac) menyelamatkan saya berjam-jam ketika bekerja dengan Android Vector Drawables.
Buka SVG, File -> Ekspor -> SVG -> Lainnya -> Transformasi Flatten bekerja dengan baik.
sumber
SVGO adalah alat baris perintah sumber terbuka yang sangat baik untuk ini dan banyak optimisasi lainnya. Ada UI web online yang juga sangat baik untuk disebut SVGOMG
Opsi yang relevan dalam hal ini adalah
moveGroupAttrsToElems
(SVGOMG:Move group attrs to elements
) untuk memindahkantransform
atribut dari kelompok untuk elemen jalan, ditambahconvertPathData
(SVGOMG:Round/rewrite paths
) untuk meratakantransform
ked
.sumber
Harus disebutkan bahwa ada mode "Dioptimalkan" dalam preferensi:
Preferensi Inkscape> Transforms> Transformasi Store> Dioptimalkan
Yang seharusnya meminimalkan terjadinya
transform
atribut sebanyak mungkin, (tetapi tidak).Ini sepertinya tetap aktif secara default.
Menurut diskusi , satu contoh di mana mode Dioptimalkan ini tidak memiliki semangat adalah ketika halaman diubah ukurannya . Ini menyebabkan
translate
transformasi diterapkan pada<g>
elemen layer . Tampaknya mengevakuasi anak-anak ke lapisan lain adalah solusi terbaik saat ini.sumber
translate
transformasi menjengkelkan di setiap lapisan, coba buka.svg
file dalam editor teks dan memanipulasi atribut tinggi dan lebar yang muncul di bagian atas.Inkscape memiliki opsi untuk menghapus data transformasi tetapi tetap membiarkan nilai objek tidak dimodifikasi.
Di Inkscape, pilih objek dan menu 'Path', 'Sederhanakan'. Sekarang, Anda akan menghapus transformasi.
sumber
Dalam hal ini tambahkan saja terjemahan ke nilai m untuk setiap anak jadi -10.254587 + 10.75 = -0.504587 dan -308.96875 + 345.43597 = 36.46722.
Karena semua istilah dalam contoh adalah relatif (yaitu huruf kecil) itu saja. Jika ada yang absolut (huruf besar) misalnya M atau C mereka harus disesuaikan juga.
Untuk skala Anda pada dasarnya akan melipatgandakan semua nilai anak dengan skala.
sumber
sumber
<g>
dengantransform
atribut tetap seperti itu. Juga, objek saya (seperti yang ditunjukkan pada pertanyaan di sini) sudah menjadi path.Untuk menghapus atribut transform dari
g
elemen (grup) di Inkscape, Anda bisa memindahkan grup ke tempat terakhirnya, memisahkan grup dan lalu mengelompokkan semua elemen. Sekarang grup baru telah dibuat, dan jika Anda tidak memindahkannya lagi, itu tidak akan mendapatkan atribut transformasi yang melekat padanya.sumber
Jika ada yang mendarat di sini mencari solusi untuk melakukan ini di Sketch 3, pilih layer dan kemudian klik pada Layer-> Paths-> Flatten.
sumber
Menemukannya:
*: Atau setidaknya tempatkan benda-benda di tempat yang Anda butuhkan, relatif ke sudut kiri atas halaman. Sangat disayangkan bahwa SVG koordinat referensi sudut kiri atas, sementara Inkscape mengubah ukuran halaman relatif ke kiri bawah!
sumber
Saya dapat menyingkirkan
matrix(...)
transformasi (karena mirroring) dengan menggabungkan jalan dengan persegi panjang dan kemudian menghapus node dari persegi panjang. Bagiantranslate(...)
tetap.sumber
Dalam kasus saya, menabung sebagai SVG yang dioptimalkan memecahkan masalah. Jadi dalam Inkscape gunakan:
File -> Simpan sebagai ... -> SVG Dioptimalkan.
sumber
transform
atribut tidak didukung oleh Android Studio.Ini berfungsi jika Anda menggunakan Inkscape:
Dalam semua kasus yang saya coba, ini telah menghapus atribut transform apa pun. Tidak yakin apakah itu berfungsi untuk SVG yang lebih kompleks.
sumber
Saya mencoba solusi yang diposting di sini, yaitu untuk menghapus tag grup di file SVG dan membukanya kembali di Inkscape (0.48.3.1 dalam kasus saya). Sayangnya, setelah saya menerjemahkan path lagi menggunakan mode pilih dan ubah (F1) dan menyimpannya, tag grup muncul kembali! Inkscape menyimpan semua transformasi yang diterapkan ke jalur di elemen grup sekitarnya. Kecuali Anda menggunakan alat pemilihan jalur-simpul (F2), tekan ctrl + a dan pindahkan simpul jalur ke tempat yang tepat. Setelah saya melakukan ini sebagai gantinya dan menyimpan setelahnya Inkscape tidak menambahkan tag grup, karena terjemahan ini diterapkan langsung ke model jalur. Semoga ini membantu.
sumber
Dalam kasus saya grup sebenarnya disebabkan oleh lapisan. Menghapus semua lapisan dalam dokumen menghapus grup dan mentransformasikan (mungkin dikombinasikan dengan objek ungrouping dan menyusun kembali mereka dll seperti dalam Menghapus transformasi dalam file SVG (jawaban-35490189 dari @Charlie di atas))
sumber
Masalah khusus saya adalah dengan simbol yang didefinisikan di luar halaman, sehingga membutuhkan transformasi untuk ditampilkan pada halaman.
Untuk memindahkan simbol ke halaman tanpa memerlukan transformasi, saya harus melalui langkah-langkah ini di Inkscape:
sumber
Ini tampaknya acak, tetapi tidak ada yang saya coba bekerja, jadi di sini Anda pergi orang lain secara acak. Beberapa jalur saya memiliki semacam margin di sekitar mereka yang hanya bisa dilihat ketika memilihnya ( ). Saya pikir ini dibuat ketika saya menyisipkan lapisan dari file inkscape lain dan memutarnya 90 derajat. Ini membuat pola mengisi pada bentuk memiliki transformasi yang berbeda (garis berjarak lebih jauh). Itu juga membuat menyelaraskan objek tidak berfungsi seperti yang diharapkan. Menggunakan Terapkan Transform yang disebutkan oleh @Piotr_cz memperbaiki masalah transformasi, tetapi margin aneh tetap. Saya tidak sengaja menyingkirkannya dengan mengubah Blur on Stroke ke nilai apa pun dan mengubahnya kembali ke nol.
sumber
Entah bagaimana saya tidak beruntung dengan pendekatan apa pun. Jika ada
<defs>
bagian dalam svg Anda dan penggunaan seperti ini:Anda mungkin harus menghapus semua penggunaan dan mengeluarkan semuanya dari bagian defs. Kemudian, Anda dapat menggunakan inkscape untuk menempatkan semuanya dengan cara yang benar dan kemudian menerapkan transformasi menggunakan plugin yang disebutkan. Semoga ini bisa membantu seseorang.
sumber
Saya sudah memiliki masalah ini selama bertahun-tahun. Solusinya jelas untuk dapat bermain secara dinamis dengan transformasi di browser, jika tidak akan "diperbaiki" di inkscape.
Seorang pengguna Mc di forum Inkscape memberi saya solusi ini .
Solusi ini membangun transformasi saat ini antara elemen SVG dan elemen root SVG-nya, dan kemudian mengembalikan set lengkap informasi BBox berdasarkan total transformasi.
Mungkin juga untuk dengan mudah mengubah elemen penghitungan mana yang relatif, jika Anda ingin melakukan pekerjaan browser antara dua bagian dari file SVG yang sama.
Akhirnya saya benar-benar dapat memiliki viewport panning SVG.
sumber
Inkscape 1.0 di Kubuntu 20.04
Meskipun utas ini agak lama, saya ingin memposting pengalaman / solusi saya. Saya menemukan masalah ini ketika mencoba membuat template untuk meja kerja TechDrawing FreeCAD. Template ini tidak boleh mengandung transformasi apa pun.
Dalam kasus saya, saya harus menambahkan logo perusahaan dari file .svg eksternal (seluruhnya dibuat dengan Inkscape). Logo itu mengandung elemen grafis dan teks. Ketika menyalin logo itu ke dalam templat, transformasi dibuat, yang menyebabkan templat tersebut tidak berfungsi dengan benar di FreeCAD.
Pertama, solusi ini disarankan di www.freecadweb.org / ... tidak berfungsi untuk saya. Itu sebabnya saya mencari di web dan menemukan diskusi ini.
Kedua, tidak ada solusi yang disarankan di atas yang berhasil bagi saya, tetapi mereka menempatkan saya di jalur yang benar. Jawaban Charlie mendekati, tetapi Object> Transform> Hapus centang relatif bergerak> Terapkan tidak menunjukkan perbedaan.
Apa yang berhasil untuk saya adalah:
Bekerja dengan baik ketika saya menggunakan template itu di FreeCAD.
Satu detail aneh: Meskipun solusi saya mengonotasikan bahwa elemen teks adalah masalah dalam kasus saya, tidak mungkin semudah itu. Bahkan, dokumen dasar (yang menjadi tujuan saya menyalin logo) berisi banyak elemen teks, dan saya tidak mengonversinya. Jadi bisa jadi kombinasi dari "sumber eksternal" dan elemen teks. Saya hanya memposting detail ini sebagai petunjuk kepada orang lain, yang mungkin memiliki masalah terkait.
sumber