西莫电机圈

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

查看: 1682|回复: 5

[原创] Python调用Flux第三讲:操纵几何参数

[复制链接]

该用户从未签到

发表于 2015-1-20 15:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 dnawujun 于 2015-1-20 15:13 编辑

上次讲到如何载入、关闭、保存和新建Project
http://bbs.simol.cn/thread-136924-1-1.html
今天与大家分享下如何用Python操纵FluxServer去新建、修改、获取以及删除几何参数
所有这些操作在API_Flux_V11.2.doc中并无对应的函数来实现,但是可以通过调用
H_ERROR FMP_executeJythonCommand (CEDINT32 serverUid,char* commandline)
这个函数来实现

一.        新建几何参数

我们在Flux中用命令行建立几何参数是用这样的命令:
ParameterGeom(name='A : Height',expression='10')
这个命令就可以用在FMP_executeJythonCommand的参数commandline中以实现新建几何参数的操作
注意name=’A : Height’中A是参数名称,Height为参数的注释;A和:之间以及:和Height之间均必须有空格
如果没有注释,则是:
ParameterGeom(name='A',expression='10')

总的来说就是这样的代码(摘抄自附件中Geometry.py):
if comment != "":
        command = r"ParameterGeom(name='" + name + r" : " + comment + r"',expression='" +str(expression) + r"')"
else:
        command = r"ParameterGeom(name='" + name + r"',expression='" +str(expression) + r"')"
errorId = self._FLUX_MP.FMP_executeJythonCommand(self._server.serverUid, command)
self._server._CheckError(errorId)

二.        修改几何参数

修改表达式,调用FMP_executeJythonCommand,commandline参数为:
ParameterGeom['A'].expression='2'
修改注释,调用FMP_executeJythonCommand,commandline参数为:
ParameterGeom['A'].name='A : TestA' 或者 ParameterGeom['A'].name='A' 将注释清空
详细代码请参加附件

三.        获取几何参数

API_Flux_V11.2.doc中有个这个函数:FMP_getAllVariationParameter,这个函数的功能是获取Project中所有的参数
包括几何参数,但是没有单独的获取几何参数的函数。于是本人反编译了一下flux_mp.dll,发现FMP_getAllVariationParameter
是这样实现的:

首先调用FMP_executeJythonCommand(serverUid, "FMP_getAllVariationParameter=VariationParameter[ALL].name")
然后调用FMP_getJythonStringArrayValue(serverUid,"FMP_getAllVariationParameter",numberValues,values)
返回的值在values数组中

按照相同的思路,我们可以用
FMP_executeJythonCommand(serverUid, " FMP_getAllGeometricParameterNames = ParameterGeom [ALL].name")
FMP_getJythonStringArrayValue(serverUid," FMP_getAllGeometricParameterNames ",numberValues,values)
来获取所有的几何参数的名称及注释
注意FMP_getAllGeometricParameterNames这个名字可以随便取,只要调用FMP_executeJythonCommand时和
FMP_getJythonStringArrayValues时所用的名称一致并且不和Flux中的保留关键字以及函数重名即可

获取表达式有所不同,不能用类似
FMP_executeJythonCommand(serverUid, " FMP_getAllGeometricParameterExpressions= ParameterGeom [ALL].expression")
来获取。需要采取一个参数一个参数的方式来获取,比如要取得名字为’A’的参数的表达式,可以调用
FMP_executeJythonCommand(serverUid, " FMP_getGeometricParameterExpression= ParameterGeom [‘A’].expression")
FMP_getJythonStringArrayValue(serverUid," FMP_getGeometricParameterExpression ",1,values)
因此需要采用循环的方式,详细参见附件代码Project.py中的_getAllGeometricParametersOnLoad函数的实现

四.        删除几何参数
删除单个,调用FMP_executeJythonCommand,commandline参数为:
ParameterGeom['A'].delete()
删除所有,调用FMP_executeJythonCommand,commandline参数为:
ParameterGeom[ALL].delete()

附件中用类包装了下,运行时请双击bat文件
另外由于本人也是在开发中,附件中的代码并非理想实现
随着开发的进展,代码会不断变化

Lecture3.rar (198.16 KB, 下载次数: 55)




补充内容 (2015-1-21 14:16):
获取所有几何参数的表达式,可以通过
commandline = "FMP_getAllGeometricParameterExpressions=[i.expression for i in ParameterGeom[ALL]]"
来执行FMP_executeJythonCommand

补充内容 (2015-1-21 14:17):
然后用FMP_getJythonStringArrayValue(serverUid," FMP_getAllGeometricParameterExpressions",numberOfValues,values)
来得到表达式

评分

参与人数 5西莫币 +70 收起 理由
wshf + 15 感谢分享
FOXWHY + 15 精品文章
销声匿迹 + 10 赞一个!
e=mc^2 + 15 再接再厉!为大家展现FLUX强大的另一面
y1949b + 15 原创内容

查看全部评分

西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过

该用户从未签到

发表于 2015-1-20 20:43 | 显示全部楼层
Thank you for the example
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2015-1-20 20:45 | 显示全部楼层
Thank you for the example
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2015-1-21 21:58 | 显示全部楼层
厉害,学习了,,,,,,,
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2015-1-22 09:54 | 显示全部楼层
再次学习,谢谢。
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

签到天数: 1 天

连续签到: 1 天

[LV.1]初来乍到

发表于 2015-1-22 10:23 | 显示全部楼层
受教了{:soso_e183:}
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|西莫电机圈 ( 浙ICP备10025899号-3 浙公网安备:33028202000436号

GMT+8, 2024-11-22 07:26 , Processed in 0.099915 second(s), 30 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表