机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
123
返回列表 发新帖
楼主: 李邈

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

[复制链接]
发表于 昨天 19:55 | 显示全部楼层
faker558 发表于 2024-11-21 16:350 l2 i/ `5 V" |5 q- s! N; |( ]
在开元没有看到这个功能啊

& ~6 O/ U4 ~) N0 C有的呀,BOM工具里面! o! D3 g% q3 w  z$ X1 C! a
我这个后面自定义了一个数量的项目,这个项是写到零件属性里面的,所以加在后面跟插件的数量对比,如果不一样,就改成和插件统计的一样,这样零件属性里面就有数量了
5 Q$ O; A6 C) B1 f8 M

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 昨天 20:34 | 显示全部楼层
本帖最后由 faker558 于 2024-11-21 20:44 编辑 ' l5 J  |, |; m8 I( r: c& q
看前方 发表于 2024-11-21 19:558 _* O% [6 i% J6 K& v- `5 q( d
有的呀,BOM工具里面
; F; I8 {2 f4 c我这个后面自定义了一个数量的项目,这个项是写到零件属性里面的,所以加在后面跟 ...
- d- v  h5 r" [
感谢楼主,找到了。但是是付费项目,我下载了你的宏文件压缩包,运行了这个宏,怎么毫无反应,零件自定义属性里也没变化,没有自动写入数量,有什么注意事项吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 9 小时前 | 显示全部楼层
土豆土豆442 发表于 2024-10-7 16:38  p/ {8 b, H# A' m! i5 _( l
楼主,能求个宏吗?不会搞
" _. ?# h' S" @6 S
一楼就是
5 u0 b; ^7 G. l. d' d; [8 g
回复 支持 反对

使用道具 举报

 楼主| 发表于 9 小时前 | 显示全部楼层
faker558 发表于 2024-11-21 16:36; V/ r* j; Q/ w/ \% d
刷个威望下附件

3 Z! A* B+ D8 r' y, b6 T; w; {就怕你威望不够,代码都给你了
8 D8 I' y9 X& \  p$ z1 N- w# H
回复 支持 反对

使用道具 举报

发表于 8 小时前 | 显示全部楼层
faker558 发表于 2024-11-21 20:34
) y5 z4 T7 f- f; ]& Q感谢楼主,找到了。但是是付费项目,我下载了你的宏文件压缩包,运行了这个宏,怎么毫无反应,零件自定 ...

; q) T5 g2 E. o0 p5 F# b* `那个宏不是我写的,我没有用宏7 v9 n4 i) W: x2 s
我截的那个图里面,前面那个总数量就是插件统计的,但是那个数量写不到零件属性里面,所以我在后面加了一个数量的项,这个项是可以链接到零件属性里面去的。然后按照插件统计的总数量手动填上去,零件数量上就有显示了
! h8 N/ W. a' J" |" d1 i
回复 支持 反对

使用道具 举报

发表于 5 小时前 | 显示全部楼层
李邈 发表于 2024-11-22 08:08* J$ b) u4 j+ Q" H$ s
就怕你威望不够,代码都给你了
) z/ \) Q1 |0 }! @! T: e* e* P, C
楼主,我用了你那个宏,怎么属性列表里的数量没有变化
2 T. B! o/ m$ H! g8 l5 g) G1 d
回复 支持 反对

使用道具 举报

发表于 5 小时前 | 显示全部楼层
李邈 发表于 2024-11-22 08:084 ?8 U2 ~. P5 J5 q( h) V- ]/ w0 F% l
就怕你威望不够,代码都给你了

# G1 r8 y5 J6 C. _压缩包的我试了,复制代码也试了
回复 支持 反对

使用道具 举报

发表于 5 小时前 | 显示全部楼层
感谢楼主分享,很不错!
$ r6 M( r4 I0 i  ]8 [楼主辛苦了!
回复 支持 反对

使用道具 举报

发表于 5 小时前 | 显示全部楼层
李邈 发表于 2024-11-22 08:08
, y' d$ t" x& J+ u$ K4 p就怕你威望不够,代码都给你了
! l7 f% h% i" a4 R' U
十分感谢楼主,可以用了,我的SW版本是2020,把库改成2020就可以用了,十分感谢+ r$ K1 l+ o$ i9 F
回复 支持 反对

使用道具 举报

发表于 5 小时前 | 显示全部楼层
我用手机助手写了一个宏程序,不知道为什么用不了,语法错误,楼主可以帮忙看看吗
0 E! i: b; }) U) J! p$ a" ]" _3 k以下是一个用于SolidWorks(SW)的向装配体里面写入零件总数量的宏的示例。此宏使用VBA(Visual Basic for Applications)编写,可以在SolidWorks的宏环境中运行。请按照以下步骤操作:
" k- b1 u/ g+ e& J0 `1 n
1 ^$ z+ x8 I$ U/ E' H/ Q& v9 G1. 打开SolidWorks并启用宏环境4:
0 n3 k' C* H: I: U1 V3 }/ Y确保你的SolidWorks已经安装了VBA宏支持。$ @# g* f& b2 _( {; s0 [$ ]
打开SolidWorks,并启用宏录制和运行功能(通常在“工具”或“选项”菜单中可以找到)。7 z  ]( h2 S2 T: i  r! b6 |6 p* x
2. 编写宏代码:4 K( z% i4 m9 B
 
! X/ g* l3 z, r, G4 K! |7 \  }Dim swApp As SldWorks.SldWorks
+ X& g# S. v* N9 x7 ^Dim swAssy As SldWorks.AssemblyDoc
7 @1 X) H3 t; }) M4 C6 ?Dim swComp As SldWorks.Component2- ^8 u# l8 I1 {4 d) J0 J5 O) y: c; A
Dim vComps As Variant; `4 N" D5 E, w" S# A5 V; a, F
Dim i As Long, totalQty As Long% H  A( H& X4 p- L
Dim customPropMgr As SldWorks.CustomPropertyManager
( C* E: L( z8 |1 G6 uDim customPropName As String3 P; M( g/ z3 W  D  t

( F. P: v2 @8 H6 h' w' 初始化SolidWorks应用程序对象# h& Q, \6 d, H+ N/ z- Q" I2 b
Set swApp = Application.SldWorks
( z2 x+ O& {6 d9 _- l( V* |2 W! e8 V5 g
' 获取当前活动的装配体文档, U8 g+ G3 b6 N' ~! O
Set swAssy = swApp.ActiveDoc
. `$ d+ O4 Y2 k  x) x" @# [2 S" [# j; l3 @
' 检查是否为装配体文档
4 j0 v  U0 E: y; bIf swAssy Is Nothing Or swAssy.GetType <> swDocASSEMBLY Then
6 m7 q7 r8 I7 q: u& {    MsgBox "请打开一个装配体文档。", vbExclamation
7 K/ v' ]% h+ u0 A& O1 o, t    Exit Sub! R; V9 t6 Q6 f- H" L
End If$ d# `9 S9 ~# e' E/ d6 g0 k: `
% ^1 T5 b8 y* }4 @4 ]  H2 w
' 初始化零件总数量
( K' I% |( o( ytotalQty = 0) w7 a% D8 [5 i0 `

8 a. _" O. h( W& G/ j' 自定义属性名称,用于存储零件总数量
8 e  O) K# c$ e, v+ Q4 QcustomPropName = "TotalQty"" i# M+ V; }3 z
' V% [" ?2 X9 [# r
' 遍历装配体中的所有组件4 v# N" M/ y) R* ?$ p) \
With swAssy.ConfigurationManager.ActiveConfiguration.GetRootComponent3(True)9 n( g( z+ G: @: _+ J7 [/ y
    Set vComps = .GetChildren4 r; |+ Q# i: }- z  P" c7 f- y& ~1 u
    If Not IsEmpty(vComps) Then
; l2 X- ?* a& J        For i = 0 To UBound(vComps)( {) ~' u$ V- F4 J4 T7 h0 R
            Set swComp = vComps(i)
3 U) U3 K8 O5 C/ Y# z
6 s7 G+ A. z- ~% O$ N/ c            ' 检查组件是否被抑制,如果没有被抑制,则计入总数
' P( S7 d1 u- u* {0 u- m8 w            If swComp.GetSuppression() = swComponentSuppression_e.swComponentNotSuppressed Then4 P7 `* @' m, l4 L4 ^4 H2 \6 g9 ^
                ' 如果组件是零件,则数量加1/ @( j4 A5 O6 U: _
                If swComp.GetType = swDocPART Then
7 c' s- j& W4 s8 q; l1 y                    totalQty = totalQty + 1
* M* t  |7 w, H                ElseIf swComp.GetType = swDocASSEMBLY Then
& ?+ {) |4 F( \; Y5 [# L/ a0 D  a' {                    ' 如果组件是子装配体,则递归计算子装配体中的零件数量
, Y7 o+ D& R# N. A, z2 D                    ' 这里为了简化示例,不递归计算子装配体中的零件数量
5 D) i: Z& Q1 Z  ^- Q                    ' 你可以根据需要添加递归函数来处理子装配体( P/ X; O# d6 t! b- C! _; m# `
                End If0 j3 `) r- Z0 S/ r9 f# I
            End If
4 z3 E9 L" F) z        Next i
4 I& w0 A- [1 b8 v5 A$ A3 O    End If; O* O! u1 S/ i$ Z; E+ B
End ' Y) E# }0 W* v& U+ r" s
With
* T5 m$ F6 b! B% ?- |! |' 创建或更新自定义属性以存储零件总数量. B! K0 e  A" i2 G7 L1 t7 X: b
Set customPropMgr = swAssy.Extension.CustomPropertyManager("")2 a/ V  C0 `5 G/ E( g# \7 w5 k
customPropMgr.Add2 customPropName, "系统", CStr(totalQty), swCustomPropertyInfo_e.swCustomPropText) j# }0 z  {( \! P6 h( G
' 注意:如果属性已存在,Add2 方法会更新其值,而不是创建新属性。: T+ Q) i) W- ?+ ^
' 如果你想要确保属性总是被更新(即使值没有变化),可以使用Set2方法代替Add2。( ^) m+ I0 |6 P  `9 Y

1 ?7 d' N$ v9 s7 B4 ~7 }' 清理对象  X: C% @- \7 f" L& b6 K
Set swComp = Nothing
/ x7 j; E: _% a  x) ]Set swAssy = Nothing7 }: A9 U, t- S) r: n
Set swApp = Nothing
: I, r5 c5 n7 x+ b( t2 T+ V, g7 u. u
' 提示用户操作完成
; x, b' K' ~, A6 V5 hMsgBox "零件总数量已写入到自定义属性 """ & customPropName & """ 中,总数为:" & totalQty, vbInformation
' Q2 c; J6 t7 F" @/ i( C6 u. I 6 \! C; k) J) h9 ^
3. 运行宏4:
8 \5 ?5 }% W% j" j在SolidWorks中,打开一个装配体文档。# l+ q+ y" F. d, i2 X& B3 j
通过宏管理器(通常在“工具”菜单下)找到并运行你编写的宏。: n9 A% l2 W: W" g1 {
4. 验证结果:# U9 Z, `& X$ A6 K  I$ i  H4 H% u* ?
运行宏后,你应该会在装配体的自定义属性中找到一个名为“TotalQty”的属性,其值应该等于装配体中零件的总数量。
7 f" a1 p5 F' L9 _**注意事项 **:
# o! t1 d5 I+ C/ P1 r7 b此宏仅计算装配体中的顶层零件数量,不包括子装配体中的零件数量。如果你需要计算包括子装配体在内的所有零件数量,你需要添加递归函数来处理子装配体。
6 t  Q$ w- A$ W在运行宏之前,请确保你的SolidWorks文档没有未保存的更改,以防宏运行过程中发生意外导致数据丢失。6 N6 f$ @. L9 s( y0 x( X4 O
宏代码中的错误处理部分可以根据你的需求进行扩展和完善,以提高宏的健壮性和可靠性。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2024-11-22 17:14 , Processed in 0.053855 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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