机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2742|回复: 10

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

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

使用道具 举报

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

点评

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

使用道具 举报

发表于 2021-1-5 10:20:40 | 显示全部楼层
加个if语句判断一下' `6 c. _  d  Y3 X
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-5 10:37:18 | 显示全部楼层
魍者归来 发表于 2021-1-5 10:20  P8 q  ~) H1 Y: v2 g; |! ^
加个if语句判断一下

$ d/ q, D" `1 T5 I' ]* R+ B& _大神,你好,刚才看了你在宏中提取名称的视频。3 c5 \0 S: q6 J9 k
以下是图号名称分离的宏中一段代码:! v& `! K. U# `* E

. i7 a) _- @  @2 z: d/ J5 Y, Ic = swApp.ActiveDoc.GetTitle() '零件名
* }: N  ~  Z0 W) s想在这加if判断c中字符串第一个字符是汉字或者不是字母数字,但是这个和C语言不一样,不太会,也不知道solidworks中宏的语言是哪种。7 [; q* K6 F" z8 j8 W
望大神指教或者之前填上吧。万分感谢。7 ^0 K4 T* V# E8 Q, Q# D0 \) G3 P9 D
. O1 ~# z7 G3 M' m- a: n
! Y. [2 ^/ n2 z2 D# }) r: O
strmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34)
1 I- A- P; Q3 H* i  P8 Z: Tblnretval = Part.DeleteCustomInfo2("", "代号")
& H( O7 p" `6 `0 m3 d: y  Mblnretval = Part.DeleteCustomInfo2("", "名称")
! N7 }' J  u$ _! ~- @a = InStr(c, " ") - 1      '重点:分隔标识符,这里是一个空格
2 ]6 ~5 `5 y# tIf a > 0 Then
( p0 z9 A  Y* a6 {- _0 F    k = Left(c, a)
$ L* k" h& n0 g* |! i8 m    t = Left(LTrim(e), 3)$ ~! O/ _' {$ g1 [/ @; J
    If t = "GBT" Then
+ ~2 [& @0 y' ^# ^; w3 z        e = "GB/T" + Mid(k, 4)) }8 c9 f" U  C4 b
    Else
0 B" u2 d0 X6 U  x5 Q) s        e = k
" d) o! Z! F6 T. `. b: C    End If
% c$ P. w$ x9 F    b = Mid(c, a + 2)
+ Y. A6 \; Y: z0 G. g    t = Right(c, 7)
  o/ \2 [0 k: H- h* ]& c    If t = ".SLDPRT" Or t = ".SLDASM" Or t = ".sldprt" Or t = ".sldasm" Then' ]- T0 O0 M+ P5 N) ]+ f2 M
        j = Len(b) - 7 '消除后缀(区分大小写共4种)
$ J7 E- k; }7 C7 w    Else: G( H$ |6 h1 O: ~5 i0 F! d' s
        j = Len(b)
- n* W# y/ r( M4 {' P    End If
- V6 N- n3 n( ~) V5 V& C    m = Left(b, j)
4 Q7 q2 w$ u+ l! |2 PEnd If' K3 _- `: D2 |/ U* B- s
blnretval = Part.AddCustomInfo3("", "代号", swCustomInfoText, e)  '代号
, @+ R+ E$ p+ pblnretval = Part.AddCustomInfo3("", "名称", swCustomInfoText, m)  '名称
& X4 Z8 q' b+ q0 \8 G' D' n'blnretval = Part.AddCustomInfo3("", "图号", swCustomInfoText, e)  '图号
( J- R# n; ?* l, G2 W0 R) m. f3 d* n% A2 [' Z8 a: A3 S
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-5 10:43:39 | 显示全部楼层
foxlord 发表于 2021-1-5 10:169 M- F+ [) p& x" N( j) R
solidworks中宏是类似哪种语言呢?VB?Oracle?C++?
7 ?" E4 @9 j3 o/ g9 c
好的。了解。我查查
. i! S6 F6 T4 w; i4 O& V3 ^$ b2 I
回复 支持 反对

使用道具 举报

发表于 2021-1-5 12:36:06 | 显示全部楼层
我也用的这个宏9 |% ~# t+ y  Y7 T  n; _; J
对于外购件,我一般是这样命名的  比如  轴承  6906   螺钉 M8×10   电磁阀  SY5120-DDDD,等等吧。( R. c; X' a: D$ L# X0 P
我对这个宏,稍微修改了一下,就能用了。再弄个宏按钮
回复 支持 1 反对 1

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2021-1-5 14:38:45 | 显示全部楼层
加了条语句,已经搞定了。谢谢大家的帮助。3 Q3 `7 ~! y5 q5 v) k  N$ u7 q
'设定变量
8 T/ \9 u. r, L1 u. xc = swApp.ActiveDoc.GetTitle() '零件名
9 N8 a/ k. B# D, vIf Asc(c) > 0 Then
- i, o; j9 o# \% {% @
! K) g6 A. u+ F2 ?( kstrmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34)
0 C$ v+ q+ P4 O% q; l, H! O' v" S3 kblnretval = Part.DeleteCustomInfo2("", "代号")
" u1 L/ m+ J1 n4 t( A% }0 @blnretval = Part.DeleteCustomInfo2("", "名称")
8 w2 b5 U! l# Q: t4 {8 ua = InStr(c, " ") - 1      '重点:分隔标识符,这里是一个空格
( _. |2 J2 K/ S, g) G# PIf a > 0 Then! N& {! ~2 C3 f3 H3 Q, F9 A
    k = Left(c, a)
# ]8 G6 ~+ q, i4 }! @5 O    t = Left(LTrim(e), 3)8 h/ x7 k9 H+ U) p) m. |! n% H4 Q8 m
    If t = "GBT" Then6 H8 A! O7 z3 I3 Y% V& f
        e = "GB/T" + Mid(k, 4)$ b& R( W4 S7 @/ B7 V% W
    Else( ~  S% b" `2 h+ ^" R3 u2 t* k
        e = k
7 V) u3 C* q6 z& D. y6 ?    End If2 m" z9 w' l& j; R% t: E, w. d9 s
    b = Mid(c, a + 2)
' y+ J* x+ Z* @: d    t = Right(c, 7); i& G  x1 g2 x, ~1 @/ \" Y. x
    If t = ".SLDPRT" Or t = ".SLDASM" Or t = ".sldprt" Or t = ".sldasm" Then. T7 F5 y( _0 l% Y$ i
        j = Len(b) - 7 '消除后缀(区分大小写共4种)
; ]1 }0 _6 `% t1 M( {5 f7 J, [    Else
9 W% r4 }9 ?8 f+ f        j = Len(b)
7 Y9 _3 D. M: j8 l" f2 F: I    End If  [0 M6 e* ?- S: U0 i/ m! t. x
    m = Left(b, j)
" x4 m+ \9 A, s2 ?$ w* c- I, fEnd If8 I* d/ t" O1 y& y! A2 ?8 ^1 A0 C- a
blnretval = Part.AddCustomInfo3("", "代号", swCustomInfoText, e)  '代号
& V, K: L9 r# W9 `" B! d% A0 M: |blnretval = Part.AddCustomInfo3("", "名称", swCustomInfoText, m)  '名称
( i/ e; U  C/ \4 l: B'blnretval = Part.AddCustomInfo3("", "图号", swCustomInfoText, e)  '图号+ j6 c( X3 @/ h/ b
End If! P1 D; |+ i! }9 g1 R: {& V& Q
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2021-1-5 17:02:21 | 显示全部楼层
远祥 发表于 2021-1-5 16:304 J! t- u' B9 F2 \# g1 g2 n# f
这个看似高大上,用起来却并不快捷呀!
5 d5 O8 m0 w5 E+ ^* Q  ]( j7 o
还行吧,个人习惯,我用的切换填入信息,不是按钮。6 ?* ]% Z  Q. q% \7 {+ \
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 11:57 , Processed in 0.053190 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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