みたにっき@はてな

三谷純のブログ

Illustrator Script

Illustratorで作図した展開図を折紙展開図エディタORIPAに渡したくて、そのためのScriptを作ってみました。

// Script for Illustrator CS5  
if ( app.documents.length > 0 && app.activeDocument.pathItems.length > 0 ) {
	var doc = app.activeDocument;
	var exportLineCount = 0;

	var saveFile = new File("C:/test.cp"); // specify a file name
	saveFile.open("w");
	
	for (var i = 0; i < doc.pathItems.length; i++ ) {

		var pathRef = doc.pathItems[i];	
		if(pathRef.pathPoints.length < 2) continue;	

		var lineType = 0;
		if(pathRef.strokeColor.red < 128 && pathRef.strokeColor.blue < 128 && pathRef.strokeColor.green < 128) lineType = 1;
		if(pathRef.strokeColor.red > 128 && pathRef.strokeColor.blue < 128 && pathRef.strokeColor.green < 128) lineType = 2;
		if(pathRef.strokeColor.red < 128 && pathRef.strokeColor.blue > 128 && pathRef.strokeColor.green < 128) lineType = 3;

		for(var j = 0; j < pathRef.pathPoints.length-1; j++) {
			var x0 = pathRef.pathPoints[j].anchor[0];
			var y0 = pathRef.pathPoints[j].anchor[1];
			var x1 = pathRef.pathPoints[j+1].anchor[0];
			var y1 = pathRef.pathPoints[j+1].anchor[1];
			saveFile.write(lineType + " " + x0 + " " + y0 + " " + x1 + " " + y1 + "\n");
			exportLineCount++;
		}
		if(pathRef.closed) {
			var x0 = pathRef.pathPoints[pathRef.pathPoints.length-1].anchor[0];
			var y0 = pathRef.pathPoints[pathRef.pathPoints.length-1].anchor[1];
			var x1 = pathRef.pathPoints[0].anchor[0];
			var y1 = pathRef.pathPoints[0].anchor[1];
			saveFile.write(lineType + " " + x0 + " " + y0 + " " + x1 + " " + y1 + "\n");
			exportLineCount++;
		}
	}
	saveFile.close();	
	alert(exportLineCount + "本のラインを出力しました");
}   

参考:
ADOBE ILLUSTRATOR CS5
SCRIPTING REFERENCE: JAVASCRIPT
http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/pdf/illustrator/scripting/illustrator_scripting_reference_javascript_cs5.pdf


ORIPAで読み込み可能な .cp 形式でファイル出力するものですが、他の形式での出力にも応用できると思います。


こんな風に .cp 形式で保存できると、


↓Illustoratorでこんな風に展開図を作図したものを


↓ORIPAにそのままインポートできるので


↓折りたたんだ後の様子をシミュレーションできます(一部ちょっとノイズが入っているけど。。)


↓ひっくり返すとこんな感じ。


↓もっと連結すると・・・


↓こんな感じになります。

ここまでくると、実際に折るのはけっこう大変なのですぐにCGイメージで確認できるのは便利。