找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
楼主: 李邈

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

  [复制链接]
发表于 2024-11-21 19:55:25 | 显示全部楼层
faker558 发表于 2024-11-21 16:35# L: k# r% q+ e( X+ m$ x, U0 s
在开元没有看到这个功能啊
+ D$ p) M8 g0 K* N+ P4 M, F+ j
有的呀,BOM工具里面! k$ _7 m' ]1 ^0 O: g  w
我这个后面自定义了一个数量的项目,这个项是写到零件属性里面的,所以加在后面跟插件的数量对比,如果不一样,就改成和插件统计的一样,这样零件属性里面就有数量了
1 g1 ?+ H/ y6 V7 X$ ^8 m

本帖子中包含更多资源

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

×
发表于 2024-11-21 20:34:27 | 显示全部楼层
本帖最后由 faker558 于 2024-11-21 20:44 编辑 , q# _* e" {- R6 v4 ~& P; y; z
看前方 发表于 2024-11-21 19:55
; j' p# A& C3 m( f' \7 H有的呀,BOM工具里面5 h% ?/ |' e6 i  w$ w' s$ E
我这个后面自定义了一个数量的项目,这个项是写到零件属性里面的,所以加在后面跟 ...

4 s5 p, q5 C) `# t* X" y感谢楼主,找到了。但是是付费项目,我下载了你的宏文件压缩包,运行了这个宏,怎么毫无反应,零件自定义属性里也没变化,没有自动写入数量,有什么注意事项吗
 楼主| 发表于 2024-11-22 08:08:00 | 显示全部楼层
土豆土豆442 发表于 2024-10-7 16:38$ T1 x- Q( I7 A% @
楼主,能求个宏吗?不会搞

; u( {' ~. a# D3 v+ z一楼就是
7 J, q5 W# C5 y  p! S6 X" U# h
 楼主| 发表于 2024-11-22 08:08:56 | 显示全部楼层
faker558 发表于 2024-11-21 16:36
" D% O# a* q3 |4 m# p刷个威望下附件
! m) ~: `5 m+ w8 n, A
就怕你威望不够,代码都给你了, P: u- M9 S1 d
发表于 2024-11-22 08:48:09 | 显示全部楼层
faker558 发表于 2024-11-21 20:34
: l) g: q7 ]5 |& U, i9 c感谢楼主,找到了。但是是付费项目,我下载了你的宏文件压缩包,运行了这个宏,怎么毫无反应,零件自定 ...
+ A! b. W) Y1 \4 z4 l+ q
那个宏不是我写的,我没有用宏
9 }4 O7 {; c; \4 e  x4 m我截的那个图里面,前面那个总数量就是插件统计的,但是那个数量写不到零件属性里面,所以我在后面加了一个数量的项,这个项是可以链接到零件属性里面去的。然后按照插件统计的总数量手动填上去,零件数量上就有显示了2 C3 C- G+ N1 L- ?7 @
发表于 2024-11-22 11:30:19 | 显示全部楼层
李邈 发表于 2024-11-22 08:08% o* O7 h7 {/ n  `* E$ C
就怕你威望不够,代码都给你了
& t& \8 |! v0 f, F
楼主,我用了你那个宏,怎么属性列表里的数量没有变化
8 I" `) u3 h$ Y3 B' W: n. n
发表于 2024-11-22 11:31:39 | 显示全部楼层
李邈 发表于 2024-11-22 08:08) P# U1 R$ u2 T& g8 K1 X8 _0 X
就怕你威望不够,代码都给你了

; y: F# D. M) o  l1 ]) E3 k压缩包的我试了,复制代码也试了
发表于 2024-11-22 11:49:02 | 显示全部楼层
感谢楼主分享,很不错!4 Y! H: e, L" X- T( @& Q3 _
楼主辛苦了!

点评

应该的xixi  发表于 2024-11-23 08:30
发表于 2024-11-22 11:49:20 | 显示全部楼层
李邈 发表于 2024-11-22 08:08$ g: S* d9 H1 ?3 e
就怕你威望不够,代码都给你了

* A, u) d& Z' V5 v+ c1 C# K十分感谢楼主,可以用了,我的SW版本是2020,把库改成2020就可以用了,十分感谢0 s& Z: N6 o$ N
发表于 2024-11-22 11:58:45 | 显示全部楼层
我用手机助手写了一个宏程序,不知道为什么用不了,语法错误,楼主可以帮忙看看吗# O- }% J7 l6 ^7 _/ x
以下是一个用于SolidWorks(SW)的向装配体里面写入零件总数量的宏的示例。此宏使用VBA(Visual Basic for Applications)编写,可以在SolidWorks的宏环境中运行。请按照以下步骤操作:
) N1 A  k. w. k9 f6 C4 d/ E/ _7 g" w
1. 打开SolidWorks并启用宏环境4:
/ a$ S! M1 B7 V0 Y+ E& S2 \7 l0 f确保你的SolidWorks已经安装了VBA宏支持。' H* _, z/ V" X" w
打开SolidWorks,并启用宏录制和运行功能(通常在“工具”或“选项”菜单中可以找到)。
& D( f4 O# X. D3 c/ T2. 编写宏代码:
& v1 N" \7 ?8 q3 v ' H2 G4 @% H& V# d: |% x
Dim swApp As SldWorks.SldWorks
2 n! Y5 ]/ W# t- f! ]Dim swAssy As SldWorks.AssemblyDoc% ^9 s9 Y% P$ E( N9 \. Z/ \
Dim swComp As SldWorks.Component2
. j+ N( i' C; KDim vComps As Variant
8 j! y, B* A: B7 cDim i As Long, totalQty As Long2 B8 ]5 e9 S3 G3 ^2 N" }& ]
Dim customPropMgr As SldWorks.CustomPropertyManager, i1 H1 r! A3 F$ V5 _
Dim customPropName As String* W/ Q* s# x& C1 [  a
. ~1 L# A0 F+ E4 G  B% ~& N
' 初始化SolidWorks应用程序对象$ ?# e5 S- u( b  L
Set swApp = Application.SldWorks
# B; Z4 @8 g: u) i+ c
* U4 @7 F' H, |' 获取当前活动的装配体文档
2 |' ~8 Q" t0 Z7 ?  e$ T- u$ p0 a' x" tSet swAssy = swApp.ActiveDoc# ?% u6 {  ?8 k9 V% _

# C6 `* T7 ?6 u+ i+ m' 检查是否为装配体文档, S! ]! [: V, U) u, k2 c" ?- ?: \
If swAssy Is Nothing Or swAssy.GetType <> swDocASSEMBLY Then) ?$ e( ~1 z3 r, u& p+ j
    MsgBox "请打开一个装配体文档。", vbExclamation1 V% D3 p! C2 @+ C1 a) S4 p
    Exit Sub0 Y, T, h# M6 ?  I
End If
3 y& B; H7 i6 W9 H1 p- H8 @  Z7 X. v. x
' 初始化零件总数量- ^: K& F& Y. |3 x7 E! @7 A
totalQty = 0
9 A) ~( |+ c# M. p  t- Q) Z$ V# B) w! a2 m! |  D4 o! R7 A
' 自定义属性名称,用于存储零件总数量% E' s5 ?) i. b; Y! d- a0 e9 M# m
customPropName = "TotalQty"
. M3 L: T6 c9 H4 \( d7 }7 x0 Z' N* u5 R- V% @6 ^
' 遍历装配体中的所有组件( K1 \& a2 Z/ b8 ]) e
With swAssy.ConfigurationManager.ActiveConfiguration.GetRootComponent3(True)5 S9 E; F6 S0 X
    Set vComps = .GetChildren0 ?' ~3 a/ R' A# A0 K, U
    If Not IsEmpty(vComps) Then( k  I4 \6 h" G, l4 o
        For i = 0 To UBound(vComps)3 X9 x# H) f5 `7 p( u: [) F2 |$ a
            Set swComp = vComps(i)
( h! ^/ Z# f  E  Q3 R2 O! S+ [' O
            ' 检查组件是否被抑制,如果没有被抑制,则计入总数
( j& k+ y  ]1 Q2 u/ O- y" u$ g  ~            If swComp.GetSuppression() = swComponentSuppression_e.swComponentNotSuppressed Then
1 Y! R- g* Y. i  l$ N) j7 P                ' 如果组件是零件,则数量加1$ s: o: y! Z: ]. ^
                If swComp.GetType = swDocPART Then
* B7 P  d; B/ [! t$ e! K. k                    totalQty = totalQty + 1+ J- X5 h' }% I8 B2 ^9 q" ~
                ElseIf swComp.GetType = swDocASSEMBLY Then: [8 B; D: W$ k" I: Q
                    ' 如果组件是子装配体,则递归计算子装配体中的零件数量" `: b# C- g, O/ `0 L3 Q& Z' T- U
                    ' 这里为了简化示例,不递归计算子装配体中的零件数量' J7 C$ H' z7 w6 `: t# r
                    ' 你可以根据需要添加递归函数来处理子装配体, @4 K8 O2 v4 I. h' V$ v( m
                End If
5 v8 O$ r( i7 c            End If
$ U3 F9 @1 i& }. ]" J: }# h9 D        Next i* k6 I- p9 n( ?9 }
    End If
" [" l) [4 g! i( f7 K( r" HEnd 2 m2 A% b* `) q! x# B* m3 ~
With& v. C3 u' ?/ J% C3 z: j8 W) }% X4 L
' 创建或更新自定义属性以存储零件总数量: x7 Q# B; I) l3 Q% e' A
Set customPropMgr = swAssy.Extension.CustomPropertyManager("")
6 p% [' q8 |1 N3 H; J0 zcustomPropMgr.Add2 customPropName, "系统", CStr(totalQty), swCustomPropertyInfo_e.swCustomPropText. ^/ d, U" a2 \' V3 B
' 注意:如果属性已存在,Add2 方法会更新其值,而不是创建新属性。; i8 m0 n' Q2 }5 U9 K: `! t  C/ Q
' 如果你想要确保属性总是被更新(即使值没有变化),可以使用Set2方法代替Add2。
8 @, P" v/ |/ {6 {' [$ d
, y2 J1 N/ h+ r* q; u* G7 r2 z' 清理对象+ ?8 ?* Q1 A* g; `' f( z; C$ _
Set swComp = Nothing4 v% A# P6 n8 p8 p$ ]3 U
Set swAssy = Nothing+ k3 b  m9 B6 s! @1 W+ n( ?
Set swApp = Nothing
9 g* Y4 @* J) |7 t. }
, I9 ]4 T  Y1 w/ h: h  c' 提示用户操作完成8 N6 u1 i& u- Q# W/ Q& j. r2 I& H
MsgBox "零件总数量已写入到自定义属性 """ & customPropName & """ 中,总数为:" & totalQty, vbInformation6 X( y; j8 t/ O% g) |3 C# @
&#160;
, C& |/ I2 q9 a- l) b3. 运行宏4:
2 q: v' v8 N5 f0 J7 n4 V) g在SolidWorks中,打开一个装配体文档。
: V7 B! j0 R6 x通过宏管理器(通常在“工具”菜单下)找到并运行你编写的宏。
/ m6 L. D. D: n& W! j" y7 _4. 验证结果:
3 P. Q5 _  X' l8 |- [5 A. g运行宏后,你应该会在装配体的自定义属性中找到一个名为“TotalQty”的属性,其值应该等于装配体中零件的总数量。
$ b6 H5 a  z1 Q; a; s**注意事项 **:
$ @' a9 f& `7 e& _( d9 |% P" H此宏仅计算装配体中的顶层零件数量,不包括子装配体中的零件数量。如果你需要计算包括子装配体在内的所有零件数量,你需要添加递归函数来处理子装配体。0 s  z, O# V6 L* T! h
在运行宏之前,请确保你的SolidWorks文档没有未保存的更改,以防宏运行过程中发生意外导致数据丢失。
6 f4 s4 G. v- i宏代码中的错误处理部分可以根据你的需求进行扩展和完善,以提高宏的健壮性和可靠性。
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-9-19 02:32 , Processed in 0.064475 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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