机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2741|回复: 10

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

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

使用道具 举报

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

点评

VBA  发表于 2021-1-5 10:19
回复 支持 反对

使用道具 举报

发表于 2021-1-5 10:20:40 | 显示全部楼层
加个if语句判断一下; G- a+ h: q" X) c! F! r( R
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-5 10:37:18 | 显示全部楼层
魍者归来 发表于 2021-1-5 10:20  ^! ^) Y, G. g; F5 [! I* o6 x
加个if语句判断一下
7 a' M% a, l# B+ j$ s, ?
大神,你好,刚才看了你在宏中提取名称的视频。
) |' u# n; I) X以下是图号名称分离的宏中一段代码:& g& Q4 [& E9 y1 m
, S0 V) A1 j; J3 S3 W6 W
c = swApp.ActiveDoc.GetTitle() '零件名5 l1 A8 p/ b3 n/ `3 J/ D
想在这加if判断c中字符串第一个字符是汉字或者不是字母数字,但是这个和C语言不一样,不太会,也不知道solidworks中宏的语言是哪种。* U1 H4 c/ x( [6 p( @9 r! _! H* r
望大神指教或者之前填上吧。万分感谢。
6 ^: I% a. p! k% v9 V6 X: ~" k8 w1 T( K9 {" n5 i

3 h3 |0 V/ G7 xstrmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34)
+ r: Y( ^" H% z" p& g/ n$ {9 \blnretval = Part.DeleteCustomInfo2("", "代号")
* m+ ]4 @* I; N9 g( ?blnretval = Part.DeleteCustomInfo2("", "名称")
/ A4 z, E" q7 U/ J8 s5 R- f# L3 ~a = InStr(c, " ") - 1      '重点:分隔标识符,这里是一个空格" l6 p  ?/ X6 d! @% B
If a > 0 Then- b% S9 p7 Z4 ~6 [% a
    k = Left(c, a)
" {  u- `4 o' j    t = Left(LTrim(e), 3)
4 ]6 E. ]& H* X  U, I" d% \' c" Y    If t = "GBT" Then
, t: n& E1 M) |# A, B        e = "GB/T" + Mid(k, 4)) [  n  v  s  \0 ^. ?6 q# O+ u
    Else# G# `) {0 S2 s$ k$ ], i% p
        e = k
' }' p  L# q1 `& p) O/ A! U  S) D    End If. L# |  H! S7 j
    b = Mid(c, a + 2)
) L/ k) e/ q2 D  R: C    t = Right(c, 7)
0 l+ q1 S% j& k" n, I( p    If t = ".SLDPRT" Or t = ".SLDASM" Or t = ".sldprt" Or t = ".sldasm" Then
" N7 ]2 a6 o. M7 f% Q        j = Len(b) - 7 '消除后缀(区分大小写共4种)
0 c% B3 Z0 y/ d" o0 Q    Else1 F  P* K5 G) J6 P
        j = Len(b)% ?# J8 V* H! m' U# I# j
    End If
, `3 I1 @, W8 r8 C" A' F    m = Left(b, j)
; f: ^  I+ Q; K% vEnd If1 z  z. d& s8 J
blnretval = Part.AddCustomInfo3("", "代号", swCustomInfoText, e)  '代号. k( \4 ]9 b9 z+ y+ U' e
blnretval = Part.AddCustomInfo3("", "名称", swCustomInfoText, m)  '名称. Z2 d% H) f+ R& m( Q( F0 n
'blnretval = Part.AddCustomInfo3("", "图号", swCustomInfoText, e)  '图号# u; @) c/ L  q9 k

1 P6 y$ v- A6 l# h- Z- C
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-5 10:43:39 | 显示全部楼层
foxlord 发表于 2021-1-5 10:16
( W' w( b' o: `solidworks中宏是类似哪种语言呢?VB?Oracle?C++?

/ }( G- g7 w6 `' q好的。了解。我查查
7 r0 J+ Q/ \" [; E' z
回复 支持 反对

使用道具 举报

发表于 2021-1-5 12:36:06 | 显示全部楼层
我也用的这个宏
( J' e7 _- m/ s) j" \; h对于外购件,我一般是这样命名的  比如  轴承  6906   螺钉 M8×10   电磁阀  SY5120-DDDD,等等吧。. n8 l& y% S( j! q2 s! k
我对这个宏,稍微修改了一下,就能用了。再弄个宏按钮
回复 支持 1 反对 1

使用道具 举报

发表于 2021-1-5 13:46:32 | 显示全部楼层
SW是VBA,有语言互转软件吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-5 14:38:45 | 显示全部楼层
加了条语句,已经搞定了。谢谢大家的帮助。9 \4 A8 _, D8 Y2 n, O4 v
'设定变量
8 G5 Y  s+ O' A# G( O- Tc = swApp.ActiveDoc.GetTitle() '零件名
9 R  a- y( D, A% `  WIf Asc(c) > 0 Then
  ]" d- A# h. d7 }* s1 n/ r$ p7 m; k: d7 l3 a4 _) h/ A& q
strmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34)
9 S! N* m, E7 R9 r4 S2 N& c8 _blnretval = Part.DeleteCustomInfo2("", "代号")
- h) o6 s7 W7 g  O/ E) n! O/ D+ t, `blnretval = Part.DeleteCustomInfo2("", "名称")
3 j7 o1 R2 U$ U- Qa = InStr(c, " ") - 1      '重点:分隔标识符,这里是一个空格
0 w& p  I. _5 `2 L3 s, ?- t; ^' oIf a > 0 Then
; }8 b1 {) Y" b: ], V: S    k = Left(c, a)& Y$ n2 g' k$ ]7 y5 o
    t = Left(LTrim(e), 3)
4 v  d; l. a) [% G) H. b1 ~    If t = "GBT" Then& x2 U8 n! f8 o4 l- O1 T
        e = "GB/T" + Mid(k, 4)
8 Y" K, C0 ^- p    Else3 L% }) y) T7 W$ e. R$ r
        e = k
! D; r& u' B- B& D/ v  x    End If% c) F7 u$ U" i; \. h3 `
    b = Mid(c, a + 2), r: S1 [( ]: Q7 j) G8 E. p" p
    t = Right(c, 7)8 K0 u* f3 P/ Q; s
    If t = ".SLDPRT" Or t = ".SLDASM" Or t = ".sldprt" Or t = ".sldasm" Then
3 G  r: [, n2 k( Y- D' a& p        j = Len(b) - 7 '消除后缀(区分大小写共4种)( d9 f* Z& o( w" O* g
    Else  Q! x2 v( \( d. U
        j = Len(b)$ U% p: {) H5 r' h
    End If: @" E- e6 V. b7 f
    m = Left(b, j)
# n. _$ n) ^6 {$ UEnd If' ?1 ^/ r/ n) V( R4 T3 \
blnretval = Part.AddCustomInfo3("", "代号", swCustomInfoText, e)  '代号
% v( l* U* _  K6 E0 eblnretval = Part.AddCustomInfo3("", "名称", swCustomInfoText, m)  '名称# A$ a0 T' }% s( _% E6 Q( d( z8 g
'blnretval = Part.AddCustomInfo3("", "图号", swCustomInfoText, e)  '图号* U2 V+ T' N: I! N! s& q" u; l8 G$ _, X
End If0 X8 _6 v+ v; D; G
回复 支持 反对

使用道具 举报

发表于 2021-1-5 16:30:26 | 显示全部楼层
这个看似高大上,用起来却并不快捷呀!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-5 17:02:21 | 显示全部楼层
远祥 发表于 2021-1-5 16:30& s  U$ T, k2 y% w% h) w, d4 z8 Q
这个看似高大上,用起来却并不快捷呀!
( w' q; K0 i2 m- N# L
还行吧,个人习惯,我用的切换填入信息,不是按钮。
- y! d6 \( H- H% L8 ]: a! ~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 11:34 , Processed in 0.052130 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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