QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

楼主: qiminger
收起左侧

[求助] 宏提取文件名字符为何不成功

[复制链接]
发表于 2015-10-4 09:03:48 | 显示全部楼层 来自: 中国浙江嘉兴
需要关联什麼,請詳述!
; ~. s. v) b6 T3 P4 g, W
发表于 2015-10-4 21:26:12 | 显示全部楼层 来自: 中国河南安阳
文件名:no name_prj。xxx
2 V4 c5 H( ~$ k/ M用方程式如何实现提取no到代号、提取name到名称、prj到类型呢?高人帮帮忙?! a0 ~" G$ d) p
谢谢!
发表于 2015-10-5 11:43:34 | 显示全部楼层 来自: 中国浙江嘉兴
huyaomeng 发表于 2015-10-4 21:26
+ R- i2 Z  \5 C8 I2 n# p8 `0 K文件名:no name_prj。xxx1 _4 {& g9 ]; H: Z- Y2 C7 A5 Y
用方程式如何实现提取no到代号、提取name到名称、prj到类型呢?高人帮帮忙?
% u& J* l* g! o ...
8 R- J/ Z- M# ^) j) I  d' j+ c
學習要活用,9 g6 _# W  d' }5 v
" C8 B' L; _3 H0 z1 Z. `) ~& H' K
解題在51#.
发表于 2015-12-7 20:30:26 | 显示全部楼层 来自: 中国湖北武汉
QQ图片20151207202936.png 7 `' M/ a$ G: h  j8 W
我的零件名是“T13-06-015_动板”为什么L2=0?
+ l, y3 w* K& i; J$ O; e) C: O  b
发表于 2015-12-7 20:41:26 | 显示全部楼层 来自: 中国湖北武汉
name_这个参数没有.sldprt这个后缀,那L2 = InStrRev(name_, ".", , 0)这条语句要一直读到“.”,所以=0?
发表于 2015-12-8 00:29:58 | 显示全部楼层 来自: 韩国
jaychou315 发表于 2015-12-7 20:30
' X% e& T# |5 l- d) P7 a+ E我的零件名是“T13-06-015_动板”为什么L2=0?
/ d3 O" g" C) ]0 ~% h+ O- a
我的零件名是“T13-06-015_动板”为什么L2=0?- Y* k  x9 M0 J2 |+ p! n
- M" F6 Z# c1 @3 l( Z2 A
又是文件隱藏了擴展名,取消就好了!
发表于 2015-12-11 01:04:22 | 显示全部楼层 来自: 中国湖北武汉
ryouss 发表于 2015-12-8 00:29
* {6 k" c3 ^4 `$ x/ S+ \. J. C; Y! L我的零件名是“T13-06-015_动板”为什么L2=0?
( Z3 A* o; `! Y" I. }2 o$ K+ e" l# J, q( f5 J! o
又是文件隱藏了擴展名,取消就好了!
0 _: n0 I# ^  ?8 F' b2 f
原来如此,多谢

点评

見83#  发表于 2015-12-11 08:37
发表于 2015-12-11 08:30:42 | 显示全部楼层 来自: 中国浙江嘉兴
本帖最后由 ryouss 于 2015-12-11 11:05 编辑
8 b1 B+ X4 z0 G8 d0 T) b4 o
. D  i& S/ p# S) H' U5 q其實既然知道在VBA編程裡,在偵錯中斷模式中,# |# D4 y5 Z' [- _7 l" D% ^7 q
把鼠標放在變數  L2 可以得知當時之值,應該就會把鼠標放在變數  name_ 不就可以查知 name_ 當時的值了.(肯定是沒有 .SLDPRT 這7個字母)
1 t( l% S! @! {0 r6 F# o7 d8 U" g- I; ]! D

9 n( J# x! T( ^* S! Y( e2 G再給個概念,* J5 O7 d  b3 |, |8 r

. R+ f2 z& \# P' B除了因執行錯誤而成偵錯中斷模式之外,為了找執行錯誤用 逐步執行 也是很好用的.
6 [& y' Z9 m( N
+ I. g  u* g3 v6 Z或是在適當編程中插入  STOP 指令,如要查  name_ 在執行時之值,就在 name_ 之下插入 STOP ,
, S! l5 ^- S  @7 C" d- F4 b! Z0 Q% p9 t8 E; C% `, _
當宏執行到 STOP 就會暫停可以查 name_ 當時值,再按執行鍵就可以跳出 STOP 往下再執行.
/ F0 O2 G' C; k' *************************************************
3 j  h4 Q; C2 {( W3 G2 q# p2 m4 A'  macro recorded on 12/06/15 by lsc
. k1 j, w: C' v- K' *************************************************  C) ]4 M# x7 H7 _; _
Dim swApp As Object+ _+ g# _! }- D, G
Dim Part As Object
; w/ _7 [8 p) [0 W- z9 JDim boolstatus As Boolean* J1 q( |; c1 M% J$ \4 c" g
8 y" w  \. R$ J& W, ~2 F1 f+ H) Q
Sub main(): S. K$ ^; Z3 p  }# K% i& _
) j, U: Q! `7 i8 @  L
Set swApp = Application.SldWorks1 ^; U5 e$ u! ]6 e% N0 L' U
Set Part = swApp.ActiveDoc
( [4 n5 N  y: l7 qDim myDimension As Object
) x, r! Y/ Z* fSet myDimension_1 = Part.Parameter("D5@草圖1"): N* }8 i0 k# K
Set myDimension_2 = Part.Parameter("D1@角度1")" P8 R% t: `+ B; `* [3 V8 A
pi = Atn(1) * 4
$ p. i: W! u  Q7 x2 h7 Q/ jFor I = 45 To 225 Step 5# {  l$ }. R: C" y9 b
    A = I * pi / 1806 z9 T3 b# {; l& `0 u( S3 E
    A1 = A * 0.01  '弧長R=10mm7 P/ v8 H5 g* F$ H0 z1 @7 z
    A2 = A * 33 / 21 - 1.0840988 '角度
9 [! U# i/ W( T7 G7 E$ m* t% g1 F    myDimension_1.SystemValue = A1
( A. m8 [! N: ]4 G    myDimension_2.SystemValue = A2$ L; T: l7 m* t( l# u
    boolstatus = Part.EditRebuild3()
( g% x7 ~! v" C- l    PauseTime = 0.01 ' 設定暫停時間0.3秒。
; \, a2 v$ S! \8 W0 U- S    Start = Timer    ' 設定開始暫停的時刻。
0 W8 t* l7 ~- \        Do While Timer < Start + PauseTime  `( ]; R' T3 L: \" c$ ?! H
            DoEvents    ' 將程式執行權讓給其它程式。
# P, E0 ^% H8 p6 ^$ X        Loop2 ]" o3 K8 d2 n4 @) Q' r
Next( f6 ^% d& ?( U5 Y; t; ]( j
Stop
, U$ n  E) L5 m6 r9 Z2 w) UFor J = 220 To 45 Step -5% k- M: ^; V! X3 Y% c! N& \& `; G
    A = J * pi / 1800 H4 w* q  {( u
    A1 = A * 0.01  '弧長R=10mm
3 l+ f, P* s& m* }6 a; q    A2 = A * 33 / 21 - 1.0840988 '角度: _5 u5 M. N$ p, d, V! l; X; v3 N
    myDimension_1.SystemValue = A11 b* n; ]1 I& {# @4 d" a" f! ~1 N
    myDimension_2.SystemValue = A2
/ e9 I$ ]3 T' i5 a0 d    boolstatus = Part.EditRebuild3()
' i% N) W' a/ I5 ?; {    PauseTime = 0.01 ' 設定暫停時間0.3秒。
2 J: `1 x( M: p" d0 _    Start = Timer    ' 設定開始暫停的時刻。7 o- w* i7 |* K# v& B& W
    Do While Timer < Start + PauseTime
- F, v7 b% N% P- t% x' K  v# \        DoEvents    ' 將程式執行權讓給其它程式。
* N" c9 d( S  q: r1 a    Loop
: G( \1 B: z% Y2 DNext) x" L- P" V" b) \) p1 Q0 a
MsgBox "Run End"
) o+ \4 G% r! @$ D. }) Y6 K3 M4 N" M2 s0 e6 O* s
End Sub
# L- N9 }9 f/ j8 |. E
# J: L; H, q* j) f3 k. g
发表于 2016-1-29 10:45:08 | 显示全部楼层 来自: 中国北京
beingsolver 发表于 2014-10-27 17:07+ B7 B$ U: K* `' V
这些天一直在找这个图号文件名的分离功能,终于成功了!

: g. A3 L  C: W$ e, `& \) J你好你能把你的那个文件发给我试一下可以吗,我的没用成功谢谢你啦。
发表于 2016-2-13 22:39:58 | 显示全部楼层 来自: 中国河南安阳
本帖最后由 huyaomeng 于 2016-2-13 22:43 编辑
* {9 s+ P5 P- j2 m
$ r* `4 E4 ]4 }5 B6 i6 g文件名:no name_prj.xxx7 U- i* C1 x7 w* N/ f
用方程式如何实现提取no到代号、提取name到名称、prj到类型(项目)呢?请高人帮忙?其中,xxx
$ t: u$ p5 V# y5 s' s是扩展名。"Dummy1"=part.Extension.CustomPropertyManager("").Set("代号",Left(part.GetTitle,InStr(part.GetTitle," ")))
4 f+ c2 O( }# ?# c/ r% y"Dummy2"=part.Extension.CustomPropertyManager("").Set("名称",Mid(part.GetTitle,InStr(part.GetTitle," ")+1,(InStr(InStr(part.GetTitle," ")+1,part.GetTitle,"_")-InStr(part.GetTitle," ")-1)))+ Y. W4 m0 c3 h, R+ m" g
"Dummy3"=part.Extension.CustomPropertyManager("").Set("项目",Mid(part.GetTitle,InStr(part.GetTitle,"_")+1,Len(part.GetTitle)-InStr(Part.GetTitle,"_")-7))
3 z. K" J8 y0 D# S& N
9 O( D% L1 `+ a( R这是三个方程,但是有时候不管用。请前辈们看看!另外,能通过方程读取文件路径吗?怎么编写?谢谢!
& l6 ?8 @8 t( w. W" T# _5 `$ _
发表于 2016-2-13 22:47:22 | 显示全部楼层 来自: 中国河南安阳
ryouss 发表于 2015-10-5 11:43
) f  I/ Q% v; Z. m- B學習要活用,
9 z! V4 Q9 P4 M+ `" v! J- W
6 u0 d. {1 \8 i* o解題在51#.
/ f  @& V8 L# a8 [7 R
这个我知道了。我的问题是想在51#的基础上再多提取些信息。我本意是想通过方程式提取文件所在文件夹名称的。
发表于 2016-2-17 15:55:30 | 显示全部楼层 来自: 中国安徽蚌埠
ryouss 发表于 2013-12-12 20:506 i1 Y3 k0 b/ h) }7 N9 G. i4 n8 b
如 300_222_33_固定销压板,假設 300_222_33_ 之位數不變,只有第三個" _ "之後的位數會變動的話,
$ i8 Q; C7 ^: s. y# o+ s* h6 R公式如 ...

& |! z0 T/ b' d* Z嵌入宏的界面怎么进去,前面几楼都是一个属性,
- w; u; S& f( k1 F1 p我要再加个属性。
4 ]/ b4 H$ l! T- u8 v* H一个代号; y. o1 |- k- ^
一个名称
发表于 2016-2-17 16:15:40 | 显示全部楼层 来自: 中国安徽蚌埠
我知道了,可以在TXT文件中修改,然后粘贴进来。
7 T! g8 n, o3 _; Y6 _
0 N) w0 F2 B+ n7 M1
  f. Q9 P- Y' |) J3 Z8 {9 h, Z/ Gdim str1
4 @8 c. c) R4 y9 J- l" N% udim str25 i: b/ ]: r2 l% \4 m* F
str1=part.Extension.CustomPropertyManager("").Set("名称",mid(part.GetTitle,9,20))5 k) G  q" F( Z2 ]- [
str2=part.Extension.CustomPropertyManager("").Set("代号",Left(part.GetTitle,8))
6 A  A8 v/ Y3 |4 a* E
qianh.png
发表于 2016-2-20 14:53:26 | 显示全部楼层 来自: 中国四川绵阳
ryouss 发表于 2013-12-17 23:47# z4 G- ?; i, g/ d
試試如下:win7 64位元( N( K/ _; U; l( X
編碼原則為   代號_名稱.solidworks副檔名(如 123456_軸承.SLDPRT)! M( i' j) U) J" z) j9 @
功能:應用宏 ...

. O5 U" F/ Z3 S请教下,这个宏能自动执行么?我每次都要制作完图纸后再按一次执行宏,感觉有点麻烦。
发表于 2016-2-20 15:15:09 | 显示全部楼层 来自: 中国浙江嘉兴
eastking1111 发表于 2016-2-20 14:53
; u& |" J8 Q3 g  j1 [请教下,这个宏能自动执行么?我每次都要制作完图纸后再按一次执行宏,感觉有点麻烦。

( k+ F3 B0 }, C; A. b6 B& A參考幫助,在工具列作個宏的 "自訂按鈕"
0 s) o$ a* y# y5 T1 ? 0220-1.png
' @6 M/ Y' e, C' T2 V1 X- C2 S" c0 M! B3 ]: J! t, J( G, Z  f
发表于 2016-2-20 15:19:34 | 显示全部楼层 来自: 中国四川绵阳
ryouss 发表于 2016-2-20 15:15
- k1 R% {. B- J% G) ?: k: B) n6 J參考幫助,在工具列作個宏的 "自訂按鈕"
) F+ {: Q( Z/ v& t8 k- T+ `
感谢你的回复,我目前就是用的自定义按钮,我的意思是能否让文件保存后就自动生成名称和图号
发表于 2016-2-20 16:33:23 | 显示全部楼层 来自: 中国浙江嘉兴
eastking1111 发表于 2016-2-20 15:192 ?, v' s( j4 u1 A
感谢你的回复,我目前就是用的自定义按钮,我的意思是能否让文件保存后就自动生成名称和图号

3 D1 @$ k7 X, A2 e9 \7 D. L應該可以,把條件及要求詳述,最好附個簡單文件說明一下
发表于 2016-2-20 16:50:28 | 显示全部楼层 来自: 中国四川绵阳
ryouss 发表于 2016-2-20 16:33/ r# Q8 }8 c/ l" y$ }% m; t
應該可以,把條件及要求詳述,最好附個簡單文件說明一下
- C  y/ I: m9 w: @
我是这么个意思:& G+ I: Z1 ?  f. W
开始状态_proc.jpg ' p# ^, Q/ ^, y4 H" n, k  g, W2 m
首先随机创建个文件,模版显示为上图;
, n6 Q. Z6 Y2 I% j) H, J
9 V+ M2 m  X1 | 保存名称及代号后_proc.jpg 2 R$ I5 f( H! N* d/ g& R- J
+ L& S$ ^. X1 Y. c0 _
按照XXXX_XXXX的模式保存文件名,但属性里面并无改变;% S9 f% Q- C: M: F) b# I7 Q
点击后_proc.jpg - P$ ?, `; s: q6 Q1 c

8 P' M7 Y3 |9 T. c& Q点击设定好的宏按钮后,图号及名称分离。; B: o/ h1 m8 C5 S3 ]
这是一个图纸从创建到完成的流程,我的意思是,是否每次都需要点击下宏按钮?
% s" }! y7 J+ p8 ?0 O9 \能否怎么弄一下,只要按XXXX_XXXX的模式保存文件,属性就自动分离图号及名称?
3 g& Z% d1 h* |
发表于 2016-2-20 17:28:57 | 显示全部楼层 来自: 中国浙江嘉兴
不經過"宏"作保存處理,想不出達到第3圖的自訂屬性要求.
& w/ q  j8 M# I0 _( b  P& `
发表于 2016-2-20 22:08:10 | 显示全部楼层 来自: 中国安徽蚌埠
eastking1111 发表于 2016-2-20 14:53  v" ?0 W% i6 m  O. L) X
请教下,这个宏能自动执行么?我每次都要制作完图纸后再按一次执行宏,感觉有点麻烦。
4 W! O( \# Y/ F$ L
SOLIDWORKS怎样将图档名“图号+名称”分离后自动链接到属性中
8 S- a) G: H0 c3 u: d5 C! jhttp://www.3dportal.cn/discuz/fo ... amp;fromuid=1883407# Y1 m' M5 L5 `9 N9 _0 `
(出处: 三维网)
; Y" M1 K  Z  G, {" d5 k# v8 {18楼,我的回复9 l4 P2 [& N1 W' ~$ @. K' x; a
发表于 2016-2-21 10:08:10 | 显示全部楼层 来自: 中国四川绵阳
jinqin11 发表于 2016-2-20 22:089 ]' O) M0 i7 y4 A) k
SOLIDWORKS怎样将图档名“图号+名称”分离后自动链接到属性中# e; w2 T7 d! B+ n! A
http://www.3dportal.cn/discuz/forum.php ...

1 d1 P3 G5 ^/ y2 _$ A, J# b* ~8 a感谢你的回复,我没看懂,我再把你的代码研究研究。
发表于 2016-2-21 10:27:12 | 显示全部楼层 来自: 中国四川绵阳
jinqin11 发表于 2016-2-20 22:08& k3 P0 g( [, m7 M/ ?6 X: ]: W" e
SOLIDWORKS怎样将图档名“图号+名称”分离后自动链接到属性中7 r  L. h9 h" Q) W9 `4 B
http://www.3dportal.cn/discuz/forum.php ...
; ?! s* e! r% L& O% ^+ N
XX.png % `4 f4 I5 w% c% S% M1 S
请教下我用2016的,为什么全局变量会有×?7 x$ l# t: V6 G# X' E
QQ截图20160221102458.png , T  M9 n6 A6 ?* I; U2 V' X8 U4 r2 v
还有就是代码改哪儿会让他从“_”开始分离,而不是从“.”分离?& a0 A  v/ R: ^; F) k5 d$ }- D
发表于 2016-2-21 22:13:40 | 显示全部楼层 来自: 中国安徽蚌埠
本帖最后由 jinqin11 于 2016-2-21 22:23 编辑 % c" L# R8 ]5 L( k
eastking1111 发表于 2016-2-21 10:27
" M7 r9 X' y3 x3 p( @  q请教下我用2016的,为什么全局变量会有×?1 G+ ^3 L2 i0 B9 u
4 I9 b( D; r- Z
还有就是代码改哪儿会让他从“_”开始分离,而不是从“. ...

; i. G; W- L1 e不用理会全局变量的错误。: @4 {% A! O, B7 d; G* E  z# U
用28楼的代号,也是用记事本编辑,然后复制到属性栏# _" c& v. `. w9 a( e5 B( U6 j
28楼代码中两个哭脸改成一个“代号”一个名称(要同属性栏的属性名一样)
# @9 Q/ x6 m4 v& Q  L& v8 Q! R
发表于 2016-2-22 11:28:00 | 显示全部楼层 来自: 中国四川绵阳
jinqin11 发表于 2016-2-21 22:13  j4 Q& }6 G6 N/ \  g  @& e, P
不用理会全局变量的错误。1 k4 v1 c  K+ i) u- `* @* ]
用28楼的代号,也是用记事本编辑,然后复制到属性栏
8 a% i+ W/ r! L: L+ P7 [# p28楼代码中两个哭脸改成 ...
8 G/ I  P! a# ?8 L$ k" m
28楼的帖子一直都弄不成功,不知道是版本问题还是我没弄对,/ T% Y+ ]6 g$ [+ ~
感谢你的回复。
发表于 2016-2-23 16:30:33 | 显示全部楼层 来自: 中国安徽蚌埠
eastking1111 发表于 2016-2-22 11:28# |! |8 H( B" q) k9 q6 c2 Q- t6 N
28楼的帖子一直都弄不成功,不知道是版本问题还是我没弄对,8 A" T9 Z7 {4 }% P+ `) F5 S! z
感谢你的回复。
( {/ Y, g' A7 E$ ?8 Q5 G  c
28楼的代码是有问题,正确的是
* ]2 |- h+ k2 c2 h1 @! K% A9 B: U+ w
: x' I+ \5 e4 y+ M1
7 x# o, `  _! p& J2 Adim str1
5 s4 B+ O$ t$ y6 y6 e- Rdim str2
% e/ ~9 \; z$ v. |$ S# |$ f( g; Ndim str3
1 T7 h2 V# A6 i& J* b3 Ddim l
0 \8 e- `2 K* d6 t# Q4 |str1=Part.GetTitle
& G/ d; ?4 N. q- C- ?6 El=InStr(str1,"-")
( I; A) S# x5 v# j! `6 xstr2=part.Extension.CustomPropertyManager("").Set("代号",Left(str1,l-1))( G1 @+ k& Z# h9 ]2 Y. K
str3=part.Extension.CustomPropertyManager("").Set("名称",mid(str1,l+1,20))
, B3 t) K& w# @2 _9 W# e2 u
02233.png
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

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