3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AppleScript と Perl 連携でテキストファイル処理をする( レーザー加工用svg 形式ファイルのシンプル化)

Last updated at Posted at 2021-07-12

レーザーカッター用のデータ作成の課題

 レーザー加工機は、たいがい Adobe Illustrator でデータを作成してプラグインなどで加工器を制御するのですが、ご存知のように Illustrator は価格が高いので、たまにしか使わない個人ユーザーはフリーの作図ソフト(Inkscape や LibreOffice Draw など)で作成し、svg 形式のファイルにエクスポートして、ファブ施設の Illustrator で読み込んで加工している人が多いと思います。

 ところが、この場合、カット用のパスが2重になっていたり、色々不都合が出たりしていました。

 この問題の解決策の一つが「北東北 LABVIEWユーザー会」のサイトで「レーザーカッターで役に立つメイカーのためのLabVIEW Community活用法 として紹介されていました。

 この方法と同じことをするアプリを AppleScript で作ったので紹介します。

AppleScript だけでは苦戦

 AppleScript だけで作成しようと頑張ったのですが、テキストファイル処理のところで、改行文字とかキャラクター配列とString とか何かの問題でなかなかうまくいかなかったので、テキストファイル処理の部分は Perl スクリプトを作成してそちらに任せました。(結果的に簡単だった)

プログラムソース

 前置きが長くなりましたが、作成したアプリのソースです。

まず、本体の AppleScript

modSVG.scpt
-- SVG 形式のファイルを ADOBE Illustrator 用に修正します
-- レーザーカッター用のカットパスだけを選択します。(彫刻や塗り潰しは無視されます)

set inFile to POSIX path of (choose file) -- 入力用ファイルを選択
set rExp to quoted form of "s/\\.[^\\.]*$//" -- ファイルパスから拡張子を取り除く正規表現
set cmd to "echo " & quoted form of inFile & " | sed " & rExp -- ファイルパスか拡張子を取り除く
set outFile to (do shell script cmd) & "_Mod.svg" -- 出力ファイルパス(..._Mod.svg)をセット

set cmdPath to "~/Desktop/convSVG.pl" -- perl スクリプトの場所を指定(デスクトップ)
-- set cmdPath to appPath & "Contents/Resources/Code/convSVG.pl"	-- perl スクリプトの場所を指定(アプリ内)

set cmd to "perl " & cmdPath & " <" & inFile & " >" & outFile

do shell script cmd

 perlスクリプトの場所は、環境に合わせて変更してください。
 コメントアウトしている方は、AppleScriptをAppとして保存したときに、Appの内部に Contents/Resources/ の下に Code ディレクトリを作成してその中に Perl スクリプトをコピーして内包させる場合の記述です。

テキストファイル処理のPerlスクリプト

convSVG.pl
# !/usr/bin/perl
#### use encoding 'utf8', STDOUT=>'shiftjis';
$flg = 1;
while(<>) {
	$flg = 0 if(/<svg version=.*/);
	if($flg) { printf($_);
	} else {
		printf($_) if (/<path fill="none".*>$/);
		printf($_) if (/<\/?svg.*>$/);
	}
}

使用上の注意

 この方法では、レーザー加工機用のデータのうち、カット用のパスデータだけのものに有効です。
 塗り潰しのあるパスデータや彫刻用の画像データは無視されますので、ご注意ください。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?