Luaスクリプトのサンプル

Luaスクリプトプラグインで動作するスクリプトのサンプルを紹介します。

付箋の新規作成

データファイルから行ごとに読込、新規の付箋を作成する例です。 例えばデータファイルとして次のようなファイルがあったとして

C:\Users\taro\Documents\data.txt

山田 太郎さん 注文確認の電話
鈴木 花子さん 商品を届ける
田中 次郎さん 問い合わせの回答

次のようにするとファイルの行数分付箋を新規作成し 各付箋にファイルの内容を登録します。

x = 'ファイルからデータを読み込んで新規の付箋を作成する'
exec = exec or false -- 一度だけ実行させるフラグ
function proc()
  new = f_GetMe()
  file = io.open("C:\\Users\\taro\\Documents\\data.txt", "r")
  for line in file:lines() do
    new = new:NewFusen(1) -- 1は雛形番号
    new.txt = line
  end
  file:close()
end
if exec == false then
  proc()
  exec = true
end

付箋の作成をスクリプトで行う場合の注意点としては スクリプトの実行はCFusenの起動、移動、サイズ変更、付箋の保存などを 行った都度にされますので、何度もスクリプトが実行される 事を考慮しておく必要がある事です。

コッホ曲線

図形を描画するにはグラフィックオブジェクトと GDIオブジェクトを取得して使います。

x = "コッホ曲線" 
f_SetTitle("Luaスクリプト:コッホ曲線")
gra = f_Graphics()
gdi = gdi or f_Gdi()
maxLevel = 4
p = p or gdi:Pen(gdi:Color(0,255,0))
deg60 = 60 * math.pi / 180
function rotate(theta, x, y)
  local sin, cos  = math.sin(theta), math.cos(theta)
  return cos * x - sin * y, sin * x + cos * y
end
function KochCurve(x1, y1, x2, y2, level)
  if level == maxLevel then
    gra:DrawLine(p, x1, y1, x2, y2)
  else
    local vx, vy = (x2 - x1) / 3, (y2 - y1) / 3 
    local ax, ay = x1 + vx, y1 + vy
    local v1x, v1y = rotate(deg60, vx, vy)
    local bx, by = ax + v1x, ay + v1y
    local v2x,v2y = rotate(-deg60, vx, vy)
    local cx, cy = bx + v2x, by + v2y
    KochCurve(x1, y1, ax, ay, level + 1) 
    KochCurve(ax, ay, bx, by, level + 1)
    KochCurve(bx, by, cx, cy, level + 1)
    KochCurve(cx, cy, x2, y2, level + 1)
  end
end

w = f_GetClientWidth()
h = f_GetClientHeight()
f_SetBackColor(gdi:Color(50, 15, 35))

d = w / 6

x1, y1 = w / 2, 20
x2, y2 = d, h - 2 * d + 20
x3, y3 = w - d, h - 2 * d + 20

KochCurve(x1, y1, x2, y2, 0)
KochCurve(x2, y2, x3, y3, 0)
KochCurve(x3, y3, x1, y1, 0)

コッホ曲線

図形描画での注意点は重い処理は行わない事です、 Luaスクリプトは速くありません。

その他のサンプル

その他のサンプルはリンク先を参照してください。

Luaスクリプト

 
comments powered by Disqus