|
自己在用的图号分离、删除所有属性、单位,差不多5、6个宏合并到一个宏,求指导优化。
- Sub main()
- Dim swApp As SldWorks.SldWorks
- Dim swModel As SldWorks.ModelDoc2
- Dim Part As SldWorks.PartDoc
- Dim vCustInfoNameArr2, vCustInfoName2 As Variant
- Set swApp = Application.SldWorks
- Set swModel = swApp.ActiveDoc
- Set Part = swModel
- '删除所有属性
- vCustInfoNameArr2 = swModel.GetCustomInfoNames
- If Not IsEmpty(vCustInfoNameArr2) Then
- For Each vCustInfoName2 In vCustInfoNameArr2
- swModel.DeleteCustomInfo vCustInfoName2
- Next
- End If
- CurCFGname = Part.GetConfigurationNames
- CurCFGnameCount = Part.GetConfigurationCount
- For i = 0 To CurCFGnameCount - 1
- Set CusPropMgr = Part.Extension.CustomPropertyManager(CurCFGname(i))
- Vnamearr = CusPropMgr.GetNames
- If Not IsEmpty(Vnamearr) Then
- For Each Vnamearr2 In Vnamearr
- Part.DeleteCustomInfo2 CurCFGname(i), Vnamearr2
- Next
- End If
- Next
- '设置单位为"自定义"
- swModel.Extension.SetUserPreferenceInteger 263, 0, 4 '设置单位为"自定"
- swModel.Extension.SetUserPreferenceInteger 259, 0, 3 '最后一个值,1毫克,2克,3千克,4镑
- swModel.Extension.SetUserPreferenceInteger 258, 0, 2 '长度
- swModel.Extension.SetUserPreferenceInteger 260, 0, 6 '体积
- swModel.ClearSelection2 True
- swModel.Save '存档
- '展开长宽
- Dim swFeature As SldWorks.Feature
- Dim FeatName As String
- Dim FeatType As String
- Set swFeature = swModel.FirstFeature
- While Not swFeature Is Nothing '遍历零件FeatureManager并获取特征和属性
- FeatName = swFeature.Name '获取特征名称
- FeatType = swFeature.GetTypeName '获取特征属性
- If FeatType = "CutListFolder" Then
- swFeature.Name = "切割清单项目" '修改名称
- End If
- Set swFeature = swFeature.GetNextFeature
- Wend
- 'swModel.AddCustomInfo3 "", "长", swCustomInfoText, """SW-边界框长度@@@切割清单项目@零件.SLDPRT""" 'VB语法,两个引号组成一个引号
- 'swModel.AddCustomInfo3 "", "宽", swCustomInfoText, """SW-边界框宽度@@@切割清单项目@零件.SLDPRT"""
- '图号分离
- swApp.ActiveDoc.ActiveView.FrameState = 1
- Set CurCFG = Part.GetActiveConfiguration()
- ConfName = CurCFG.Name
- Name = swApp.ActiveDoc.GetTitle()
- c = Replace(Name, " ", "")
- b = Len(c)
- e = Right(c, 7)
- If e = ".SLDPRT" Or e = ".SLDASM" Or e = ".sldprt" Or e = ".sldasm" Then
- f = Left(c, b - 7)
- Else
- f = c
- End If
- k = Len(f)
- kk = LenB(StrConv(f, vbFromUnicode))
- If k = kk Then '纯数字的情况
- s = ""
- t = f
- Else
- If kk / k = 2 Then '纯汉字的情况
- t = ""
- s = f
- Else
- For i = 1 To k
- If Asc(Mid$(f, i, 1)) < 0 Then
- w = i '确定第一个汉字的位置
- Exit For
- End If
- Next
- If w = 1 Then '名称+代号的情况
- s = Left(f, kk - k)
- t = Right(f, k - (kk - k))
- Else '代号+名称的情况
- s = Right(f, k - w + 1)
- t = Left(f, w - 1)
- End If
- End If
- End If
- 'swModel.AddCustomInfo3 "", "图号", swCustomInfoText, t
- 'swModel.AddCustomInfo3 "", "名称", swCustomInfoText, s
- '删除以下值
- blnretval = swModel.DeleteCustomInfo2("", "成型规格")
- blnretval = swModel.DeleteCustomInfo2("", "材质")
- blnretval = swModel.DeleteCustomInfo2("", "钣金厚度")
- blnretval = swModel.DeleteCustomInfo2("", "质量")
- blnretval = swModel.DeleteCustomInfo2("", "体积")
- blnretval = swModel.DeleteCustomInfo2("", "表面积")
- blnretval = swModel.DeleteCustomInfo2("", "表面处理")
- blnretval = swModel.DeleteCustomInfo2("", "数量")
- blnretval = swModel.DeleteCustomInfo2("", "工序1")
- blnretval = swModel.DeleteCustomInfo2("", "工序2")
- blnretval = swModel.DeleteCustomInfo2("", "工序3")
- blnretval = swModel.DeleteCustomInfo2("", "工序4")
- blnretval = swModel.DeleteCustomInfo2("", "工序5")
- blnretval = swModel.DeleteCustomInfo2("", "备注")
- blnretval = swModel.DeleteCustomInfo2("", "折弯半径")
- blnretval = swModel.DeleteCustomInfo2("", "K因子")
- blnretval = swModel.DeleteCustomInfo2("", "型材长度")
- '设置属性,赋默认值
- swModel.AddCustomInfo3 "", "图号", swCustomInfoText, t
- swModel.AddCustomInfo3 "", "名称", swCustomInfoText, s
- blnretval = swModel.AddCustomInfo3("", "材质", swCustomInfoText, """SW-Material""")
- blnretval = swModel.AddCustomInfo3("", "钣金厚度", swCustomInfoText, """厚度@钣金""")
- blnretval = swModel.AddCustomInfo3("", "质量", swCustomInfoText, """SW-Mass""")
- blnretval = swModel.AddCustomInfo3("", "体积", swCustomInfoText, """SW-Volume""")
- blnretval = swModel.AddCustomInfo3("", "表面积", swCustomInfoText, """SW-SurfaceArea""")
- blnretval = swModel.AddCustomInfo3("", "表面处理", swCustomInfoText, "")
- blnretval = swModel.AddCustomInfo3("", "数量", swCustomInfoText, "1")
- blnretval = swModel.AddCustomInfo3("", "工序1", swCustomInfoText, "2D激光")
- blnretval = swModel.AddCustomInfo3("", "工序2", swCustomInfoText, "折弯")
- blnretval = swModel.AddCustomInfo3("", "工序3", swCustomInfoText, "氩焊")
- blnretval = swModel.AddCustomInfo3("", "工序4", swCustomInfoText, "")
- blnretval = swModel.AddCustomInfo3("", "工序5", swCustomInfoText, "")
- blnretval = swModel.AddCustomInfo3("", "备注", swCustomInfoText, "")
- blnretval = swModel.AddCustomInfo3("", "折弯半径", swCustomInfoText, """D1@钣金""")
- blnretval = swModel.AddCustomInfo3("", "K因子", swCustomInfoText, """D2@钣金""")
- swModel.AddCustomInfo3 "", "展开长", swCustomInfoText, """SW-边界框长度@@@切割清单项目@零件.SLDPRT"""
- swModel.AddCustomInfo3 "", "展开宽", swCustomInfoText, """SW-边界框宽度@@@切割清单项目@零件.SLDPRT"""
- blnretval = swModel.AddCustomInfo3("", "型材长度", swCustomInfoText, "")
- swModel.Save
- End Sub
复制代码
|
|