- 积分
- 3680
- 回帖
- 0
- 西莫币
-
- 贡献
-
- 威望
-
- 存款
-
- 阅读权限
- 115
- 最后登录
- 1970-1-1
该用户从未签到
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 dnawujun 于 2015-2-3 17:22 编辑
上次讲到如何操纵几何参数http://bbs.simol.cn/thread-137181-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中用命令行建立几何参数是用这样的命令:
- CoordSysCartesian(name='CoordSys_1',
- parentCoordSys=Local(coordSys=CoordSys['XY1']),
- origin=['0', '0'],
- rotationAngles=RotationAngles(angleZ='0'))
复制代码
来建立局部卡氏坐标系
- CoordSysCartesian(name='COORDSYS_2',
- parentCoordSys=GlobalUnits(lengthUnit=LengthUnit['MILLIMETER'],
- angleUnit=AngleUnit['DEGREE']),
- origin=['0', '0'],
- rotationAngles=RotationAngles(angleZ='0'))
复制代码
来建立全局卡氏坐标系
CoordSysCylindrical及CoordSysSpherical用来建立柱坐标和球坐标,参数和CoordSysCartesian一样的
二. 修改坐标系(以卡氏坐标系为例)
修改名称,commandline参数为:
- CoordSysCartesian [' CoordSys_1'].name=' CS_ROTOR'
复制代码
修改注释,commandline参数为:
- CoordSysCartesian [' CoordSys_1'].name=' CoordSys_1 : Test'
复制代码
或者
- CoordSysCartesian [' CoordSys _1'].name=' CoordSys _1'
复制代码
将注释清空
修改其他的参数类似,详见附件代码
三. 获取坐标系(以卡氏坐标系为例)
注意以下代码节选自附件,并做了一定的修改以便讲述,无法单独运行,完整代码请参见附件
3.1 获取名称及注释
- command = "temp=CoordSysCartesian ['CoordSys_1'].name"
- self._project.executeJythonCommand(command)
- nameWithComment = self._project.getJythonStringArrayValue('temp')
- name = map(lambda x: x.split(":")[0].strip() if ":" in x else x, nameWithComment)[0]
- comment = map(lambda x: x.split(":")[1].strip() if ":" in x else "", nameWithComment)[0]
复制代码
3.2 获取origin
- command = "temp=CoordSysCartesian ['CoordSys_1'].name"
- self._project.executeJythonCommand(command)
- origin = self._project.getJythonStringArrayValue("temp")
复制代码
3.3 获取rotationAngles
- command = "temp=[CoordSysCartesian ['CoordSys_1'].rotationAngles.angleX," \
- "CoordSysCartesian ['CoordSys_1'].rotationAngles.angleY," \
- "CoordSysCartesian ['CoordSys_1'].rotationAngles.angleZ]" \
- self._project.executeJythonCommand(command)
- rotationAngles = self._project.getJythonStringArrayValue("temp")
复制代码
3.4 获取parentCoordSys
这个放到最后讲,因为这个操作稍微复杂点
从前面建立坐标系的命令我们可知,parentCoordSys有两种可能:
GlobalUnits或者Local,我们可以在Flux中Hack一下这两个东西以得到更多的信息。
以下以Local为例讲述,GlobalUnits参见附件代码
在Flux中新建一个局部坐标系,然后在命令行输入
CoordSysCartesian['CoordSys_1'].parentCoordSys,得到的输出是Local[2];
命令行输入Local.__fields,得到输出是coordSys;
然后输入Local[2].coordSys,得到输出是CoordSysCartesian[1],这就是XY1那个初始的坐标系
我们可以通过CoordSysCartesian [1].name来得到其名称
但是,如果存盘后退出然后再打开Project,再次输入Local[2].coordSys,得到的将是'XY1 : Cartesian system of coordinates.'
这是个字符串对象,是没有name属性的,只能通过分解字符串的方法来得到名称
因此需要首先判断Local[2].coordSys的对象类型,进而执行相应的操作
- command="temp=CoordSysCartesian ['CoordSys_1'].parentCoordSys.coordSys.__class__.__name__"
- self._project.executeJythonCommand(command)
- coordSysTypeName=self._project.getJythonStringArrayValue("temp")[0]
- if coordSysTypeName=='str':
- command = "temp=CoordSysCartesian ['CoordSys_1'].coordSys"
- self._project.executeJythonCommand(command)
- else:#coordSysTypeName=='PyOc':
- command = "temp=CoordSysCartesian ['CoordSys_1'].coordSys.name"
- self._project.executeJythonCommand(command)
- parentCoordSysName = self._project.getJythonStringArrayValue("temp")[0].split(":")[0].strip()
复制代码
四. 删除坐标系
删除单个, commandline参数为:
CoordSys [' CoordSys_1'].delete()
删除所有, commandline参数为:
CoordSys [ALL].delete()
Lecture4.rar
(201.42 KB, 下载次数: 41)
|
评分
-
查看全部评分
|