2011-07-19 9 views
5

Po załadowaniu warstwowych plików SVG do programu Illustrator wszystkie warstwy działają tak, jak powinny, ale zawsze znajdują się pod nową warstwą; "Warstwa 1", której nie określiłem.Tworzenie górnych warstw programu Illustrator w SVG

Jak utworzyć plik SVG, w którym górne warstwy są również górną warstwą w programie Illustrator?

+0

Czy tworzysz swoje SVG w Illustratorze? Ponieważ w przeciwnym razie można edytować źródło SVG w edytorze tekstowym (to tylko XML) w celu zmiany warstw. – allanberry

Odpowiedz

6
  1. Utwórz plik w programie Illustrator, który ma organizację, jak chcesz.
  2. Zapisz SVG z Illustratora jako "a.svg".
  3. Ponownie otwórz plik SVG w programie Illustrator.
    Hej, wszystkie moje warstwy zostały przegrupowane na Warstwie 1!
  4. Napraw organizację.
  5. Zapisz SVG z Illustratora przy opcji "Zachowaj możliwości edycji w Illustratorze" zaznaczonej jako "b.svg".
  6. Ponownie otwórz plik SVG w programie Illustrator.
    Yay, Warstwy zostały zachowane!
  7. Diff a.svg i b.svg, aby zobaczyć, jakie dodatkowe metadane zapisuje program Illustrator.
  8. Naśladuj te dane we własnym pliku.
    Płacz, gdy zdajemy sobie sprawę, że rozwiązaniem jest olbrzymi zastrzeżony obiekt typu blob (element <i:pgf>).
  9. Poddaj się i zdecyduj, że tak naprawdę nie ma to większego znaczenia.
+0

Widziałem kod BLOB, ale liczyłem na lepsze rozwiązanie. Problem polega na tym, że warstwy mają duże znaczenie w moim obecnym projekcie, ale myślę, że będę musiał znaleźć inny sposób. Ten dodatkowy kod "Zachowaj ilustrator ..." nie jest tego wart. Dziękuję! –

2

To rzeczywiście ma znaczenia dla mnie, więc przestał płakać, spędził kilka godzin i scenariusza tego rozwiązania:

  • pobrać skrypty: https://github.com/JcBernack/IllustratorScripts/archive/master.zip
  • umieścić folder "Fix Layers SVG" w standardowy folder skryptów programu Illustrator. Gdzie to zależy od twojej instalacji i języka, mój jest na:
    C: \ Program Files \ Adobe \ Adobe Illustrator CS6 (64 Bit) \ Presets \ de_DE \ Skripten
  • Uruchom program Illustrator i załaduj SVG, gdzie warstwy są teraz grupami w nowej "Warstwie 1".
  • Przejdź do Plik-> Skrypty-> Napraw krawędzie SVG-> FixSvgLayers
  • Yay! Wszystkie grupy są teraz rzeczywistymi warstwami, a "Warstwa 1" zniknęła na dobre.

Nieco więcej informacji:

  • „FixSvgLayers” konwertuje wszystkie grupy w „warstwa 1” z powrotem do warstwy, przenosi je do głównego dokumentu i usuwa teraz pusta „warstwa 1”.
  • "GroupToLayers" konwertuje wszystkie grupy w obrębie aktywnej warstwy na warstwy, bez przenoszenia ani usuwania czegokolwiek.
  • Oba skrypty monitują o "głębokość rekursji", która określa, ile poziomów grup-grup-grup powinno zostać przekonwertowanych na pod-pod-pod-warstwy.
  • Trzeci skrypt (ConvertGroupsIntoLayers) jest właśnie potrzebny dwóm pozostałym, wywołanie go z menu powoduje otwarcie monitu, ale nic nie robi.

Podczas otwierania SVG wszystkie rzeczywiste warstwy są grupami w nowej "Warstwie 1". Mogą one zostać przekształcone z powrotem bez niejednoznaczności. Pod-warstwy są jednak problematyczne, ponieważ nie ma informacji pozwalających odróżnić rzeczywiste grupy od grup, które powinny być podwarstwami (jeśli jest, dajcie mi znać!). Aby obejść ten problem, mój skrypt monituje o głębokość rekursji i konwertuje wszystkie grupy na (pod) warstwy na tej głębokości.

W moim przypadku miałem trzy warstwy, z których jedna była tylko pojemnikiem na więcej pod-warstw. Aby odzyskać oryginalną strukturę warstw wykonałem FixSvgLayers z głębokością 0, następnie wybrałem warstwę kontenera i wykonałem polecenie "GroupsToLayers" o głębokości 0.

Jeśli wszystkie trzy warstwy były obiektami "kontenerowymi" wykonującymi polecenia FixSvgLayers za pomocą głębokość 1 wystarczyłaby, aby odzyskać właściwą strukturę.

Jeśli nie chcesz, aby jakakolwiek grupa i każda grupa miała być konwertowana na (pod) warstwę, wystarczy wpisać wystarczająco wysoką liczbę jako głębokość rekursji.

Powiązane problemy