|
麻煩多了 ,最主要是要抓取組件上全部的零件名稱.
另執行組件有組件的通關密語.
參考 SolidWorks机械工程师论坛
有工程师及吉大精彩文章
' ******************************************************************************
' macro recorded on 03/27/14 by lsc
'
' 組合件之零件自訂屬性 [ 編號_名稱 ],編號名稱是以" _ "符號分隔.
'
' ******************************************************************************
Dim TopDocPathOnly As String
Dim swModel As SldWorks.ModelDoc2
Dim swApp As SldWorks.SldWorks
Sub main()
Set swApp = Application.SldWorks
Set TopDoc = swApp.ActiveDoc '總裝對象
If TopDoc.GetType <> 2 Then Exit Sub '不是裝配=退出
TopDocPathSplit = Split(TopDoc.GetPathName, "" '分割
TopDocName = TopDocPathSplit(UBound(TopDocPathSplit)) '總裝文件名稱
TopDocName = Left(TopDocName, Len(TopDocName) - 7) '總裝文件名稱(排除.SLDASM)
TopDocPathOnly = TopDocPathSplit(UBound(TopDocPathSplit) - 1) '總裝目錄名稱
TopConfString = TopDoc.GetActiveConfiguration.Name '總裝配置名稱
SubAsm TopDoc, TopConfString '遍歷
End Sub
Function SubAsm(AsmDoc, ConfString)
Set swModel = swApp.ActiveDoc
Set Configuration = AsmDoc.GetConfigurationByName(ConfString)
Set RootComponent = Configuration.GetRootComponent
Components = RootComponent.GetChildren
For Each Child In Components '總裝抓全部零件名稱
Set ChildModel = Child.GetModelDoc
ChildPathSplit = Split(Child.GetPathName, "" '分割
ChildName = ChildPathSplit(UBound(ChildPathSplit)) '零件文件名稱
L1 = InStrRev(ChildName, "_", , 0)
L2 = InStrRev(ChildName, ".", , 0)
code_ = Left(ChildName, L1 - 1) ' 編號
name_ = Mid(ChildName, L1 + 1, L2 - L1 - 1) '名稱
swModel.DeleteCustomInfo2 "", code_
swModel.AddCustomInfo2 code_, swCustomInfoText, name_
Next
End Function
組件零件之編號名稱屬性.rar
(120.59 KB, 下载次数: 90)
[2012版 練習用組件,零件,宏] |
|