- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2018-08-02T00:00:48+09:00","springhead","springhead")
* Pythonバインドについて [#b6bfb8b0]
[[download]]にPythonのPydを用意しました。
ドキュメントの「第 13 章 Python 言語との連携」を見てください。
** 分かっている問題 [#o067f97d]
Windowsの実行ファイルにPythonを組み込んで動かすことしか考えていませんでした。~
PyhtonからSpringheadを呼び出す場合もシミュレーション自体はできるのですが、
OpenGLのウィンドウの表示の方法が用意できていないと思います。
現在、GLUTを使っているため、一度 mainloopを呼び出すと帰ってきません。マルチスレッドを使ってもロックされてしまいます。
#author("2018-08-02T12:21:46+09:00","springhead","springhead")
* Pythonバインド [#b6bfb8b0]
Python3から呼び出せるWindows 64bit用のDLLです。
共通DLL &ref(SprDepend64Dll.zip); と Pythonのバージョンに合ったSpr.pydをPythonXX/Dllsの下に置いてください。
- Python3.6 &ref(Spr36.zip);
- Python3.5 &ref(Spr35.zip);
この点の改善が必要だと思います。
** Pythonから動かせるようにしました。 [#w2728b7c]
GLUTの問題でグラフィクス表示ができなかったのですが、マルチスレッドにして表示できるようにしました。
以下のサンプルでは、app.InitInNewThread()が、GLUTを動かすために、別のスレッドを作ってglutMainLoop()を呼び出しています。
import time
from Spr import *
app = EPApp()
app.InitInNewThread()
time.sleep(1)
fwSdk = FWSdk()
fwSdk = app.GetSdk()
phSdk = PHSdk()
phSdk = fwSdk.GetPHSdk()
fwScene = fwSdk.GetScene()
phScene = PHScene()
phScene = fwScene.GetPHScene()
spd=CDSphereDesc()
sp=CDSphere()
sp=phSdk.CreateShape(sp.GetIfInfoStatic(), spd)
s1 = PHSolid()
s1 = phScene.CreateSolid()
s1.AddShape(sp)
s2 = PHSolid()
s2 = phScene.CreateSolid()
s2.AddShape(sp)
s2.SetFramePosition(Vec3d(0.1,0,0))
fwScene.EnableRenderGrid(False, True, False)
win = FWWin()
win = app.GetCurrentWin()
win.GetTrackball().SetPosition(Vec3f(0,10,10))
win.GetTrackball().SetTarget(Vec3f(0,0,0))
for i in range(100):
phScene.Step()
app.PostRedisplay()
time.sleep(0.03)
** ドキュメント [#v8e04c6c]
ドキュメント http://springhead.info/dailybuild/generated/doc/Springhead.pdf
の「第 13 章 Python 言語との連携」を見てください。