机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2712|回复: 10
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
1#
发表于 2021-1-5 10:09:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
solidworks用了图号名称分离,先有个问题,标准件一般是开头是中文,怎么编辑宏命令检测到中文跳出程序呢?求大神解惑。比如:零件名称: 12354 中文   零件属性中图号:12354  名称:中文;零件名称是标准弹垫 12345   当检测到这个零件后不进行图号名称分离。6 e0 Z7 B6 e6 W* r( w
回复

使用道具 举报

2#
 楼主| 发表于 2021-1-5 10:16:14 | 只看该作者
solidworks中宏是类似哪种语言呢?VB?Oracle?C++?

点评

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

使用道具 举报

3#
发表于 2021-1-5 10:20:40 | 只看该作者
加个if语句判断一下
7 L  t) b5 i7 `, n% Y7 ^
回复 支持 反对

使用道具 举报

4#
 楼主| 发表于 2021-1-5 10:37:18 | 只看该作者
魍者归来 发表于 2021-1-5 10:20' r$ p3 v% ]8 v3 a0 p) X! w+ s! S
加个if语句判断一下
7 [. a" G: h9 Q* j8 J
大神,你好,刚才看了你在宏中提取名称的视频。' x3 D  I5 b, ]% Z" T
以下是图号名称分离的宏中一段代码:+ z% |2 [3 o" W  {- ~

, p, l- [  g; |c = swApp.ActiveDoc.GetTitle() '零件名" l1 ~- R  C4 g5 c- z2 d
想在这加if判断c中字符串第一个字符是汉字或者不是字母数字,但是这个和C语言不一样,不太会,也不知道solidworks中宏的语言是哪种。
% P6 S0 j$ V4 a% o$ q望大神指教或者之前填上吧。万分感谢。
8 w( q$ _% u# p+ F/ j" V, m- T: f7 ]" R) z4 S; h2 _
3 l4 i) b5 w; T' L) U' N
strmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34)
% c( ~4 c3 ^4 c) j) }& nblnretval = Part.DeleteCustomInfo2("", "代号")
# Z; |- H% ]& |6 f$ p7 kblnretval = Part.DeleteCustomInfo2("", "名称")$ d. ?2 f/ a: l: g
a = InStr(c, " ") - 1      '重点:分隔标识符,这里是一个空格
! D; f/ r" d7 `  S0 zIf a > 0 Then
/ S% q# h5 M7 V' p- ?! X. _    k = Left(c, a)
2 o3 s- ]0 j; ?7 p6 x" D    t = Left(LTrim(e), 3)5 x. X) l6 Q: Z9 d. I
    If t = "GBT" Then* p% Y: p: _1 K" Q4 I% d7 t- v
        e = "GB/T" + Mid(k, 4)
) s8 G/ L- o1 M2 N. n4 k% A    Else7 `8 T6 V) W* g3 Y" [7 S
        e = k
3 T( |4 @; y+ s6 Q    End If
( ]  O- y9 a* P' F- W* K    b = Mid(c, a + 2)
, @. ~% R* a  |$ g    t = Right(c, 7)" q5 o8 B7 }. K# q* t
    If t = ".SLDPRT" Or t = ".SLDASM" Or t = ".sldprt" Or t = ".sldasm" Then8 Q6 x8 \; {! n' g" \* B4 i" B
        j = Len(b) - 7 '消除后缀(区分大小写共4种)
) g% F) L2 {! @% v: I1 {% g8 I    Else
0 g% ^. S' p/ f% d/ J4 _5 o' }3 s        j = Len(b)3 N; M1 o- y. ~- [1 o/ n, B, X. ~
    End If
/ ?6 f' B" O4 T3 u- p# |    m = Left(b, j)4 g2 o- _0 X  S  t9 }
End If
. Q- n2 }# _; z0 Bblnretval = Part.AddCustomInfo3("", "代号", swCustomInfoText, e)  '代号
7 i! C% l) M: b5 f9 W6 [" [blnretval = Part.AddCustomInfo3("", "名称", swCustomInfoText, m)  '名称
& ~' d% X( }3 O. n0 {) l0 b'blnretval = Part.AddCustomInfo3("", "图号", swCustomInfoText, e)  '图号
0 S4 `( |/ Y; h& w. z
! Y% Q4 U8 i2 p) s7 F( O5 }
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2021-1-5 10:43:39 | 只看该作者
foxlord 发表于 2021-1-5 10:16( o6 T4 H& g# _
solidworks中宏是类似哪种语言呢?VB?Oracle?C++?
7 Q) z2 b- N' f7 J0 O! _3 I0 `9 m
好的。了解。我查查% N) q6 ^! Y+ D+ w
回复 支持 反对

使用道具 举报

6#
发表于 2021-1-5 12:36:06 | 只看该作者
我也用的这个宏# K8 N0 I8 L% }# q8 R' v8 @
对于外购件,我一般是这样命名的  比如  轴承  6906   螺钉 M8×10   电磁阀  SY5120-DDDD,等等吧。2 P  M% e- g4 m) r6 ?% o
我对这个宏,稍微修改了一下,就能用了。再弄个宏按钮
回复 支持 1 反对 1

使用道具 举报

7#
发表于 2021-1-5 13:46:32 | 只看该作者
SW是VBA,有语言互转软件吗?
回复 支持 反对

使用道具 举报

8#
 楼主| 发表于 2021-1-5 14:38:45 | 只看该作者
加了条语句,已经搞定了。谢谢大家的帮助。
, m0 s" q8 ~8 w'设定变量
# ^3 m9 ^) Z' p0 p% ]9 f6 Vc = swApp.ActiveDoc.GetTitle() '零件名
2 P/ N. g  @- H- KIf Asc(c) > 0 Then+ G" G( C2 D. a( ^* d% S
0 ~4 H$ b1 Q3 I0 g9 S9 Y
strmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34)/ Y3 Q: M7 J8 X; D9 n
blnretval = Part.DeleteCustomInfo2("", "代号")
4 M1 V( u3 I0 Z$ W6 r# m: mblnretval = Part.DeleteCustomInfo2("", "名称")
8 M! V5 M; s; p, Na = InStr(c, " ") - 1      '重点:分隔标识符,这里是一个空格0 j/ x- H  o' k
If a > 0 Then8 h* H: P; q# Z" G8 `, j3 C" C
    k = Left(c, a)
' Y* ~) ]9 q) X5 i; b2 v  a7 |# u. T    t = Left(LTrim(e), 3)
3 k: y. M/ ~8 Y; o    If t = "GBT" Then
/ }% @* B  ^" _( B2 L& P        e = "GB/T" + Mid(k, 4)
* b5 I: X' e% O: O* n3 T: @    Else5 K2 x. Y6 v( q: j( V
        e = k
6 n6 ^' c, O2 @5 I0 q    End If
8 r# \3 |% u; T  ?1 l    b = Mid(c, a + 2)
7 V: h/ [7 \; s# p) W9 R    t = Right(c, 7)5 y9 e* Z% B1 j3 I7 [9 m3 p
    If t = ".SLDPRT" Or t = ".SLDASM" Or t = ".sldprt" Or t = ".sldasm" Then3 o2 E, p  b0 Y7 f* D
        j = Len(b) - 7 '消除后缀(区分大小写共4种)
9 @( i% m1 K$ H0 O; F8 M    Else
" f" S3 u  H* Q7 l' Y$ ]        j = Len(b)) ]* B% r- D6 t7 p: F$ [5 }
    End If- u( E' r$ W5 p1 T9 |: W
    m = Left(b, j)" o% Q9 p$ G/ w- [! @0 [& ^
End If
$ K# v* m0 L* o, B5 Cblnretval = Part.AddCustomInfo3("", "代号", swCustomInfoText, e)  '代号
8 N, k+ W/ y8 _0 f/ ~6 T% w% ?blnretval = Part.AddCustomInfo3("", "名称", swCustomInfoText, m)  '名称
8 T' H5 ]9 D+ y+ p/ ?9 n2 s'blnretval = Part.AddCustomInfo3("", "图号", swCustomInfoText, e)  '图号
8 m, Q/ t) H5 e8 i7 x0 |End If  A5 l6 M2 G: o9 l& B) L5 m
回复 支持 反对

使用道具 举报

9#
发表于 2021-1-5 16:30:26 | 只看该作者
这个看似高大上,用起来却并不快捷呀!
回复 支持 反对

使用道具 举报

10#
 楼主| 发表于 2021-1-5 17:02:21 | 只看该作者
远祥 发表于 2021-1-5 16:30
: p  ~* O& L1 x1 v: [这个看似高大上,用起来却并不快捷呀!
0 Y! B2 D' E' U  \
还行吧,个人习惯,我用的切换填入信息,不是按钮。" V, r3 I, k; P0 i
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|机械必威体育网址 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2024-11-13 18:59 , Processed in 0.051189 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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