- 积分
- 3680
- 回帖
- 0
- 西莫币
-
- 贡献
-
- 威望
-
- 存款
-
- 阅读权限
- 115
- 最后登录
- 1970-1-1
该用户从未签到
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 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[1],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
复制代码
或者
获取其他参数类似
四. 删除几何变换
删除单个几何变换
- TransfTranslationVector['Transf_1'].delete()
复制代码
或者
- Transf['Transf_1'].delete()
复制代码
删除所有TransfTranslationVector
- TransfTranslationVector[ALL].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[0]))[0]
- 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=[p1, p2], factor='0.5')
- t.delete()
- closeProject()
- # 以上代码可以直接拷贝粘贴至Flux中执行
- server.stop()
复制代码
Lecture5.rar
(41.33 KB, 下载次数: 35)
|
评分
-
查看全部评分
|