MathematicaPlayerのフロントエンドを呼び出す

[pukiwiki]
プリンタのインクリボン待ち中。

-[[無料のMathematica Player + IronRuby でグラフィック出力(hirax.net::inside out):http://www.hirax.net/diaryweb/2009/11/05.html#8488]]
当blogの記事を取り上げて頂きました。
Ruby(Rails)も憶えたいなあと思っているのですが、なかなか手が出せないでおります(^^;

その後、IronPythonから、MathematicaPlayerのフロントエンドを呼び出す方法が判ったのでメモ。

 Plot3Dなどを使って描画した3Dグラフ等を、マウスで自由にグリグリと向きを変えて見ることが出来るようになります。
[/pukiwiki]

まずは いろいろと初期化
カーネルMathKernel.exeのパスを指定して起動

import clr
clr.AddReferenceToFile("Wolfram.NETLink")  
from Wolfram.NETLink import *

kernelLink=MathLinkFactory.CreateKernelLink(
"-linkmode autolaunch -linkname 'C:/Program Files/Wolfram Research/Mathematica Player/7.0/mathkernel.exe'")

kernelLink.WaitAndDiscardAnswer()

ここまでは従前どおり。

次に、フロントエンドMathematicaPlayer.exeの絶対パスを指定して起動します。

#主にkernellinkオブジェクトのEvaluatetoInputFormメソッドを使っていきます
>>> kernelLink.EvaluateToInputForm("1+1",0)
2  # 1+1なので、2が返ってきました



#ConnectToFrontEnd などの、フロントエンド関連命令を使えるようにします。
kernelLink.EvaluateToInputForm('Needs["JLink`"]',0)

#フロントエンドを起動します。
kernelLink.EvaluateToInputForm('ConnectToFrontEnd["C:/Program Files/Wolfram Research/Mathematica Player/7.0/MathematicaPlayer.exe"]',0)

 

これで、フロントエンドを使う準備が完了しました。

Plot3D関数を使い、3次元グラフを作成

UseFrontEnd関数、CreatekernelLink.EvaluateToInputFormcumentを使いフロントエンドに表示します。

p=kernelLink.EvaluateToInputForm("p=Plot3D[Cos[x*y],{x,-3,3},{y,-3,3}]",0)

kernelLink.EvaluateToInputForm("UseFrontEnd[CreateDocument[ p ]]",0)

グラフが、MathematicaPlayerのウィンドウに表示されたら成功です


マウスでドラッグすると、グリグリと向きが変化します。

使い終わったら、カーネルとの接続を切断します。

#フロントエンド MathematicaPlayer.exeを終了します
kernelLink.EvaluateToInputForm('CloseFrontEnd[]',0)

#MathKernel.exeを終了します。
kernelLink.Close()

残念ながら、インタラクティブにグラフを変化させたりとか、そういうのは判りませんでした。

コメントを残す

メールアドレスが公開されることはありません。