アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつもお世話になっております。
以下のようなスクリプトを書いて、
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

A 回答 (2件)

だいぶ時間が空いてしまいましたが……



ご使用のIllustratorのバージョンは何でしょうか?
私の場合は、Windows の 9 と 10 で試していて、やはり PathItem.Area が期待の2倍の値になってしまってました。ところが、最近機会があって Windows の CS2 で試したところ、全く同じコードで期待通りの値が返ってきました。
バージョンによって返る値が違うことについての情報・文献が見つからないので、中途半端ですみませんが、参考までに。
    • good
    • 0

http://oshiete1.goo.ne.jp/kotaeru.php3?q=2106185
この辺りは参考になりませんか?

上記回答ではPathItemsの個数にCountでなくLengthを使っているけど、その辺りの問題は?

非表示のレイヤをスキップしていないけど、非表示レイヤに何か残ってませんか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
上記回答を参考に、スクリプトを組みました。
(最初から明記するべきでした、すいません。)
Countについては、関係ないと思います。
レイヤについては、一つだけですし、存在するパスアイテムもひとつだけです。
(テスト用に、レイヤがひとつ、パスアイテムもひとつというファイルをつくって試してみています。)

お礼日時:2007/02/26 16:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!