机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2951|回复: 10

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

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

使用道具 举报

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

点评

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

使用道具 举报

发表于 2021-1-5 10:20:40 | 显示全部楼层
加个if语句判断一下$ I( H4 U2 N$ \' m  h+ r
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-5 10:37:18 | 显示全部楼层
魍者归来 发表于 2021-1-5 10:20
" @% r0 t/ Z. ?) M+ S" J9 ]8 B% h加个if语句判断一下
1 Y2 f8 W& q0 q1 C1 f, G& D9 B
大神,你好,刚才看了你在宏中提取名称的视频。
( o+ T" g; e  D& |3 w" S以下是图号名称分离的宏中一段代码:
4 b9 S  E/ ~$ g3 ^9 N0 W8 A, W3 R
. }; K" V# |6 y+ d0 zc = swApp.ActiveDoc.GetTitle() '零件名
9 Z; P" Y( F4 D) D) Z想在这加if判断c中字符串第一个字符是汉字或者不是字母数字,但是这个和C语言不一样,不太会,也不知道solidworks中宏的语言是哪种。) u' N, Q' ~% v" Z
望大神指教或者之前填上吧。万分感谢。/ M# ^+ e% _0 b0 n: x

, L. B  _9 y0 S5 D3 z
+ f0 Z9 L# ]" ]
strmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34)
# H, ?) h5 Q0 Bblnretval = Part.DeleteCustomInfo2("", "代号")
/ D( U' |& k3 M& @" }' _; M8 kblnretval = Part.DeleteCustomInfo2("", "名称")+ V8 j7 k1 i) j2 R+ [9 `, a7 L
a = InStr(c, " ") - 1      '重点:分隔标识符,这里是一个空格+ s. _! i2 `5 G2 `- w2 Y! Q
If a > 0 Then
( C6 c4 ~1 R0 E+ F8 B! a    k = Left(c, a)
" _9 q, B  j: V    t = Left(LTrim(e), 3)
( g2 ^6 z) S* r    If t = "GBT" Then
& O+ G0 A% \- O2 \; f! h0 N! W) C        e = "GB/T" + Mid(k, 4)
& J8 ~5 u1 K! F: h, d) @    Else( h# N! P& z+ D( R4 Y1 b
        e = k4 c: M! L# ]8 `) {7 l* Z
    End If, n+ d. m/ y* B6 l  q
    b = Mid(c, a + 2)
& c5 |5 ~- L1 c7 z" n) p& H7 }4 K    t = Right(c, 7)
, \0 q9 n1 r* e$ p- _2 u4 Q+ \7 E' [    If t = ".SLDPRT" Or t = ".SLDASM" Or t = ".sldprt" Or t = ".sldasm" Then
' w) p; D0 S$ F8 D; A/ [        j = Len(b) - 7 '消除后缀(区分大小写共4种). n/ f( R. c5 V! ?2 P1 h
    Else# B* O0 @, r1 w" r! {/ u
        j = Len(b)
3 |+ m' V4 Y  M7 }' T% {    End If/ o0 r2 w( P: ]6 a5 B  B3 k. Z
    m = Left(b, j)
- @3 g4 F! b* ZEnd If+ {7 Q( ~2 t) J/ W
blnretval = Part.AddCustomInfo3("", "代号", swCustomInfoText, e)  '代号
& S" G& X) w' n( c5 {4 ^blnretval = Part.AddCustomInfo3("", "名称", swCustomInfoText, m)  '名称  ~4 k* \5 k2 N# `% P! X
'blnretval = Part.AddCustomInfo3("", "图号", swCustomInfoText, e)  '图号8 [9 w$ m1 W1 t- U& H

. F' g" b5 o/ ]" p6 H/ G
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-5 10:43:39 | 显示全部楼层
foxlord 发表于 2021-1-5 10:16
0 P9 D5 }! w2 ?* _0 F. l+ Dsolidworks中宏是类似哪种语言呢?VB?Oracle?C++?
1 @, v( ^/ W6 R3 J1 o
好的。了解。我查查
- `+ u, L; c" J- p
回复 支持 反对

使用道具 举报

发表于 2021-1-5 12:36:06 | 显示全部楼层
我也用的这个宏
( R2 s1 j8 p' `% s对于外购件,我一般是这样命名的  比如  轴承  6906   螺钉 M8×10   电磁阀  SY5120-DDDD,等等吧。+ B- v/ y) s' P; @1 a
我对这个宏,稍微修改了一下,就能用了。再弄个宏按钮
回复 支持 1 反对 1

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2021-1-5 14:38:45 | 显示全部楼层
加了条语句,已经搞定了。谢谢大家的帮助。* G) L% _5 e- b8 S* Z$ W
'设定变量
: K% Z: k( J  ]- n, gc = swApp.ActiveDoc.GetTitle() '零件名" T7 M' {1 ^( R) R
If Asc(c) > 0 Then( G8 W3 M; Y- [& Z
! y  B/ ^2 |+ n! Y/ y
strmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34)
7 X" b- `9 O( h2 |! }( R% xblnretval = Part.DeleteCustomInfo2("", "代号")7 v1 g. \4 ?" a
blnretval = Part.DeleteCustomInfo2("", "名称")
1 _- R6 y4 Z6 y5 [a = InStr(c, " ") - 1      '重点:分隔标识符,这里是一个空格6 q* v% Z! G6 }' H
If a > 0 Then9 g1 V$ s+ H  ]$ R0 a& q
    k = Left(c, a)
2 e8 P+ K7 x, _+ @/ w7 ^! z" P! p    t = Left(LTrim(e), 3)
& d1 Q+ O0 M+ [* C    If t = "GBT" Then5 m; S+ m, |: `% {2 d  O. C' N
        e = "GB/T" + Mid(k, 4)
- Q, D6 X3 S5 D# v    Else$ T. B& F; v  T! ]
        e = k$ D: ], v! m" P( ~. n0 C7 D' i2 V
    End If  [, J9 i2 |& G/ j( O# `$ ?( Z
    b = Mid(c, a + 2), A+ t8 f0 a5 h9 S
    t = Right(c, 7)
: E3 |; I0 B% D6 ~    If t = ".SLDPRT" Or t = ".SLDASM" Or t = ".sldprt" Or t = ".sldasm" Then
* \' r" N5 }; @! ^* i4 e& v        j = Len(b) - 7 '消除后缀(区分大小写共4种)7 N8 g+ B3 s8 w4 d% p
    Else- u6 T( B2 B/ A) c
        j = Len(b)
' J  T* ~7 G( n* ]    End If: e" e# Z; W0 n+ E% z  O+ Y) G8 V
    m = Left(b, j)
9 w% \' U  F8 \1 L2 VEnd If
. p* e2 p8 [. H% r2 ablnretval = Part.AddCustomInfo3("", "代号", swCustomInfoText, e)  '代号( D/ `3 B0 P9 f: A* T* d
blnretval = Part.AddCustomInfo3("", "名称", swCustomInfoText, m)  '名称4 H1 k" ~" m! J" b, H- h
'blnretval = Part.AddCustomInfo3("", "图号", swCustomInfoText, e)  '图号  V. C- f4 |/ [" H' f: ~" u
End If$ A" o) k6 M$ l5 v% d
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2021-1-5 17:02:21 | 显示全部楼层
远祥 发表于 2021-1-5 16:30
: E2 P+ i8 G& U4 k" x% n, m8 \/ R这个看似高大上,用起来却并不快捷呀!

0 v0 r2 ~! s$ G2 [2 L6 n! d5 h0 u还行吧,个人习惯,我用的切换填入信息,不是按钮。6 R& \% t2 C' m  l: D+ j7 T
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-19 06:01 , Processed in 0.070681 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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