找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 3533|回复: 10

solidworks中利用宏名称检测,希望大神解答

[复制链接]
发表于 2021-1-5 10:09:49 | 显示全部楼层 |阅读模式
solidworks用了图号名称分离,先有个问题,标准件一般是开头是中文,怎么编辑宏命令检测到中文跳出程序呢?求大神解惑。比如:零件名称: 12354 中文   零件属性中图号:12354  名称:中文;零件名称是标准弹垫 12345   当检测到这个零件后不进行图号名称分离。3 W; k8 d$ a( e( [
回复

使用道具 举报

 楼主| 发表于 2021-1-5 10:16:14 | 显示全部楼层
solidworks中宏是类似哪种语言呢?VB?Oracle?C++?

点评

VBA  发表于 2021-1-5 10:19
发表于 2021-1-5 10:20:40 | 显示全部楼层
加个if语句判断一下
' S4 M  b3 P2 J  ^( J
 楼主| 发表于 2021-1-5 10:37:18 | 显示全部楼层
魍者归来 发表于 2021-1-5 10:20' G, U/ ~0 r% s/ P  w& Y
加个if语句判断一下
0 `, v0 u7 R6 M# T5 [3 \( a
大神,你好,刚才看了你在宏中提取名称的视频。; I$ J3 h4 H: t$ B
以下是图号名称分离的宏中一段代码:. K, e7 `1 F% S2 w0 ?: t" s0 R4 Q
5 H0 b" R9 W  i6 c/ w
c = swApp.ActiveDoc.GetTitle() '零件名
8 a: e/ d; l3 _5 c1 p6 C想在这加if判断c中字符串第一个字符是汉字或者不是字母数字,但是这个和C语言不一样,不太会,也不知道solidworks中宏的语言是哪种。$ j( G; S2 G3 j
望大神指教或者之前填上吧。万分感谢。% L( ?4 Z7 T8 m- G- d" I3 C

; U0 x& Z1 R1 r! I+ c

. ~! X, r/ H* X- Wstrmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34)
+ M& P$ B/ m2 B+ F4 Mblnretval = Part.DeleteCustomInfo2("", "代号"): f% M/ i5 n' n$ ]' K6 V' Z
blnretval = Part.DeleteCustomInfo2("", "名称")! Y9 a% z2 Y! l% R" A6 f) K
a = InStr(c, " ") - 1      '重点:分隔标识符,这里是一个空格$ Q; k9 Q) }% u. D5 H% u
If a > 0 Then% d% }3 H0 }& z) P8 K) k# |4 f5 x
    k = Left(c, a); N# |- H( E" S
    t = Left(LTrim(e), 3); X" O  u0 ~" P/ ?" c- N
    If t = "GBT" Then6 r# e! j/ F7 I0 h/ t& J) [7 ?
        e = "GB/T" + Mid(k, 4)
) s5 X8 h$ j( i* \3 g    Else
5 \8 Q" A+ J* a% {% D- Y. J        e = k
9 g4 Q" l3 r! E) k8 l    End If
& y% o" p; N1 l* e8 Y" C% r    b = Mid(c, a + 2)' |% l- W8 g" Z) U7 w) ?3 p
    t = Right(c, 7)3 t" o( \# L9 p
    If t = ".SLDPRT" Or t = ".SLDASM" Or t = ".sldprt" Or t = ".sldasm" Then
4 s+ |  H  R4 I6 A        j = Len(b) - 7 '消除后缀(区分大小写共4种)7 d  ]# Z; A& [6 \: ^! |
    Else! P5 g* x0 @" g- p6 b! H7 F
        j = Len(b)
* N3 v6 [6 B# l& x$ G- ?    End If9 @6 R# k0 M' Z7 |+ J
    m = Left(b, j)
( W2 m- @9 f! WEnd If
4 j, M/ p/ E- O9 E- Rblnretval = Part.AddCustomInfo3("", "代号", swCustomInfoText, e)  '代号! [  {# E* O7 j
blnretval = Part.AddCustomInfo3("", "名称", swCustomInfoText, m)  '名称2 J6 t0 }, ], t
'blnretval = Part.AddCustomInfo3("", "图号", swCustomInfoText, e)  '图号% F, P& E) @, @5 w- s+ E

' K3 e* }5 x/ Y& _
 楼主| 发表于 2021-1-5 10:43:39 | 显示全部楼层
foxlord 发表于 2021-1-5 10:16; ]% R) r- @6 Z
solidworks中宏是类似哪种语言呢?VB?Oracle?C++?
4 k7 c/ Z( A+ P/ ^+ ]8 w$ v  w
好的。了解。我查查
+ }% X9 X+ K9 s" q
发表于 2021-1-5 12:36:06 | 显示全部楼层
我也用的这个宏
" e1 M6 n  r8 s/ Q3 K- p) O2 B对于外购件,我一般是这样命名的  比如  轴承  6906   螺钉 M8×10   电磁阀  SY5120-DDDD,等等吧。2 U) t2 f' E& g' f. E, J" O
我对这个宏,稍微修改了一下,就能用了。再弄个宏按钮
发表于 2021-1-5 13:46:32 | 显示全部楼层
SW是VBA,有语言互转软件吗?
 楼主| 发表于 2021-1-5 14:38:45 | 显示全部楼层
加了条语句,已经搞定了。谢谢大家的帮助。5 d/ R) L$ X, X3 K" Z+ A
'设定变量3 K) c% v, Y0 K" d: F8 i8 }3 \2 K
c = swApp.ActiveDoc.GetTitle() '零件名# Z5 z  I+ Q4 {. o, _% v% L, X
If Asc(c) > 0 Then
6 m, w/ N; d3 m. [2 ^; P- @) \
* t, X* A- y, k) q! B; n1 Z" m% Zstrmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34)
0 S& E: m& V3 k6 |blnretval = Part.DeleteCustomInfo2("", "代号"), D2 H  [5 _( o2 S5 V3 S- u3 D
blnretval = Part.DeleteCustomInfo2("", "名称")& ^6 ^$ I9 `' z. _
a = InStr(c, " ") - 1      '重点:分隔标识符,这里是一个空格
/ J  ^* A5 Y$ ^1 Q8 u+ gIf a > 0 Then
% Y2 |0 I4 P; ~    k = Left(c, a)# a$ P( u' H: Z. _
    t = Left(LTrim(e), 3)7 Y% a9 L( q6 r, V; j
    If t = "GBT" Then
) D( v! t4 i; x) M- c% ?9 \        e = "GB/T" + Mid(k, 4)1 s. n( r% |/ h9 w# d0 h& Q# Y7 e9 e
    Else, o7 ^0 i" g  e6 g/ Z. m
        e = k
; H  k- I. q1 [  j    End If
; Q' K8 F  o/ M# ~    b = Mid(c, a + 2)
( L8 n' A" I9 r+ a- e    t = Right(c, 7)& c, L: Y: u8 c  k: X9 o
    If t = ".SLDPRT" Or t = ".SLDASM" Or t = ".sldprt" Or t = ".sldasm" Then
' K7 J+ @6 S6 d7 b  `1 V        j = Len(b) - 7 '消除后缀(区分大小写共4种)- e( _2 x" E1 q0 M! k0 @& `
    Else
% D+ s2 Z4 d/ A, \        j = Len(b)! P0 d% C0 h; o( R9 [2 N' G/ ]  g: X
    End If! K# w7 m1 \. Z4 A& F7 K/ B" f
    m = Left(b, j)
2 a* q, L4 d$ v, u- kEnd If2 T) \5 F# |3 V3 S# |
blnretval = Part.AddCustomInfo3("", "代号", swCustomInfoText, e)  '代号
  `0 M6 l5 l' ~- Kblnretval = Part.AddCustomInfo3("", "名称", swCustomInfoText, m)  '名称: X( f1 n% F. ^- X0 M
'blnretval = Part.AddCustomInfo3("", "图号", swCustomInfoText, e)  '图号7 c. ?3 D) D% X! M$ q
End If* x" i) z; k* T: |  u/ d8 D- ]- s
发表于 2021-1-5 16:30:26 | 显示全部楼层
这个看似高大上,用起来却并不快捷呀!
 楼主| 发表于 2021-1-5 17:02:21 | 显示全部楼层
远祥 发表于 2021-1-5 16:30
9 t9 g3 P; ?+ k5 c这个看似高大上,用起来却并不快捷呀!

* [: v- ?! V! U4 O- c还行吧,个人习惯,我用的切换填入信息,不是按钮。, W/ B+ a1 E0 b: c
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-9-23 03:19 , Processed in 0.056853 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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