• 追加された行はこの色です。
  • 削除された行はこの色です。
#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 言語との連携」を見てください。