找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 3532|回复: 10

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

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

使用道具 举报

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

点评

VBA  发表于 2021-1-5 10:19
发表于 2021-1-5 10:20:40 | 显示全部楼层
加个if语句判断一下
. ?* u- g# Z3 Q1 _
 楼主| 发表于 2021-1-5 10:37:18 | 显示全部楼层
魍者归来 发表于 2021-1-5 10:20
3 {% Y& C! P0 b6 z8 D: U' G/ A加个if语句判断一下

2 b* I# D' @5 n7 \/ R1 }, j大神,你好,刚才看了你在宏中提取名称的视频。
( G3 m, P5 ^+ `8 h9 N8 A以下是图号名称分离的宏中一段代码:
$ T2 |8 X2 ]! ~" r* @  b! h! D+ `+ x" y5 f+ I
c = swApp.ActiveDoc.GetTitle() '零件名8 E( ~$ o* L: o3 Q
想在这加if判断c中字符串第一个字符是汉字或者不是字母数字,但是这个和C语言不一样,不太会,也不知道solidworks中宏的语言是哪种。
' Y: V) |# U9 `2 j望大神指教或者之前填上吧。万分感谢。
% }$ @$ U7 L% ^* p" Z  l0 C; ]7 D1 ^% p% |: H
" c7 k) T% o1 |! h# L; M
strmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34); ]( b2 i; V# H% `8 A
blnretval = Part.DeleteCustomInfo2("", "代号")
( ]$ J. Z- S' R# sblnretval = Part.DeleteCustomInfo2("", "名称")
2 z/ ?. T6 F! T/ y! B- |3 e% za = InStr(c, " ") - 1      '重点:分隔标识符,这里是一个空格2 {: O, B2 y1 O% Y3 X8 x
If a > 0 Then% o  ~% L- ~* V4 g4 r& U% _
    k = Left(c, a)+ V. _. p* O  G
    t = Left(LTrim(e), 3)' z, o3 ?( D' C- _9 I
    If t = "GBT" Then
; U; T: M( R+ `        e = "GB/T" + Mid(k, 4)$ y& I5 c5 `: g, G# Y! D  `3 G
    Else
6 @' V/ N* Q! }2 K8 c" e        e = k
: }4 A  j) F- E0 R& I, z, D    End If
/ M; o! |; k" ~: `6 _8 X3 o5 m    b = Mid(c, a + 2)
  ]1 @6 J/ `- j( i- q    t = Right(c, 7)8 i% C, m6 ^& c; ^$ R
    If t = ".SLDPRT" Or t = ".SLDASM" Or t = ".sldprt" Or t = ".sldasm" Then" {) _; A- }! A1 `' j9 j5 a& p& U, [- `
        j = Len(b) - 7 '消除后缀(区分大小写共4种)" b4 z# I" w. W0 j% D4 L
    Else! Q/ k+ l+ e6 o- S7 q/ l6 h
        j = Len(b)7 m; l: ^; {; {4 [! [
    End If
# E3 ?; T5 r2 C; l4 X    m = Left(b, j)$ B. c- N: C; I
End If, _) m5 m# z% R  E* g& g
blnretval = Part.AddCustomInfo3("", "代号", swCustomInfoText, e)  '代号/ |6 S( H, ]3 E1 a+ B1 C! W; s: B! q
blnretval = Part.AddCustomInfo3("", "名称", swCustomInfoText, m)  '名称
6 h. W- N0 Z" _/ G, A'blnretval = Part.AddCustomInfo3("", "图号", swCustomInfoText, e)  '图号/ Q6 U! X2 A/ F6 C8 `( d

) q4 J$ _7 C; L( _* C
 楼主| 发表于 2021-1-5 10:43:39 | 显示全部楼层
foxlord 发表于 2021-1-5 10:16
! e% c. E" G3 l1 @8 Bsolidworks中宏是类似哪种语言呢?VB?Oracle?C++?
2 M1 @, ^! i7 ~# A/ I
好的。了解。我查查
1 n4 R, F# _3 ^7 a  B9 B4 |: ?7 G: i
发表于 2021-1-5 12:36:06 | 显示全部楼层
我也用的这个宏9 u) f: }' M. |7 }
对于外购件,我一般是这样命名的  比如  轴承  6906   螺钉 M8×10   电磁阀  SY5120-DDDD,等等吧。% J0 v8 T6 V. ?
我对这个宏,稍微修改了一下,就能用了。再弄个宏按钮
发表于 2021-1-5 13:46:32 | 显示全部楼层
SW是VBA,有语言互转软件吗?
 楼主| 发表于 2021-1-5 14:38:45 | 显示全部楼层
加了条语句,已经搞定了。谢谢大家的帮助。$ P+ A: s/ u$ v+ e' u1 j7 @
'设定变量
3 [9 }% |% u( j5 T+ tc = swApp.ActiveDoc.GetTitle() '零件名
  d4 I  E: r7 o) n' ~1 x  lIf Asc(c) > 0 Then0 H, M8 v) z; c% }& B9 e. Y
, g( K+ r+ ?5 j: S* t& e
strmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34)5 }2 Z3 E$ [( I  Y( w& Z6 s6 u
blnretval = Part.DeleteCustomInfo2("", "代号")
& B5 Y# j5 a7 g; W+ Ublnretval = Part.DeleteCustomInfo2("", "名称"): I  M% D$ ?) b+ [. }: V' e% S
a = InStr(c, " ") - 1      '重点:分隔标识符,这里是一个空格
( t: Y6 w4 @9 `4 o$ t, s5 H% YIf a > 0 Then
5 G! }+ v- v4 @* y$ z: e; \    k = Left(c, a)
, o" v9 O( m1 \/ b# A    t = Left(LTrim(e), 3): E+ i. W7 o0 i, T. ~' Q- j6 Z
    If t = "GBT" Then* Y* t6 @/ Q' V# D8 T% g
        e = "GB/T" + Mid(k, 4)
: P+ I0 F2 e& B+ V0 o    Else
- b4 }9 h4 h7 }  j, K  ?1 R7 G        e = k
( e+ A7 L* o  Q2 e5 N    End If
: b1 g- g* ^/ a+ {3 u8 K$ X( S    b = Mid(c, a + 2)$ r. F3 r: d3 U8 g; Q
    t = Right(c, 7)* r* @- ^1 F8 q( _% M
    If t = ".SLDPRT" Or t = ".SLDASM" Or t = ".sldprt" Or t = ".sldasm" Then
" l* X+ o# z! V6 l$ z( x0 l        j = Len(b) - 7 '消除后缀(区分大小写共4种)$ d- D" K. P* j& ~
    Else
4 A: \, q- [: B; T        j = Len(b)* h# |1 w5 G# ?1 B1 k' o: O
    End If3 v3 y- Z% D" R0 W: q% c
    m = Left(b, j)
2 W" z/ z% C( _" Q5 @/ QEnd If
  _5 ^7 U( Z: t/ t9 y- tblnretval = Part.AddCustomInfo3("", "代号", swCustomInfoText, e)  '代号: ?- S# I4 J; A- Q
blnretval = Part.AddCustomInfo3("", "名称", swCustomInfoText, m)  '名称
. |, h: e* h& }" s( F0 C/ h; F'blnretval = Part.AddCustomInfo3("", "图号", swCustomInfoText, e)  '图号7 E1 p+ U& _6 n) k6 L
End If
6 A$ ~& ~3 _( b1 S
发表于 2021-1-5 16:30:26 | 显示全部楼层
这个看似高大上,用起来却并不快捷呀!
 楼主| 发表于 2021-1-5 17:02:21 | 显示全部楼层
远祥 发表于 2021-1-5 16:30  g7 Z0 H3 z9 i% R  w3 W8 u
这个看似高大上,用起来却并不快捷呀!

/ z2 Z  |) D2 v$ y3 r( v8 G- |还行吧,个人习惯,我用的切换填入信息,不是按钮。& g# s5 p2 q* Z2 B1 Z1 a, ^
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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