- 締切済み
Illustratorの面積測定スクリプトが変な挙動をします
いつもお世話になっております。 以下のようなスクリプトを書いて、 Illustratorの図形の面積を求めようと思っています。 レイヤごとに、中にあるパスアイテムの面積を総計したものを、 エクセルのシートに書き出すスクリプトです。 一応、動作はするのですが、以下の2点について、 よくわからない挙動をします。 1. 面積が約2倍になってでてくる。 テストで、10 mm × 10 mm の四角形を作り、 その面積を測ったのですが、約200になりました。 何故か、約2倍になってしまいます。 2. 多角形の面積がマイナスで出てくる。 面積を測りたい実際の図形が多角形です。 スクリプティング・ガイドは読んだのですが、 PathItem の Area の「四角形~」というのがよくわかりません。 上の、2点について、回答頂けますよう、 よろしくお願い致します。 Sub レイヤごとのパスアイテムの面積_作成中() Dim illApp As New Illustrator.Application Dim myDoc As Illustrator.Document Dim mm As Single, areaVal As Single Dim i As Integer Dim p As PathItem Dim l As Layer Set myDoc = illApp.ActiveDocument mm = 2.834645 i = 1 For Each l In myDoc.Layers areaVal = 0 If l.PathItems.Count <> 0 Then For Each p In l.PathItems areaVal = areaVal + p.Area Next p Range("A" & i).Value = l.Name Range("B" & i).Value = areaVal / mm / mm i = i + 1 End If Next l End Sub
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- hocky
- ベストアンサー率0% (0/0)
だいぶ時間が空いてしまいましたが…… ご使用のIllustratorのバージョンは何でしょうか? 私の場合は、Windows の 9 と 10 で試していて、やはり PathItem.Area が期待の2倍の値になってしまってました。ところが、最近機会があって Windows の CS2 で試したところ、全く同じコードで期待通りの値が返ってきました。 バージョンによって返る値が違うことについての情報・文献が見つからないので、中途半端ですみませんが、参考までに。
- chie65536
- ベストアンサー率41% (2512/6032)
http://oshiete1.goo.ne.jp/kotaeru.php3?q=2106185 この辺りは参考になりませんか? 上記回答ではPathItemsの個数にCountでなくLengthを使っているけど、その辺りの問題は? 非表示のレイヤをスキップしていないけど、非表示レイヤに何か残ってませんか?
お礼
ありがとうございます。 上記回答を参考に、スクリプトを組みました。 (最初から明記するべきでした、すいません。) Countについては、関係ないと思います。 レイヤについては、一つだけですし、存在するパスアイテムもひとつだけです。 (テスト用に、レイヤがひとつ、パスアイテムもひとつというファイルをつくって試してみています。)