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
类型,然后分别赋值给变量radius
与height
,这两个变量在后续的建模脚本中会用到。
采用以上方法适合传递参数不太多时,当然理论上在命令行中传递的参数并没有受到限制,只是不太优雅。比较优雅的方式是将参数写在文件中,然后将文件名作为参数传递给脚本,在脚本中接收文件名并解析文件中的参数。参数文件可以使用简单的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之道
评论前必须登录!
注册