机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

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

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

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

使用道具 举报

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语句判断一下6 w7 j" W5 q0 m$ `6 K/ g
回复 支持 反对

使用道具 举报

4#
 楼主| 发表于 2021-1-5 10:37:18 | 只看该作者
魍者归来 发表于 2021-1-5 10:20' G# I: P  p9 d8 H' b! y" P0 `
加个if语句判断一下
4 e7 c! H* M' D- l# ]0 z+ k5 V2 j
大神,你好,刚才看了你在宏中提取名称的视频。
  D0 }, H' \% s以下是图号名称分离的宏中一段代码:( @! J3 |6 `0 N8 E# o* [
  }4 |: M4 X* G# S
c = swApp.ActiveDoc.GetTitle() '零件名
5 c1 ?- }" F  V9 H# [# m0 e想在这加if判断c中字符串第一个字符是汉字或者不是字母数字,但是这个和C语言不一样,不太会,也不知道solidworks中宏的语言是哪种。
) ?. }7 j+ v: k; n4 ?2 o望大神指教或者之前填上吧。万分感谢。) `8 H5 X1 E  \$ A0 ^

/ m4 ]( g- k. g& V2 W: `* x

! m" o5 B( m. P2 U. b- i3 Tstrmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34)
2 T# b$ o9 G9 I6 B5 Q+ u9 e) Q, jblnretval = Part.DeleteCustomInfo2("", "代号")
  u# z+ n  `$ k. x4 K: I* s  v: b- rblnretval = Part.DeleteCustomInfo2("", "名称")
  ?6 }/ ~  m: g* ya = InStr(c, " ") - 1      '重点:分隔标识符,这里是一个空格) g4 o# ]6 f+ J0 Q* d5 ~! C: Q
If a > 0 Then
# ]; ]+ f, l+ P2 G0 G2 A    k = Left(c, a); e: w! D* B- m
    t = Left(LTrim(e), 3)
) j8 {4 p( N; L* R) N5 W* ^    If t = "GBT" Then
( X" w" x# @( b2 v: I8 r4 w- M: [% P        e = "GB/T" + Mid(k, 4)1 f+ m/ B+ Y3 w3 j
    Else
+ S9 h  e* m# J6 t        e = k4 E, `) K* A5 K# ?4 G
    End If
/ H! M. e7 \* B9 V; ?+ X/ l/ |    b = Mid(c, a + 2): `0 _2 l; p" H* d8 S
    t = Right(c, 7)& @0 [* d: I4 ?# U4 u! ~
    If t = ".SLDPRT" Or t = ".SLDASM" Or t = ".sldprt" Or t = ".sldasm" Then
4 h' }$ `5 `5 U% ~; y6 }: \        j = Len(b) - 7 '消除后缀(区分大小写共4种)& ]: b* `. ?  M. G+ c7 _5 C
    Else
+ x3 }# S* K  @        j = Len(b)
# y# z' [7 \6 p3 V0 K) d    End If9 u% L3 M* B, F2 h! ^2 Q" X
    m = Left(b, j)
! x1 ^2 U9 n$ b" p3 yEnd If& u  n7 D* x2 C
blnretval = Part.AddCustomInfo3("", "代号", swCustomInfoText, e)  '代号. X- e9 N  i% J, p/ k8 ]* J
blnretval = Part.AddCustomInfo3("", "名称", swCustomInfoText, m)  '名称
: @7 W  q3 y% h: ^. a& @, N9 M# n'blnretval = Part.AddCustomInfo3("", "图号", swCustomInfoText, e)  '图号9 P% i* [: z) `/ p) H
$ J* W8 a2 d- R$ I1 d+ n4 ~* q% j
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2021-1-5 10:43:39 | 只看该作者
foxlord 发表于 2021-1-5 10:163 s. p" ?8 \+ V- A/ V5 a
solidworks中宏是类似哪种语言呢?VB?Oracle?C++?
! I/ x* j  w. R# Y' q
好的。了解。我查查
% A* ~5 V; h' g  A1 D+ {6 F, o
回复 支持 反对

使用道具 举报

6#
发表于 2021-1-5 12:36:06 | 只看该作者
我也用的这个宏
! h1 e5 M* n8 l: q对于外购件,我一般是这样命名的  比如  轴承  6906   螺钉 M8×10   电磁阀  SY5120-DDDD,等等吧。
) h. Z% ^! m  @7 C. I2 O我对这个宏,稍微修改了一下,就能用了。再弄个宏按钮
回复 支持 1 反对 1

使用道具 举报

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

使用道具 举报

8#
 楼主| 发表于 2021-1-5 14:38:45 | 只看该作者
加了条语句,已经搞定了。谢谢大家的帮助。
: {1 N/ M8 `/ b'设定变量
# `( K9 {+ N2 H/ R0 \1 u# ec = swApp.ActiveDoc.GetTitle() '零件名
2 g# i( a$ ], f! _! {If Asc(c) > 0 Then
5 t' ^, o3 @$ d+ u6 y# g; A4 |! k8 P, q' I
strmat = Chr(34) + Trim("SW-Material" + "@") + c + Chr(34)
6 B, `- A# L' C8 {- W" ?blnretval = Part.DeleteCustomInfo2("", "代号")) @- q/ n- A+ {
blnretval = Part.DeleteCustomInfo2("", "名称")
+ ?- n* U1 h- s% ^* W2 J# {  B% da = InStr(c, " ") - 1      '重点:分隔标识符,这里是一个空格! e" q  d" C  U- }0 j7 _
If a > 0 Then
( D+ b0 t6 s1 |  Q$ t: ]: N0 c    k = Left(c, a)
( Z6 \$ a% b0 m( P    t = Left(LTrim(e), 3). `/ }* D# n4 J3 Z
    If t = "GBT" Then' ~8 ]& t" t5 u8 p/ i
        e = "GB/T" + Mid(k, 4)" m( T/ ?9 O# O( h* O3 Q2 K
    Else7 p( H' K+ x4 D+ ^. R% f& R4 o- e
        e = k6 `) ^8 i* F' o" d" n- `& I9 ^
    End If
. K) `. A" \8 Y# i" Q  m    b = Mid(c, a + 2)
( v7 L' a/ _4 {- U% m    t = Right(c, 7)+ N/ y' U. {  N* w5 C
    If t = ".SLDPRT" Or t = ".SLDASM" Or t = ".sldprt" Or t = ".sldasm" Then9 C1 {" `2 b5 l( t% v5 h1 J
        j = Len(b) - 7 '消除后缀(区分大小写共4种)( m& S! e" W% j3 V$ M0 {
    Else! D' [7 J  T. T: S  {
        j = Len(b)
6 E' T: n* X& ~    End If
* a8 a1 R, |- H/ C) I( C3 k% h    m = Left(b, j)
1 k0 l, O6 q9 c3 y0 PEnd If
& r5 x+ J+ m& x) a9 _blnretval = Part.AddCustomInfo3("", "代号", swCustomInfoText, e)  '代号8 ^, k& @; @- t# Q, ^( }
blnretval = Part.AddCustomInfo3("", "名称", swCustomInfoText, m)  '名称
; o% |" g( E+ x7 m( [8 C'blnretval = Part.AddCustomInfo3("", "图号", swCustomInfoText, e)  '图号
2 M- \1 u  }* c* h, S) KEnd If0 X  F/ ~! N& ^* B( r* ~' k9 f9 w
回复 支持 反对

使用道具 举报

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

使用道具 举报

10#
 楼主| 发表于 2021-1-5 17:02:21 | 只看该作者
远祥 发表于 2021-1-5 16:302 F0 V" k  Z. I$ H
这个看似高大上,用起来却并不快捷呀!
. V; K( S0 k0 P- j( ^
还行吧,个人习惯,我用的切换填入信息,不是按钮。
8 q! @1 r" C; u2 L# ?0 y
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-19 07:07 , Processed in 0.062620 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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