Python调用Flux第五讲:操纵几何变换
本帖最后由 dnawujun 于 2015-3-6 09:58 编辑上次讲到如何操纵坐标系 http://bbs.simol.cn/thread-137477-1-1.html
今天与大家分享下如何用Python操纵FluxServer去新建、修改、获取以及删除几何变换
所有这些操作都是通过调用
H_ERROR FMP_executeJythonCommand (CEDINT32 serverUid,char* commandline)
H_ERROR FMP_getJythonStringArrayValue (CEDINT32 serverUid,TCHAR* jythonVarName,CEDINT32* numberValues,TCHAR*** values)
这个函数来实现
Flux中总共有15种几何变换,分别是
Transf
TransfAffineLine2PT
TransfAffinePlane3PT
TransfAffinePoint
TransfCombined
TransfHelicalPivotCoord
TransfHelicalPivotPoint
TransfRotation1Angle3PT
TransfRotation3AnglesPivotCoord
TransfRotation3AnglesPivotPoint
TransfSymmetryLine2PT
TransfSymmetryPlane3PT
TransfSymmetryPoint
TransfTranslation2PT
TransfTranslationVector
其中Transf不能用来建立任何几何变换,但是可以用
Transf,Transf['Transf_1']来得到相应的几何变换
我们可以在Flux中输入以下代码来得到这些几何变换的名称
for i in dir():
if i.startswith('Transf'):
print i
这里以Flux2D中的TransfTranslationVector来讲述各个操作
一. 新建几何变换
TransfTranslationVector(name='Transf_1',coordSys=CoordSys['XY1'],vector=['0','1'])
二. 修改几何变换
修改名称
TransfTranslationVector['Transf_1'].name='Transf_2'
或者
Transf['Transf_1'].name='Transf_2'
修改坐标系
TransfTranslationVector['Transf_1'].coordSys=CoordSys['XY2']
或者
Transf['Transf_1'].coordSys=CoordSys['XY2']
修改vector类似
三. 获取几何变换
获取名称
TransfTranslationVector['Transf_1'].name
或者
Transf['Transf_1'].name
获取其他参数类似
四. 删除几何变换
删除单个几何变换
TransfTranslationVector['Transf_1'].delete()
或者
Transf['Transf_1'].delete()
删除所有TransfTranslationVector
TransfTranslationVector.delete()
删除所有的几何变换
Transf.delete()
附注:
附件中的代码已经和前几讲大为不同了,现在的实现几乎完全模拟了PyFlux
除了处理FluxServer的代码外,其余代码可以在拷贝粘贴至Flux中执行,这样
就可以实现重用已有的PyFlux脚本。比如:
import os
import sys
from FluxAPI import *
from FluxAPI.ServerConstants import ServerType
appPath = os.path.split(os.path.realpath(sys.argv))
server.start(ServerType.FLUX3D_LATEST, appPath + r'\TestProjects')
# 以下代码可以直接拷贝粘贴至Flux中执行
newProject()
p1 = PointCoordinates.__call__(uvw=['0', '0', '0'],coordSys=CoordSys['XYZ1'])
p2 = PointCoordinates.__call__(uvw=['0', '1', '0'],coordSys=CoordSys['XYZ1'])
t = TransfAffineLine2PT.__call__(name='AffineLine2PT', point=, factor='0.5')
t.delete()
closeProject()
# 以上代码可以直接拷贝粘贴至Flux中执行
server.stop()
tank uuuu dnawujun 楼主伟大,拜膜! 赞楼主,大牛啊~~~ Thanks a lot for sharing this files
页:
[1]