我想在装配体中自动保存 SolidWorks 文件。将保存的每个部件的名称是根据用户表单中给出的输入创建的。
用户可以确定要保存的数量和部件。此代码用于创建零件数组;
Dim Control As Control, ArrayParts As String
For Each Control In Me.Controls
If TypeName(Control) = "CheckBox" Then
If Control.Value Then
ArrayParts = IIf(ArrayParts <> "", ArrayParts & ",", "") & Control.Caption
End If
End If
Next
附件用户表单下方:
如果用户选择零件(在本例中为 2 个零件),那么这 2 个零件将被保存,看起来有点像下面这样:
For i = LBound(ArrayList) To UBound(ArrayList)
finalName = PathCut & "XT\" & partcode & " " & ArrayList(i) & " " & REVCode & Extension
swModelToExport.Extension.SaveAs3 finalName, 0, 1, Nothing, Nothing, nErrors, nWarnings
Next
零件的输出可以是“.....XTS Part1 1.X_T 其中零件代码和 REVCode 在用户表单中确定。 ArrayList 包含以下部分
目前,所有零件都有相同的“REV代码”。但是,我希望用户能够手动调整每个零件的 REV 代码。因此,如果选择第 1 部分,则文本框“txtREV1”的值将用于命名该部分。我的问题是我不确定如何在我的代码中实现这一点。我想使用与“ArrayParts”相同的方法,但我不想选择所有文本框作为控件,而只选择出现在用户窗体上的部件旁边的文本框。我尝试对文本框进行分组,但文本框没有“组名属性”选项卡,据我所知,仅适用于复选框。 欢迎任何提示。谢谢你
你没有回答我的澄清问题...
但是假设我的假设是正确的(复选框的数字部分之间存在相关性,与字母数字部分之间用空格分隔),您需要下一个函数,能够提取相应的文本框值:
private Function getREV(UF As Object, txtPart As String) As String
Dim c As Control, nOPart As Long
Const refRoot As String = "txtREV" 'use here your real text box naming prefix!
nOPart = Split(txtPart)(1) 'extract the numeric part
For Each c In UF.Controls
If TypeName(c) = "TextBox" Then
If c.Name = refRoot & nOPart Then getREV = c.text: Exit For
End If
Next c
End Function
并将其放在表单模块中,您可以将必要的路径定义为:
finalName = PathCut & "XT\" & partcode & " " & ArrayList(i) & " " & getREV(Me, CStr(ArrayList(0))) & Extension