找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
楼主: 李邈

SW宏-零件数量自动写入自定义属性表

[复制链接]
发表于 2024-11-21 19:55:25 | 显示全部楼层
faker558 发表于 2024-11-21 16:350 I2 C8 p% e- e3 r" c
在开元没有看到这个功能啊

4 F  b2 Z1 y, r6 j1 w) I' _& P0 l有的呀,BOM工具里面/ t" ~& e  Q! [  O7 F
我这个后面自定义了一个数量的项目,这个项是写到零件属性里面的,所以加在后面跟插件的数量对比,如果不一样,就改成和插件统计的一样,这样零件属性里面就有数量了. x* [/ f- I! m: x1 w% F

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
发表于 2024-11-21 20:34:27 | 显示全部楼层
本帖最后由 faker558 于 2024-11-21 20:44 编辑
, r  d& j6 Y# f6 C+ G/ n
看前方 发表于 2024-11-21 19:55
! l% O  Z: D& w4 f# h! {3 }9 Q: |0 e有的呀,BOM工具里面& s* ?4 ]% t" k6 k
我这个后面自定义了一个数量的项目,这个项是写到零件属性里面的,所以加在后面跟 ...
8 B$ O' T% U+ x5 |. `6 w7 y' h
感谢楼主,找到了。但是是付费项目,我下载了你的宏文件压缩包,运行了这个宏,怎么毫无反应,零件自定义属性里也没变化,没有自动写入数量,有什么注意事项吗
 楼主| 发表于 2024-11-22 08:08:00 | 显示全部楼层
土豆土豆442 发表于 2024-10-7 16:38( a4 T( H3 k. j
楼主,能求个宏吗?不会搞

" i8 T9 S( T, e3 H4 V9 z一楼就是# ?% E* t$ C3 z8 n1 ?
 楼主| 发表于 2024-11-22 08:08:56 | 显示全部楼层
faker558 发表于 2024-11-21 16:36
. h" ]4 r! I" E( H刷个威望下附件

  Z3 x1 [6 s( d+ ~7 }# c就怕你威望不够,代码都给你了" R9 G" @) q- d9 F
发表于 2024-11-22 08:48:09 | 显示全部楼层
faker558 发表于 2024-11-21 20:34
0 x% F; D8 S8 ^7 A感谢楼主,找到了。但是是付费项目,我下载了你的宏文件压缩包,运行了这个宏,怎么毫无反应,零件自定 ...
- N/ K3 g/ n0 U' d, r" j
那个宏不是我写的,我没有用宏' |9 k2 e- r( D! g+ I
我截的那个图里面,前面那个总数量就是插件统计的,但是那个数量写不到零件属性里面,所以我在后面加了一个数量的项,这个项是可以链接到零件属性里面去的。然后按照插件统计的总数量手动填上去,零件数量上就有显示了
3 K% ^4 d, a* \# I
发表于 2024-11-22 11:30:19 | 显示全部楼层
李邈 发表于 2024-11-22 08:08
# G( y4 t$ k* v" K3 R) }# g  Z2 b就怕你威望不够,代码都给你了
' E  M2 M1 E4 I3 N4 |6 s
楼主,我用了你那个宏,怎么属性列表里的数量没有变化
3 A6 u" J& v9 G" e9 J! p$ O* D$ _
发表于 2024-11-22 11:31:39 | 显示全部楼层
李邈 发表于 2024-11-22 08:08
. D0 Z) J( L6 p) U/ |* b% V就怕你威望不够,代码都给你了

) B! H! M9 u/ I' l/ C' F8 s压缩包的我试了,复制代码也试了
发表于 2024-11-22 11:49:02 | 显示全部楼层
感谢楼主分享,很不错!
! Q  e, {8 c6 k$ q楼主辛苦了!

点评

应该的xixi  发表于 2024-11-23 08:30
发表于 2024-11-22 11:49:20 | 显示全部楼层
李邈 发表于 2024-11-22 08:08
* ?  s$ L8 Z: j7 e( \就怕你威望不够,代码都给你了
- a) ^$ g" K/ ], W( g# m7 r
十分感谢楼主,可以用了,我的SW版本是2020,把库改成2020就可以用了,十分感谢+ r* ~8 ^- L/ U3 t1 M( b
发表于 2024-11-22 11:58:45 | 显示全部楼层
我用手机助手写了一个宏程序,不知道为什么用不了,语法错误,楼主可以帮忙看看吗
8 }  R& s( u  x! o8 G# i0 ^/ C. J以下是一个用于SolidWorks(SW)的向装配体里面写入零件总数量的宏的示例。此宏使用VBA(Visual Basic for Applications)编写,可以在SolidWorks的宏环境中运行。请按照以下步骤操作:
" f4 N2 \& M. I+ J6 E5 H& ]
* F0 g$ o# e& M4 Q' F& _1. 打开SolidWorks并启用宏环境4:+ ~, A7 d% L" |, K7 y5 J
确保你的SolidWorks已经安装了VBA宏支持。
4 O6 B' e' n& K! j& E2 Z打开SolidWorks,并启用宏录制和运行功能(通常在“工具”或“选项”菜单中可以找到)。
! s( H6 H: J* L- m+ |; H2. 编写宏代码:
( l1 [4 i, b" M+ D2 T  d& N 
2 i: I# S8 k: u; o3 _Dim swApp As SldWorks.SldWorks; b. v* }) b3 [( ?
Dim swAssy As SldWorks.AssemblyDoc- g; L, V$ H& U5 ]! _! T
Dim swComp As SldWorks.Component2, C8 Z( I9 ^( U2 [. W9 Z
Dim vComps As Variant" T/ A0 `( O9 [" d% u
Dim i As Long, totalQty As Long
9 ?1 I" Y0 g3 ?Dim customPropMgr As SldWorks.CustomPropertyManager1 }+ i) t3 _! O: p6 e
Dim customPropName As String
$ A4 B; M' q& R, j1 f
) S0 {1 f+ `8 H) R  H- o# T  |' 初始化SolidWorks应用程序对象
5 A' }+ d$ J% C/ [' o, dSet swApp = Application.SldWorks
1 o9 ^/ m6 z7 n1 z
5 g" A9 [; d" D) Z) f9 d+ [9 O' 获取当前活动的装配体文档
" {& O& `7 _+ O  k/ B8 ?Set swAssy = swApp.ActiveDoc
% s: |" ?* R- d) N# \4 C/ P6 Z6 E" e, V6 o1 C2 l
' 检查是否为装配体文档
- U0 u  [6 E2 jIf swAssy Is Nothing Or swAssy.GetType <> swDocASSEMBLY Then) o6 |) U! u' F3 D
    MsgBox "请打开一个装配体文档。", vbExclamation/ p1 l& B1 n8 k) k) J9 p
    Exit Sub
; g/ [$ s; F1 Q6 M/ y, e  HEnd If
/ e. z6 y$ @- e4 b: M0 K$ |, F5 |9 v1 \7 Z7 g$ i  b
' 初始化零件总数量; u2 v1 J1 d! j2 M: d* v0 @
totalQty = 0
2 ]) z  }, g. W( f9 H4 P. _5 I0 b1 \  H2 l8 j/ l# K% v
' 自定义属性名称,用于存储零件总数量! I( [: y5 l6 A: u
customPropName = "TotalQty"9 c( |. k  Q+ ?  I9 T

- o- {  m: K# E& \' 遍历装配体中的所有组件3 Y/ q5 L) y9 d* n$ e$ i
With swAssy.ConfigurationManager.ActiveConfiguration.GetRootComponent3(True)
1 g: t; o' {5 q  d. t- w: W, z4 Q4 R    Set vComps = .GetChildren' h9 d: ?5 z; ~% j& z' d
    If Not IsEmpty(vComps) Then% U! @" }  U1 ?$ n$ y) P; k! v
        For i = 0 To UBound(vComps)
- L; g/ k8 z1 k, p- _9 k8 L            Set swComp = vComps(i)
+ @( ?8 g5 J. n7 U! j$ m/ F* d, Y+ [3 p
            ' 检查组件是否被抑制,如果没有被抑制,则计入总数7 Y9 H( b0 w7 E# q5 \
            If swComp.GetSuppression() = swComponentSuppression_e.swComponentNotSuppressed Then
  `# P  v) G5 H                ' 如果组件是零件,则数量加1
& @4 V0 i0 h/ f. T' j: ^                If swComp.GetType = swDocPART Then
, W; Z5 O9 X, ^9 ~7 Y) n  z                    totalQty = totalQty + 1' `" Z, l: H- F
                ElseIf swComp.GetType = swDocASSEMBLY Then
0 R0 `2 l# R* Z( Y                    ' 如果组件是子装配体,则递归计算子装配体中的零件数量  L9 w" b( o' A& x! p) x9 j
                    ' 这里为了简化示例,不递归计算子装配体中的零件数量- @9 [0 }3 `* d7 V( y* q" X% N! R
                    ' 你可以根据需要添加递归函数来处理子装配体8 n9 {: T' B* W/ h
                End If) d/ B7 G' d' G3 ]; _8 F0 d) d
            End If7 R" R* \- c& }) O
        Next i
( {2 R+ ?  e9 s2 s# N6 W    End If1 u3 H( q- l6 L
End
2 [. F$ N$ V$ g* ~With
9 R9 \3 N% d8 ?$ y- p$ B2 U3 _' 创建或更新自定义属性以存储零件总数量
% C  j$ ?, ]! b9 l+ ^% @( v5 @. XSet customPropMgr = swAssy.Extension.CustomPropertyManager("")) \" a5 P; |! B/ o( e# V5 J/ S
customPropMgr.Add2 customPropName, "系统", CStr(totalQty), swCustomPropertyInfo_e.swCustomPropText
+ R& x' W) y7 [' 注意:如果属性已存在,Add2 方法会更新其值,而不是创建新属性。' Y) D0 ~! S8 s- H4 W4 k3 u+ l6 R
' 如果你想要确保属性总是被更新(即使值没有变化),可以使用Set2方法代替Add2。+ m1 g( |2 b  E4 k. Z
4 ~7 Q' A% e" h) b5 x3 c( I6 Q
' 清理对象: o; {# X8 Q; s4 L
Set swComp = Nothing
' _' h5 n1 f& O7 XSet swAssy = Nothing/ b" Q; @/ C0 g
Set swApp = Nothing* ?# Y6 j$ H1 a$ r) X$ w

4 i5 f7 e3 ^8 R$ S: |) o' 提示用户操作完成
0 s6 T* b* q( k9 ~& d& b- {MsgBox "零件总数量已写入到自定义属性 """ & customPropName & """ 中,总数为:" & totalQty, vbInformation
7 @0 d# P1 T4 t" p# O9 U: M&#160;% K" Y3 T/ h$ G
3. 运行宏4:
5 I' u2 ~( y% E8 P在SolidWorks中,打开一个装配体文档。
4 e; e, s  I3 b& M通过宏管理器(通常在“工具”菜单下)找到并运行你编写的宏。9 w* @/ }4 o2 j6 _- r- p
4. 验证结果:8 x  u/ z, F* j3 e; T/ s
运行宏后,你应该会在装配体的自定义属性中找到一个名为“TotalQty”的属性,其值应该等于装配体中零件的总数量。
# D+ \" [+ P4 r**注意事项 **:
  @% L  k, A' W" b) r9 B0 W- X2 X此宏仅计算装配体中的顶层零件数量,不包括子装配体中的零件数量。如果你需要计算包括子装配体在内的所有零件数量,你需要添加递归函数来处理子装配体。
) j0 L( ~" a: s' p. b在运行宏之前,请确保你的SolidWorks文档没有未保存的更改,以防宏运行过程中发生意外导致数据丢失。* v  k' I+ t8 i" |
宏代码中的错误处理部分可以根据你的需求进行扩展和完善,以提高宏的健壮性和可靠性。
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Archiver|手机版|小黑屋|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2025-7-31 20:33 , Processed in 0.067108 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表