Создание верхних слоев Illustrator в SVG - PullRequest
5 голосов
/ 19 июля 2011

Когда я загружаю свои многослойные файлы SVG в Illustrator, все слои работают так же, как и должны, но они всегда располагаются под новым слоем;«Слой 1», который я не указал.

Как мне создать SVG, где мои верхние слои также становятся верхним слоем в Illustrator?

Ответы [ 2 ]

6 голосов
/ 22 июля 2011
  1. Создайте файл в Illustrator, в котором есть нужная организация.
  2. Сохраните SVG из Illustrator как "a.svg".
  3. Повторно открыть файл SVG в Illustrator.
    Привет, все мои слои перегруппированы под Layer 1!
  4. Исправить организацию.
  5. Сохраните SVG из Illustrator с параметром «Сохранить возможности редактирования Illustrator», отмеченным как «b.svg».
  6. Повторно открыть файл SVG в Illustrator.
    Да, слои сохранились!
  7. Различайте a.svg и b.svg, чтобы увидеть, какие дополнительные метаданные сохраняет Illustrator.
  8. Подражайте этим данным в вашем собственном файле.
    Плачь, когда поймешь, что решение - это огромный патентованный объект (элемент <i:pgf>).
  9. Сдавайся и реши, что на самом деле это не имеет большого значения.
2 голосов
/ 21 октября 2014

Это действительно важно для меня, поэтому я перестал плакать, потратил несколько часов и написал это решение:

  • Скачать скрипты: https://github.com/JcBernack/IllustratorScripts/archive/master.zip
  • Поместите папку «Fix SVG Layers» в стандартную папку сценариев Illustrator. Где это зависит от вашей установки и языка, мой находится по адресу:
    C: \ Program Files \ Adobe \ Adobe Illustrator CS6 (64-разрядная версия) \ Presets \ de_DE \ Skripten
  • Запустите Illustrator и загрузите SVG, где все фактические слои теперь являются группами внутри нового «Слоя 1».
  • Перейдите в Файл-> Скрипты-> Исправить слои SVG-> FixSvgLayers
  • Ура! Все группы теперь являются настоящими слоями, и «Слой 1» исчез навсегда.

Немного больше информации:

  • «FixSvgLayers» преобразует все группы в «Слой 1» обратно в слои, перемещает их в корень документа и удаляет теперь пустой «Слой 1».
  • «GroupsToLayers» преобразует все группы в текущем активном слое в слои, не перемещая и не удаляя что-либо.
  • Оба сценария запрашивают «глубину рекурсии», которая указывает, сколько уровней групп-групп-групп следует преобразовать в под-под-подуровни.
  • Третий скрипт (ConvertGroupsIntoLayers) просто необходим двум другим, его вызов из меню открывает подсказку, но ничего не делает.

При открытии SVG все фактические слои являются группами внутри нового «Слоя 1». Они могут быть преобразованы обратно без двусмысленности. Однако подслои проблематичны, потому что нет информации, чтобы отличить фактические группы от групп, которые должны быть подуровнями (если есть, пожалуйста, дайте мне знать!). В качестве обходного пути мой сценарий запрашивает глубину рекурсии и преобразует все группы в (под) слои в пределах этой глубины.

В моем случае у меня было три слоя, один из которых был просто контейнером для дополнительных подслоев. Чтобы вернуть исходную структуру слоя, я выполнил FixSvgLayers с глубиной 0, затем выбрал слой контейнера и выполнил «GroupsToLayers» с глубиной 0.

Если бы все три слоя были "контейнерными" слоями, для выполнения правильной структуры было бы достаточно выполнения FixSvgLayers с глубиной 1.

Если вам не нужны какие-либо группы и каждая группа должна быть преобразована в (под) слой, просто введите достаточно большое число в качестве глубины рекурсии.

...