首页/文章/ 详情

SpaceClaim开发|03 读取外部输入参数

精品
作者优秀平台推荐
详细信息
文章亮点
作者优秀
优秀教师/意见领袖/博士学历/特邀专家
平台推荐
内容稀缺
15小时前浏览24

SpaceClaim的脚本文件文件保存为py格式时,可以在外部对脚本文件进行编辑,在实际应用中只需要确保运行时传递给SpaceClaim的脚本文件中的参数是正确的即可。这很容易通过文本替换的方式实现。

然而,当SpaceClaim脚本保存为scscript格式时,此脚本文件为二进制文件,无法在SpaceClaim外部进行编辑和修改,也就无法通过文本替换的方式实现参数化。

在命令行中,SpaceClaim可以带参数运行。其参数开关为:/ScriptArgs。调用形式如下所示:

SpaceClaim.exe /RunScript="d:\cylinder.scscript" /ScriptArgs="10,20"

其中所有参数包含在/ScriptArgs后面的引号中,多个参数以逗号分隔开,注意逗号之间不能有空格。

同时,在脚本文件中也要编写相应的参数接收代码,注意所有参数都是以字符串的形式传入脚本中,因此在脚本中可能需要对传入的参数进行相应的类型转换。

如下面的脚本:

# Python Script, API Version = V251
# cylinder.scscript
radius = float(args[0])
height = float(args[1])

# 草绘圆
plane = Plane.PlaneZX
result = ViewHelper.SetSketchPlane(plane)
origin = Point2D.Create(MM(0), MM(0))
result = SketchCircle.Create(origin, MM(radius))
# EndBlock

# 实体化草绘
mode = InteractionMode.Solid
result = ViewHelper.SetViewMode(mode, Info1)
# EndBlock

# 拉伸 1 个面
selection = Face1
options = ExtrudeFaceOptions()
options.ExtrudeType = ExtrudeType.Add
result = ExtrudeFaces.Execute(selection, MM(height), options, Info2)
# EndBlock

此脚本接收两个参数(分别为args[0]与args[1]),并将它们转换为float类型,然后分别赋值给变量radiusheight,这两个变量在后续的建模脚本中会用到。

采用以上方法适合传递参数不太多时,当然理论上在命令行中传递的参数并没有受到限制,只是不太优雅。比较优雅的方式是将参数写在文件中,然后将文件名作为参数传递给脚本,在脚本中接收文件名并解析文件中的参数。参数文件可以使用简单的txt文本文件,也可以使用json、xml之类的结构化文件。

如采用下面的json文件:

{
    "params":
    {
        "radius":20,
        "height":40
    }
}

将json文件保存为json.json。此时可以在脚本中使用下面的代码读取参数:

import json

# 读取JSON文件
with open('test.json''r'as file:
    data = json.load(file)  # 解析JSON数据

    # 提取节点数据
    radius = data['params']['radius']
    height = data['params']['height']

    # 验证数据完整性
    if radius isNoneor height isNone:
        raise ValueError("JSON文件缺少radius或height字段")
        

修改完毕后的脚本文件为:

# Python Script, API Version = V251
# cylinder.scscript

import json

filePath = args[0]
with open(filePath,'r'as file:
    data = json.load(file)
    radius = float(data['params']['radius'])
    height = float(data['params']['height'])

# 草绘圆
plane = Plane.PlaneZX
result = ViewHelper.SetSketchPlane(plane)
origin = Point2D.Create(MM(0), MM(0))
result = SketchCircle.Create(origin, MM(radius))
# EndBlock

# 实体化草绘
mode = InteractionMode.Solid
result = ViewHelper.SetViewMode(mode, Info1)
# EndBlock

# 拉伸 1 个面
selection = Face1
options = ExtrudeFaceOptions()
options.ExtrudeType = ExtrudeType.Add
result = ExtrudeFaces.Execute(selection, MM(height), options, Info2)
# EndBlock

调用脚本命令修改为:

SpaceClaim.exe /RunScript="d:\cylinder.scscript" /ScriptArgs="d:\test.json"

这样,再多的参数也不用担心了,只需要专注于修改json文件中的内容即可。


来源:CFD之道
SpaceClaimACTpython理论Origin
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-03-21
最近编辑:15小时前
CFD之道
博士 | 教师 探讨CFD职场生活,闲谈CFD里外
获赞 2597粉丝 11684文章 779课程 27
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈