DRAWはオブジェクトが複雑になると「オブジェクトが複雑すぎて64kバイトを越えています」というようなメッセージを出して処理を拒みます。その64kがいつ出るのかを試すために、○を描いては結合するという処理を延々繰り返します。
スクリプト的には単純ですが、せっかくのグラフィックソフト、少しは図形にしようとスクリプト中にも埋めてあるサイト(フラクタル図形を紹介しています。)でシダの葉のような形が出来る式を拾ってきて組み込みました。
注意! ベンチマーク的な動作である上に、浮動小数点演算や比較処理を多用していますので、遅いです。1000個の○を書いてエラーを発生させるために小一時間必要です。
実行結果は後処理(背景の追加、塗りつぶし、輪郭の調整など)を行っています。スクリプトの実行結果とは異なります。
警告!
このスクリプトはエラーを発生させるために書いたものです。
'Try 64k! 'Copyright by Albatross 'Ver 1.00 2000/12/5 #DEFINE OBJECT_DRAW "CorelDRAW.Automation.9" global const e1 as double =0.5 global const e2 as double =0.57 global const e3 as double =0.408 global const e4 as double =0.1075 global const f1 as double =0 global const f2 as double =-0.036 global const f3 as double =0.0893 global const f4 as double =0.27 randomize sub plot(imax as long) on error goto eh 'Alexander F. Walz 'Maple V and Fractals 'http://www.math.utsa.edu/ftp/gokhman/mirrors/maple/frame03.htm dim x, y, xn, yn, z as double dim px,py,pnx,pny,c as long x = e1 for c = 0 to imax z=rnd() if z<=0.02 then xn = e1 yn = 0.27*y+f1 elseif z<=0.17 then xn = -0.139*x+0.263*y+e2 yn = 0.246*x+0.224*y+f2 elseif z<=0.3 then xn = 0.17*x-0.215*y+e3 yn = 0.222*x+0.176*y+f3 else xn = 0.781*x+0.034*y+e4 yn = -0.032*x+0.739*y+f4 endif px=int(xn*1000000) py=int(yn*1000000) WITHOBJECT OBJECT_DRAW .CreateEllipse py, px, py+1000, px+1000, 0, 0, FALSE if c<>0 then .selectallobjects .combine endif END WITHOBJECT x = xn y = yn next c escl: exit sub eh: message "Program aborted in counter = " & cstr(c) resume at escl end sub WITHOBJECT OBJECT_DRAW .SuppressPainting TRUE plot(12500) .ResumePainting .FileSave "leaf.CDR", 1, 0, 0, 0 message "終了しました" END WITHOBJECT