前提条件に応じて、すべてのオブジェクトがグループ化され、それ自体が大きなグループに結合されないことがここにあります。(例では犬を利用できなかったため、猫を使用しました)。
右下に強調表示された猫、オブジェクトID 5358が単一パスであるため、後で緑色の床を追加して、後で発生するオブジェクト5364に変更しました。混乱させないでください。:)
右からボタン4(矢印1)を押すと、xml-editorが表示されます。
g5358をg-cat-5358(フィールド4)に変更して、テキストツールがこれらのオブジェクトを簡単に選択できるようにしました。これは、xml-svg-names(色、メタ、IDなど)と衝突しないほとんどの要素で機能します。 )。
左側のウィンドウで、名前が変更されたエンティティg-cat-5312が同じインデントレベルの上部にすでにあることがわかります。
Inkscapeはグループの一意のIDを整理しますが、gNUMBERの形式にする必要はありません。他の文字を混在させることができます。既存の識別子を選択しないでください。
識別子を変更した後、「setzen(set)」(5)を押して変更を確認します。ここにドイツ語のインターフェース、YMMVがあります。
svgを(demo-cats.svgとして)保存します。次にスクリプトに切り替えます。
for cat in $( grep g-cat- demo-cats.svg )
do
id=${cat//[^0-9]/}
echo $id
(head -n 53 demo-cats.svg; sed -n "/$cat/,/^ <\/g>/p" demo-cats.svg; echo "</svg>" ) > cat-${id}.svg
done
それは何をするためのものか?興味深いセクションの始まりである「g-cat-」パターンを探します(grepで検索)。
id=${cat//[^0-9]/}
式からbashのIDを抽出します。Echoはそれを画面に出力し、何か問題が発生した場合にバグを見つけるのに役立ちます。head -n 53 demo-cats.svgは、すべてのsvg-boilerplateを含むsvgから最初の53行を取得します。異なるsvg形式(inkscape、compressed、normal svg、inkscape-compressed)での設定によって、これは異なる場合があります。ではnl demo-cats.svg | less
、あなたができるn個 umerate リットルの INESを、あなたのケースでは、右切削点を見つけるために。
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<g
^この部分までは、行を含める必要があります。
次のコマンドはs tream ed itor sedで行われます:sed -n "/$cat/,/^ <\/g>/p" demo-cats.svg;
言う(-n)印刷なし(しかし)猫グループを検索します。ただし、インデントレベル2の終了タグgまで</g>
です。 Inkscapeの設定を変更します。次に、svgの終了タグを追加しますecho "</svg>"
。出力をファイル「cat- $ id.svg」に書き込みます(これにより、既存のファイルがサイレントに上書きされます)。
したがって、2つのファイルcat-5312.svgとcat-5364.svgができあがります。
より洗練されたソリューションは、xmlstarletまたはxmlファイルを検索および編集するために作成された同様のツールを使用して可能になるはずです。残念ながら、私はそれに慣れておらず、10分のドキュメントを読んだ後、動作しませんでした。最初にグループの名前を変更する必要はありません。