|
经典图书 集合了一下论坛里各位大大分享的图号分离宏,做成自己需要的样子。
此宏(图号分离宏)特点:
a)不管是装配体本身还是装配体内的零、部件,都以代号+空格+名称进行分离,如果不是代号+空格+名称,则分离后,代号留空,名称为零件名
b)此宏在不是代号+空格+名称,不会有弹窗,只有最后显示的遍历窗
c)此宏分离后位置在配置特定
d) 装配体内的零件及部件,分离为代号、名称、材质(如果是部件,需要宏运行后手工删除材质一栏)、数量
e)此宏可在装配体或零件中,均可实行图号分离(注:在运行的当前装配体或零件,不会分离出数量一栏)
现在遇到问题如下:
1、在全是零件(没有子装配体)的装配体运行此宏,一切正常。如果在含有零件及子装配体运行,也能分离成功,但左侧设计树会假死,本人尝试用另一个【关闭其它窗口】的宏运行一下,不用点击确认,也可以解除假死状态,但这样麻烦。以下是用到的宏合集_V2.0的关闭其它窗口运行宏,供参考:
---------------------------------------------------
Sub main关闭其它窗口()
Set swApp = Application.SldWorks
Dim swModel As SldWorks.ModelDoc2
Set swModel = swApp.ActiveDoc
If Not swModel Is Nothing Then
Dim vDocsWindows As Variant
Dim swFrame As SldWorks.Frame
Set swFrame = swApp.Frame
vDocsWindows = swFrame.ModelWindows
Dim i As Integer
For i = 0 To UBound(vDocsWindows)
Dim swDocWin As SldWorks.ModelWindow
Set swDocWin = vDocsWindows(i)
Dim swRefDoc As SldWorks.ModelDoc2
Set swRefDoc = swDocWin.ModelDoc
If Not swRefDoc Is swModel Then
If swRefDoc.GetSaveFlag() Then
'display the close confirmation dialog for unsaved files
swApp.ActivateDoc3 swRefDoc.GetTitle, False, swRebuildOnActivation_e.swDontRebuildActiveDoc, 0
Const WM_COMMAND As Long = &H111
Const CMD_FileClose As Long = 57602
SendMessage swFrame.GetHWnd(), WM_COMMAND, CMD_FileClose, 0
Else
swApp.CloseDoc swDocWin.ModelDoc.GetTitle
End If
End If
Next
swApp.ActivateDoc3 swModel.GetTitle, True, swRebuildOnActivation_e.swUserDecision, 0
End If
End Sub
--------------------------------
2、分离宏时,在装配体或零件为当前界面时,只能分离出代号和名称,不能分离出数量,希望各位大大能帮忙解决此问题
3、分离宏时,如果装配体中的零件或部件,数量为1件的时候,会在零件或部件的自定义和配置特定中均有一栏数量为1,如果数量有2个及2个以上,自定义栏中的数量就不会显示。需要解决数量为1件的时候在自定义栏中产生的数量一栏.
附件宏,供参考
补充内容 (2024-6-25 17:03):
升级宏在8楼,有需要下载。 |
评分
-
查看全部评分
|