|
已经解决了,我把图号分离的代码与上面项目号的代码合在一起了,现在可能实现项目号、图号、名称根据文件名进行自动填写,下一步准备解决根据文件名自动识别填写材料号、焊接件、组件及部件
- Dim a As Integer
- Dim b As String
- Dim m As String
- Dim e As String
- Dim k As String
- Dim t As String
- Dim c As String
- Dim j As Integer
- Dim strmat As String
- Dim tempvalue As String
- Dim Part As SldWorks.ModelDoc2
- Dim swApp As SldWorks.SldWorks
- Dim swModelDoc As SldWorks.ModelDoc2
- Dim swConfig As SldWorks.Configuration
- Dim CustPropMgr As SldWorks.CustomPropertyManager
- Dim swModel As SldWorks.ModelDoc2
- Dim projectCode As String
- Dim projectYear As String
- Dim projectNumber As String
- Dim deviceCount As String
- Dim finalProjectNumber As String
- Dim fileName As String
- Dim filePath As String
- Sub main()
- Set swApp = Application.SldWorks
- Set swModelDoc = swApp.ActiveDoc
- Set swConfig = swModelDoc.ConfigurationManager.ActiveConfiguration
- Set swModel = swApp.ActiveDoc
- Set CustPropMgr = swModel.Extension.CustomPropertyManager(swModel.ConfigurationManager.ActiveConfiguration.Name)
- '设定变量
- c = swApp.ActiveDoc.GetTitle() '零件名
- strmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34)
- a = InStr(c, " ") - 1 '重点:分隔标识符,这里是一个空格,也可换成其他符号
- If a > 0 Then
- k = Left(c, a)
- t = Left(LTrim(e), 3)
- If t = "GBT" Then
- e = "GB/T" + Mid(k, 4)
- Else
- e = k
- End If
- b = Mid(c, a + 2)
- t = Right(c, 7)
- If t = ".SLDPRT" Or t = ".SLDASM" Or t = ".sldprt" Or t = ".sldasm" Then
- j = Len(b) - 7
- Else
- j = Len(b)
- End If
- m = Left(b, j)
- End If
-
- ' 获取SolidWorks应用程序对象
- Set swApp = Application.SldWorks
-
- ' 检查是否有活动文档
- If swApp.ActiveDoc Is Nothing Then
- MsgBox "没有打开的文档", vbExclamation
- Exit Sub
- End If
-
- ' 获取活动文档
- Set Part = swApp.ActiveDoc
-
- ' 确保是零件文档
- If Not TypeOf Part Is SldWorks.ModelDoc2 Then
- MsgBox "当前文档不是零件文档", vbExclamation
- Exit Sub
- End If
-
- ' 获取文件名和路径
- filePath = Part.GetPathName
- fileName = Dir(filePath)
- ' 提取项目编号信息
- ' 假设文件名格式为 "E2401A000000000 零件.sldprt" 或 "E2401B000000000 零件.sldprt"
- projectCode = Left(fileName, 7) ' 提取前7个字符
- projectYear = Mid(projectCode, 2, 2) ' 提取年份后两位
- projectYear = "20" & projectYear ' 转换为完整的年份格式
- projectNumber = Mid(projectCode, 4, 2) ' 提取项目序号
- deviceCount = Mid(projectCode, 6, 1) ' 提取设备数量标识
-
- ' 根据设备数量格式化最终的项目编号
- If deviceCount = "A" Then
- finalProjectNumber = "E" & projectYear & "-" & projectNumber
- ElseIf deviceCount = "B" Then
- finalProjectNumber = "E" & projectYear & "-" & projectNumber & "-2"
- ElseIf deviceCount = "C" Then
- finalProjectNumber = "E" & projectYear & "-" & projectNumber & "-3"
- ElseIf deviceCount = "D" Then
- finalProjectNumber = "E" & projectYear & "-" & projectNumber & "-4"
- ElseIf deviceCount = "E" Then
- finalProjectNumber = "E" & projectYear & "-" & projectNumber & "-5"
- ElseIf deviceCount = "F" Then
- finalProjectNumber = "E" & projectYear & "-" & projectNumber & "-6"
- ElseIf deviceCount = "G" Then
- finalProjectNumber = "E" & projectYear & "-" & projectNumber & "-7"
- ElseIf deviceCount = "H" Then
- finalProjectNumber = "E" & projectYear & "-" & projectNumber & "-8"
- ElseIf deviceCount = "I" Then
- finalProjectNumber = "E" & projectYear & "-" & projectNumber & "-9"
- Else
- MsgBox "无法识别的设备数量标识:" & deviceCount, vbExclamation
- Exit Sub
- End If
- '删除原有
- CustPropMgr.Delete ("项目编号")
- CustPropMgr.Delete ("代号")
- CustPropMgr.Delete ("名称")
- '新增
- CustPropMgr.Add2 "项目编号", swCustomInfoText, finalProjectNumber
- CustPropMgr.Add2 "代号", swCustomInfoText, e
- CustPropMgr.Add2 "名称", swCustomInfoText, m
-
- End Sub
复制代码 |
|