23)EXCELの行をIllustrator小組に流し込む

| コメント(0)

EXCELの行をコピーしIllustratorの選択した小組に流し込みます。テキストフレームがエリアテキストの場合はオーバーフローすれば収まるように長体がかかります。改行を含む文字の場合の長体処理はしていません。
小組のテキストフレーム1つ1つにIllustratorのレイヤーパレットで"A","B","C","D"・・・と名前をあらかじめつけておきます。

ex-ai01.jpg

※レイヤーに名前を付けるようにレイヤーパレット内のテキストをダブルクリックして名前を付ける事が出来ます。

このテキストフレームがEXCELの列の"A","B","C","D"・・・と関連づきます。

ex-ai02.jpg

※EXCELのA列の文字がIllustratorの"A"と名前を付けたテキストフレームに流し込まれます。

準備が終わったらIllustratorの小組を選択し、EXCELの行をコピーしてからスクリプトを実行してみてください。

global textFlameList
set myRec to the clipboard
set textFlameList to {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}

set OriginalDelimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to {tab}
set myRec to text items of myRec

tell application "Adobe Illustrator"
	tell document 1
		set mySele to selection
		repeat with selObj in mySele
			my getTextFrameIndex(selObj)
		end repeat
		repeat with N from 1 to count myRec
			my NAGASIKOMI(item N of textFlameList, item N of myRec)
		end repeat
	end tell
end tell
set AppleScript's text item delimiters to OriginalDelimiters

on getTextFrameIndex(selObj)
	tell application "Adobe Illustrator"
		if class of selObj is group item then
			set myCount to count page items of selObj
			repeat with N from 1 to myCount
				my getTextFrameIndex(page item N of selObj)
			end repeat
		else if class of selObj is text frame then
			set myName to name of selObj
			set itemNum to my getItemNum(myName)
			if itemNum > 0 then
				set item itemNum of textFlameList to selObj
			end if
		end if
	end tell
end getTextFrameIndex

on getItemNum(myName)
	return offset of myName in "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
end getItemNum

on NAGASIKOMI(targetTextFrame, inputStr)
	if targetTextFrame is 0 then
		return
	end if
	tell application "Adobe Illustrator"
		set contents of targetTextFrame to inputStr
		if kind of targetTextFrame is area text then
			if my overflow(targetTextFrame) is true then
				set mySCL to horizontal scale of paragraph 1 of targetTextFrame
				my choutai(targetTextFrame, mySCL)
			end if
		end if
	end tell
end NAGASIKOMI

on choutai(targetTextFrame, mySCL)
	set mySCL to mySCL - 3
	tell application "Adobe Illustrator"
		set horizontal scale of paragraph 1 of targetTextFrame to mySCL
	end tell
	if my overflow(targetTextFrame) is true then
		my choutai(targetTextFrame, mySCL)
	end if
end choutai

on overflow(tFrame)
	set OriginalDelimiters to AppleScript's text item delimiters
	set AppleScript's text item delimiters to ""
	tell application "Adobe Illustrator"
		set myLastP to (contents of every paragraph of tFrame) as string
		set myLastL to (contents of every line of tFrame) as string
		set AppleScript's text item delimiters to OriginalDelimiters
		if myLastP is not myLastL then
			set AppleScript's text item delimiters to OriginalDelimiters
			return true
		else
			set AppleScript's text item delimiters to OriginalDelimiters
			return false
		end if
	end tell
end overflow
Comments are nofollow setting

コメントする

エントリー一覧

OpenID対応しています OpenIDについて
Powered by Movable Type 8.0.2
漢字イラストロジック-脳トレ京
FREE ONLINE SUDOKU