找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 3414|回复: 10

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

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

使用道具 举报

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

点评

VBA  发表于 2021-1-5 10:19
发表于 2021-1-5 10:20:40 | 显示全部楼层
加个if语句判断一下9 _: k* }6 {& Q8 Q0 U7 {
 楼主| 发表于 2021-1-5 10:37:18 | 显示全部楼层
魍者归来 发表于 2021-1-5 10:20
" k$ I: y: V; J8 Y加个if语句判断一下

3 E0 B0 d1 w& J大神,你好,刚才看了你在宏中提取名称的视频。) h! V& `4 ?: m* x4 l. a" _
以下是图号名称分离的宏中一段代码:( u; V  f. G, S9 o
! @' c- Z: A7 Q4 H* |" l. [
c = swApp.ActiveDoc.GetTitle() '零件名
2 L' K( f! A; Q* d想在这加if判断c中字符串第一个字符是汉字或者不是字母数字,但是这个和C语言不一样,不太会,也不知道solidworks中宏的语言是哪种。
: O. [2 `# A4 x- t, ]望大神指教或者之前填上吧。万分感谢。
- A! l9 _( m0 x  _1 r8 B. W! F
$ U" z  ~" d0 Z8 E6 V# U7 G
, C5 E2 j. g. _5 a3 }9 M; l
strmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34)
% I" G5 V  k, c5 s' g* Qblnretval = Part.DeleteCustomInfo2("", "代号")
& x; b9 }& E+ kblnretval = Part.DeleteCustomInfo2("", "名称")
$ d# O7 J9 B! da = InStr(c, " ") - 1      '重点:分隔标识符,这里是一个空格+ N) t1 M; P' [, M2 w
If a > 0 Then/ u% {3 \* ^  A- @- A  v1 o
    k = Left(c, a)
3 _3 W. v5 Q: f    t = Left(LTrim(e), 3)
8 u7 x, t0 u1 J    If t = "GBT" Then
* T" k2 o, D" k0 p6 m& r        e = "GB/T" + Mid(k, 4)# Q! j! Y* u6 b/ [! C0 s
    Else
" Z) p  a, `  f, g" I/ t: v        e = k
/ O7 w- n8 v: f2 }9 C( R$ |4 ^+ O    End If
$ F. p5 _1 u7 W' J1 p; @    b = Mid(c, a + 2)' S, A; q& z1 ]6 V6 ~0 ^
    t = Right(c, 7)" n$ n: B8 {  u1 p8 t) D! ~
    If t = ".SLDPRT" Or t = ".SLDASM" Or t = ".sldprt" Or t = ".sldasm" Then
, P& g6 l" X/ A+ g        j = Len(b) - 7 '消除后缀(区分大小写共4种)
$ Q- H$ M6 w. u" n% X7 j/ _9 v) R    Else
- ?7 _/ {1 x6 R5 ]9 w: F, ~        j = Len(b)
1 N" Q) `8 R( d* q7 P0 u    End If
3 {+ m8 H( U8 d% f& f    m = Left(b, j): {. X  r7 y* e0 S$ q8 ~! l
End If& o* M, i  o, t. U+ f
blnretval = Part.AddCustomInfo3("", "代号", swCustomInfoText, e)  '代号
6 x' w) t; z4 U% }, M) `blnretval = Part.AddCustomInfo3("", "名称", swCustomInfoText, m)  '名称2 k  |1 K) B) e1 U8 q1 l3 K* b' F
'blnretval = Part.AddCustomInfo3("", "图号", swCustomInfoText, e)  '图号7 p7 R# }% z- D8 d

5 S; F7 t+ ]3 }0 ]
 楼主| 发表于 2021-1-5 10:43:39 | 显示全部楼层
foxlord 发表于 2021-1-5 10:16
: G3 s( z( F' n/ b! S3 f5 V2 Esolidworks中宏是类似哪种语言呢?VB?Oracle?C++?

2 L$ ?) R- H# x) A( V" ?好的。了解。我查查
& l- n+ K2 m, F& W; l' C
发表于 2021-1-5 12:36:06 | 显示全部楼层
我也用的这个宏# J# {& Z' R* k, w9 t
对于外购件,我一般是这样命名的  比如  轴承  6906   螺钉 M8×10   电磁阀  SY5120-DDDD,等等吧。, l  d, B. `( V- J# o
我对这个宏,稍微修改了一下,就能用了。再弄个宏按钮
发表于 2021-1-5 13:46:32 | 显示全部楼层
SW是VBA,有语言互转软件吗?
 楼主| 发表于 2021-1-5 14:38:45 | 显示全部楼层
加了条语句,已经搞定了。谢谢大家的帮助。
. K' B- Q/ ^9 y8 s( D'设定变量  `- a& E* |8 _& K
c = swApp.ActiveDoc.GetTitle() '零件名) g# [6 I* T7 j" ?( H
If Asc(c) > 0 Then
- d5 }1 T; Y. {# n3 k; p  M$ [: ^- e8 I! ^. I% H
strmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34)
+ I7 y5 G' T* b5 lblnretval = Part.DeleteCustomInfo2("", "代号")
0 u) b" D/ j: f$ ^/ S) @' p, U8 u) dblnretval = Part.DeleteCustomInfo2("", "名称")4 j3 q2 c( K2 ?& T4 b: n
a = InStr(c, " ") - 1      '重点:分隔标识符,这里是一个空格# s" `  z# F8 g/ s) e5 |6 G; ]
If a > 0 Then/ f5 z2 ?, ~9 @+ L- r- p, M
    k = Left(c, a)
+ @6 @3 P8 {/ ~    t = Left(LTrim(e), 3); i( u/ @5 a( ?" k" Z* i
    If t = "GBT" Then# d% R0 n6 H7 W+ M# @
        e = "GB/T" + Mid(k, 4)9 i( h- S3 L$ t7 V6 C# M
    Else# y- y8 _1 M9 J9 ~  N
        e = k
$ v6 P% l- A4 W% ]: u6 V' _    End If
9 a! N, j+ j) w    b = Mid(c, a + 2)4 p" }, C$ i* J
    t = Right(c, 7)! ]5 u1 v7 z: j
    If t = ".SLDPRT" Or t = ".SLDASM" Or t = ".sldprt" Or t = ".sldasm" Then6 c* u' {" t. \0 G$ h, t% p( |
        j = Len(b) - 7 '消除后缀(区分大小写共4种): u* T/ C" N; r6 I$ f( B; v
    Else) u5 ^0 b3 }3 J4 y9 x
        j = Len(b)$ \$ f6 _! e% C( W. L0 y
    End If0 L5 H6 w( U' f2 ?
    m = Left(b, j)
: r6 m# c. v2 T# ]End If8 k4 b# g- ^- [9 q+ W- B
blnretval = Part.AddCustomInfo3("", "代号", swCustomInfoText, e)  '代号
3 E( ~8 S( w: Wblnretval = Part.AddCustomInfo3("", "名称", swCustomInfoText, m)  '名称
6 G+ ?9 z# n$ a6 |/ V'blnretval = Part.AddCustomInfo3("", "图号", swCustomInfoText, e)  '图号
3 @- d: ]. O& [# qEnd If
3 _; y$ K# B- A
发表于 2021-1-5 16:30:26 | 显示全部楼层
这个看似高大上,用起来却并不快捷呀!
 楼主| 发表于 2021-1-5 17:02:21 | 显示全部楼层
远祥 发表于 2021-1-5 16:30! [$ |7 \8 V. g7 }8 H
这个看似高大上,用起来却并不快捷呀!
* z5 f; @$ B7 s" a( o1 r# ?
还行吧,个人习惯,我用的切换填入信息,不是按钮。
. t# t% \5 x$ W3 P2 j" x
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-8-5 12:43 , Processed in 0.089774 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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