找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 3416|回复: 10

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

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

使用道具 举报

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

点评

VBA  发表于 2021-1-5 10:19
发表于 2021-1-5 10:20:40 | 显示全部楼层
加个if语句判断一下* I+ m# I8 d& g1 @& u$ j( S5 u
 楼主| 发表于 2021-1-5 10:37:18 | 显示全部楼层
魍者归来 发表于 2021-1-5 10:20
$ h3 h1 N$ {: K加个if语句判断一下

: e* z$ p& E* W: c5 D大神,你好,刚才看了你在宏中提取名称的视频。: a. s7 M! k  H+ O
以下是图号名称分离的宏中一段代码:1 k$ ~8 Q- O, z# d3 Y1 `6 @7 s

, z' f6 M2 P& f( P! vc = swApp.ActiveDoc.GetTitle() '零件名3 y# q7 z  e% b4 f
想在这加if判断c中字符串第一个字符是汉字或者不是字母数字,但是这个和C语言不一样,不太会,也不知道solidworks中宏的语言是哪种。
0 A# k% [& [3 Q8 f9 a' `! o望大神指教或者之前填上吧。万分感谢。/ K; }* {0 m/ f/ V, f4 d1 p

. _& z' [- W9 D; |! q
( g& r3 ]  h# d$ p0 v) t# ~3 Y8 n
strmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34)
, J. G7 U  y& _" h- Z5 ~blnretval = Part.DeleteCustomInfo2("", "代号")+ A1 @3 }% }& q& C7 M
blnretval = Part.DeleteCustomInfo2("", "名称")
* w& R+ L1 K) sa = InStr(c, " ") - 1      '重点:分隔标识符,这里是一个空格
1 u4 @. m% B' VIf a > 0 Then6 ~( s* ]! S. R" [- v2 U
    k = Left(c, a)
1 h: u) O. V9 l; d, `' y    t = Left(LTrim(e), 3)* _$ h- K% G0 ^) L
    If t = "GBT" Then4 A5 n4 L, `9 d2 B# f8 O
        e = "GB/T" + Mid(k, 4)+ l% x! o0 Y0 d5 K
    Else& t% I) }0 z1 y" D1 _, [& e- W
        e = k
, B% x! o: t. I: D% c) C    End If
1 B: j& N0 B7 C' _2 T2 h    b = Mid(c, a + 2)
" D2 }! \3 B" z* g- F    t = Right(c, 7)
/ i- o, q* {9 Z    If t = ".SLDPRT" Or t = ".SLDASM" Or t = ".sldprt" Or t = ".sldasm" Then
+ G( z0 m% b# z& G        j = Len(b) - 7 '消除后缀(区分大小写共4种)  D, p; C: B) d; ~
    Else3 c% R" L8 Y8 g# a# C4 q* W+ L
        j = Len(b)3 c4 |0 \3 V! O/ a/ X1 R
    End If: H/ B' q8 S' ]( e7 {7 Y  s
    m = Left(b, j)
3 n' p' ]( d, E* V8 Z. JEnd If" i' M1 C+ P/ I, n& [" N
blnretval = Part.AddCustomInfo3("", "代号", swCustomInfoText, e)  '代号8 k6 L2 B" b! W  y9 L9 {7 b9 B
blnretval = Part.AddCustomInfo3("", "名称", swCustomInfoText, m)  '名称
2 R0 I$ `/ ?3 M: H. a'blnretval = Part.AddCustomInfo3("", "图号", swCustomInfoText, e)  '图号& {" v( r% F1 n9 @& y0 g
0 P  T4 d3 M' N! a, Q2 M" l# G
 楼主| 发表于 2021-1-5 10:43:39 | 显示全部楼层
foxlord 发表于 2021-1-5 10:16
2 ]; n  L" x/ }9 u8 Z' c% b+ jsolidworks中宏是类似哪种语言呢?VB?Oracle?C++?
5 T! r9 |; @$ k; t+ p4 y
好的。了解。我查查( y0 i% z- U$ x) ^# S7 y1 u6 w& N8 g& X
发表于 2021-1-5 12:36:06 | 显示全部楼层
我也用的这个宏5 v9 D, X# X! A3 K
对于外购件,我一般是这样命名的  比如  轴承  6906   螺钉 M8×10   电磁阀  SY5120-DDDD,等等吧。2 C8 j  U8 \# B+ e- N8 |
我对这个宏,稍微修改了一下,就能用了。再弄个宏按钮
发表于 2021-1-5 13:46:32 | 显示全部楼层
SW是VBA,有语言互转软件吗?
 楼主| 发表于 2021-1-5 14:38:45 | 显示全部楼层
加了条语句,已经搞定了。谢谢大家的帮助。
- U$ `& Y% d0 c- K4 e8 {# W( l'设定变量
! \; k8 _% Z$ q' ec = swApp.ActiveDoc.GetTitle() '零件名% D  g/ o; z3 q' j4 O
If Asc(c) > 0 Then
8 k, Z4 E4 Q# ]+ P& h% [6 P, [& l( j( h2 P
strmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34)
! B: X: y6 J  k, Eblnretval = Part.DeleteCustomInfo2("", "代号")
  Y, c1 n# Z' v5 b/ Iblnretval = Part.DeleteCustomInfo2("", "名称")
/ C2 s  k5 w: a+ ka = InStr(c, " ") - 1      '重点:分隔标识符,这里是一个空格
% Y! c2 l$ @5 G* n, W* V  x; qIf a > 0 Then
( K1 V# I5 @; t: F, ]    k = Left(c, a)& |& I7 R  ^' [. p2 Y, |
    t = Left(LTrim(e), 3)+ N" P: O$ I$ G, c
    If t = "GBT" Then* E; w0 t3 t# o: D$ ^4 i* f( ~  T
        e = "GB/T" + Mid(k, 4)
8 o$ k% [/ I/ _, \. W    Else
: z1 ]4 q; C+ m        e = k# m3 m5 K7 d- v) ^
    End If
4 I  ~9 {+ D8 E2 v* U5 X    b = Mid(c, a + 2)9 p7 d' I8 V8 }6 R1 K& g
    t = Right(c, 7)
6 n" {8 P$ y5 t- A) }    If t = ".SLDPRT" Or t = ".SLDASM" Or t = ".sldprt" Or t = ".sldasm" Then
+ v: a$ {: s( a+ d: R  ?* P        j = Len(b) - 7 '消除后缀(区分大小写共4种)/ S8 Q! F4 o; ^7 e& x$ D
    Else
4 H" H3 t) a/ G3 o        j = Len(b)
6 ~/ f9 U- ~+ Q* O    End If
1 K7 e0 {7 C. Q8 t8 x, h' }+ J$ p* Z    m = Left(b, j)
, `1 ~. C0 E, f6 gEnd If  g; h1 f+ j9 C7 u
blnretval = Part.AddCustomInfo3("", "代号", swCustomInfoText, e)  '代号
* x: f/ x$ \) g: D+ s3 w9 Q* g+ G& n, Ablnretval = Part.AddCustomInfo3("", "名称", swCustomInfoText, m)  '名称
0 Y, ^( x( ]/ X- F! F'blnretval = Part.AddCustomInfo3("", "图号", swCustomInfoText, e)  '图号$ C: i; s/ X& m& [6 }
End If
4 H1 p: a  F# p
发表于 2021-1-5 16:30:26 | 显示全部楼层
这个看似高大上,用起来却并不快捷呀!
 楼主| 发表于 2021-1-5 17:02:21 | 显示全部楼层
远祥 发表于 2021-1-5 16:30
* R- m7 n9 T, q+ g- U这个看似高大上,用起来却并不快捷呀!

* u. x1 D) ]! b% o$ [* D还行吧,个人习惯,我用的切换填入信息,不是按钮。5 R8 V* {4 n. v  ~# H8 A7 v# |2 x
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-8-6 19:50 , Processed in 0.082003 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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