|
推荐

楼主 |
发表于 2023-4-28 09:05:56
|
只看该作者
Dim swApp As Object
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, "")
blnretval = swModel.AddCustomInfo3("", "设计", swCustomInfoText, "段永波")
blnretval = swModel.AddCustomInfo3("", "制图", swCustomInfoText, "段永波")
blnretval = swModel.AddCustomInfo3("", "设计日期", swCustomInfoText, """SW-Created Date""")
blnretval = swModel.AddCustomInfo3("", "绘图日期", swCustomInfoText, "$PRP:SW-Last Saved Date")
Part.EditRebuild3
swModel.Save
Set swApp = Application.SldWorks
End Sub |
|