CATIA脚本导出参数问题:长度类型参数无法识别导出
CATIA参数导出VBScript中长度参数类型问题修复
问题说明
你编写的VBScript脚本可正常导出布尔、整数类型参数,但长度类参数(如Bobbin_thickness、Core_offset)被标记为“Unsupported parameter type”,核心原因是代码中对长度参数的类型判断使用了错误的类型名称。
解决方案
CATIA中,长度参数的TypeName返回值为Length(不带Param后缀),而非你代码中的LengthParam。同理,其他带物理单位的参数(如角度、质量、面积等)的TypeName也不带Param后缀。
修改后的核心判断代码片段如下:
Select Case TypeName(parameter) Case "RealParam" file.WriteLine parameter.Name & ": " & parameter.Value & " (Double)" Case "StrParam" file.WriteLine parameter.Name & ": " & parameter.Value & " (String)" Case "IntParam" file.WriteLine parameter.Name & ": " & parameter.Value & " (Integer)" Case "BoolParam" file.WriteLine parameter.Name & ": " & parameter.Value & " (Boolean)" Case "Length" ' 修正为正确的类型名 file.WriteLine parameter.Name & ": " & parameter.Value & " (Length)" Case "Angle" ' 修正为正确的类型名 file.WriteLine parameter.Name & ": " & parameter.Value & " (Angle)" Case "Mass" ' 修正为正确的类型名 file.WriteLine parameter.Name & ": " & parameter.Value & " (Mass)" Case "Area" ' 修正为正确的类型名 file.WriteLine parameter.Name & ": " & parameter.Value & " (Area)" Case "Volume" ' 修正为正确的类型名 file.WriteLine parameter.Name & ": " & parameter.Value & " (Volume)" Case "Time" ' 修正为正确的类型名 file.WriteLine parameter.Name & ": " & parameter.Value & " (Time)" Case "Density" ' 修正为正确的类型名 file.WriteLine parameter.Name & ": " & parameter.Value & " (Density)" Case "Frequency" ' 修正为正确的类型名 file.WriteLine parameter.Name & ": " & parameter.Value & " (Frequency)" Case Else file.WriteLine parameter.Name & ": " & "Unsupported parameter type" End Select
完整修正后的脚本
Sub CATMain() ' Declare variables Dim CATIA Dim partDocument Dim part Dim parameters Dim parameter Dim fileName Dim fso Dim file ' Initialize CATIA and get the active document Set CATIA = GetObject(, "CATIA.Application") Set partDocument = CATIA.ActiveDocument Set part = partDocument.Part Set parameters = part.Parameters ' Specify the file to write the parameters to fileName = "C:\Users\zezul001\parameters.txt" ' Create FileSystemObject Set fso = CreateObject("Scripting.FileSystemObject") ' Create or open the file for writing Set file = fso.OpenTextFile(fileName, 2, True) ' Loop through each parameter and write its name and value to the file For i = 1 To parameters.Count Set parameter = parameters.Item(i) Select Case TypeName(parameter) Case "RealParam" file.WriteLine parameter.Name & ": " & parameter.Value & " (Double)" Case "StrParam" file.WriteLine parameter.Name & ": " & parameter.Value & " (String)" Case "IntParam" file.WriteLine parameter.Name & ": " & parameter.Value & " (Integer)" Case "BoolParam" file.WriteLine parameter.Name & ": " & parameter.Value & " (Boolean)" Case "Length" file.WriteLine parameter.Name & ": " & parameter.Value & " (Length)" Case "Angle" file.WriteLine parameter.Name & ": " & parameter.Value & " (Angle)" Case "Mass" file.WriteLine parameter.Name & ": " & parameter.Value & " (Mass)" Case "Area" file.WriteLine parameter.Name & ": " & parameter.Value & " (Area)" Case "Volume" file.WriteLine parameter.Name & ": " & parameter.Value & " (Volume)" Case "Time" file.WriteLine parameter.Name & ": " & parameter.Value & " (Time)" Case "Density" file.WriteLine parameter.Name & ": " & parameter.Value & " (Density)" Case "Frequency" file.WriteLine parameter.Name & ": " & parameter.Value & " (Frequency)" Case Else file.WriteLine parameter.Name & ": " & "Unsupported parameter type" End Select Next ' Close the file file.Close ' Notify the user MsgBox "Parameters exported successfully to " & fileName End Sub
内容的提问来源于stack exchange,提问作者zed11
相关产品推荐
相关产品推荐

