QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
11天前
楼主: qiminger
收起左侧

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

[复制链接]
发表于 2015-10-4 09:03:48 | 显示全部楼层 来自: 中国浙江嘉兴
需要关联什麼,請詳述!
: Z9 R9 W3 {9 f; k5 z
发表于 2015-10-4 21:26:12 | 显示全部楼层 来自: 中国河南安阳
文件名:no name_prj。xxx
3 E/ K0 `! E1 D1 u! Y用方程式如何实现提取no到代号、提取name到名称、prj到类型呢?高人帮帮忙?
5 B$ z1 T! o  M, i0 y& u  }5 v2 \谢谢!
发表于 2015-10-5 11:43:34 | 显示全部楼层 来自: 中国浙江嘉兴
huyaomeng 发表于 2015-10-4 21:26% \- J- `9 x7 k4 o
文件名:no name_prj。xxx5 b* R: g: |+ J' d
用方程式如何实现提取no到代号、提取name到名称、prj到类型呢?高人帮帮忙?
" j. D- I8 M; x3 l ...

# F9 l; U3 e# y: V學習要活用,0 s1 k6 H; z, H& `
/ r: ~# r2 o; {% z+ r+ R
解題在51#.
发表于 2015-12-7 20:30:26 | 显示全部楼层 来自: 中国湖北武汉
QQ图片20151207202936.png
( T  Q% i7 i0 y0 d9 s我的零件名是“T13-06-015_动板”为什么L2=0?$ d6 h& M- h; l# t( c; _$ f
发表于 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! Z, {  B* p6 B( b
我的零件名是“T13-06-015_动板”为什么L2=0?
' m, a) c) w% X6 i0 b
我的零件名是“T13-06-015_动板”为什么L2=0?# i5 {: d/ d$ e3 d' s$ g

" Z) x! V( ~3 o% ]/ c" J又是文件隱藏了擴展名,取消就好了!
发表于 2015-12-11 01:04:22 | 显示全部楼层 来自: 中国湖北武汉
ryouss 发表于 2015-12-8 00:29
  t# u$ d: q6 K8 {" y, v) H我的零件名是“T13-06-015_动板”为什么L2=0?
. X$ @( m1 K  k+ D3 j0 O+ `
3 T& e7 [( R; `/ q# \  V& V又是文件隱藏了擴展名,取消就好了!
( V% b7 _' U6 n
原来如此,多谢

点评

見83#  发表于 2015-12-11 08:37
发表于 2015-12-11 08:30:42 | 显示全部楼层 来自: 中国浙江嘉兴
本帖最后由 ryouss 于 2015-12-11 11:05 编辑
! q- z/ T% s- [* e2 G: W) ]0 ?# H, P- m, p
其實既然知道在VBA編程裡,在偵錯中斷模式中,
5 _4 Y9 Q# U/ W* B: J+ c8 V把鼠標放在變數  L2 可以得知當時之值,應該就會把鼠標放在變數  name_ 不就可以查知 name_ 當時的值了.(肯定是沒有 .SLDPRT 這7個字母)( O- R* s) \' g' R

1 [- d2 R1 L) S. m, l+ B
6 q7 p+ H: D, _. C8 }. B. ]; t% z$ s# J再給個概念,
$ ~' w# q5 p9 v2 K5 d- R1 ~- R+ `) _* Q+ v- x# \: d
除了因執行錯誤而成偵錯中斷模式之外,為了找執行錯誤用 逐步執行 也是很好用的.; J( h4 l- C5 A  C/ @
4 X( S2 }3 v. n
或是在適當編程中插入  STOP 指令,如要查  name_ 在執行時之值,就在 name_ 之下插入 STOP ," ]0 x; |3 y+ N8 Z) x
* Z6 p7 {, Z8 i1 W& X' x! E
當宏執行到 STOP 就會暫停可以查 name_ 當時值,再按執行鍵就可以跳出 STOP 往下再執行.
6 h, A+ x8 S. e1 j; B* M  K' *************************************************% [  W( r+ f9 e, R1 e2 I5 Y
'  macro recorded on 12/06/15 by lsc/ Q2 D5 ~! q. b+ s2 Z) d
' *************************************************/ E2 ~6 t0 Z. A, ^9 D7 e4 U4 R/ [
Dim swApp As Object
( u) y; k  ?8 UDim Part As Object" N# @* ]) K  G' n/ k1 [  S
Dim boolstatus As Boolean
+ o7 D# b( o6 f+ O7 M- g* v! y3 J9 A2 o! W4 ^  Y" y1 D
Sub main()
. M1 U" t1 J4 {& z
4 n" w' h: \. t9 C& U6 `Set swApp = Application.SldWorks! ^& C, v3 u8 a5 H4 |
Set Part = swApp.ActiveDoc
7 q( W2 h1 o+ X& C, G# U% U1 oDim myDimension As Object( g+ f! l1 a( \) z6 ^
Set myDimension_1 = Part.Parameter("D5@草圖1")  ~" g8 B3 v, B/ ]) r
Set myDimension_2 = Part.Parameter("D1@角度1")
( q, m; Q5 [. Y( opi = Atn(1) * 45 u* l  E+ n) Y6 t+ {$ }! ]! {  ^% M
For I = 45 To 225 Step 5
1 _# h1 `7 S/ o2 n    A = I * pi / 180. [: i9 h" C: N' s; l; Y# \
    A1 = A * 0.01  '弧長R=10mm
) x" q  }) {/ U+ h( C* N    A2 = A * 33 / 21 - 1.0840988 '角度+ [/ o0 b; X# V- A* M* W. l
    myDimension_1.SystemValue = A1
# }8 _* Y# G& a: k9 \# B3 L. X, N    myDimension_2.SystemValue = A25 T- y% E7 g* o* I
    boolstatus = Part.EditRebuild3()
* s6 T$ j1 p; H; ?    PauseTime = 0.01 ' 設定暫停時間0.3秒。
( H& I- v0 n( x% V# T2 Q    Start = Timer    ' 設定開始暫停的時刻。2 R7 R% ?5 {/ D' w
        Do While Timer < Start + PauseTime
1 V. l  {/ s$ N7 A1 F- g            DoEvents    ' 將程式執行權讓給其它程式。6 h. Y9 i! _0 K
        Loop: n: v. z0 C) t6 F% Q
Next
& f( |2 t7 Y% c/ T; S4 GStop
4 @5 L- s2 C* ~: d+ |$ yFor J = 220 To 45 Step -5
/ B, B$ `% ^7 X    A = J * pi / 180
/ I, G% L- X# |. s9 K    A1 = A * 0.01  '弧長R=10mm3 J* I, ^. m; |( _
    A2 = A * 33 / 21 - 1.0840988 '角度5 H6 `& O$ X  I: ~8 E( b# v
    myDimension_1.SystemValue = A19 _4 ^  I' m6 i1 Y6 K& b6 P
    myDimension_2.SystemValue = A2' l. N+ ], |3 j7 r
    boolstatus = Part.EditRebuild3()
+ @7 r5 `& p0 Q  W+ s$ g    PauseTime = 0.01 ' 設定暫停時間0.3秒。
! _  e1 o8 \/ f* P) L    Start = Timer    ' 設定開始暫停的時刻。. ?( S/ f' o7 s$ J( t
    Do While Timer < Start + PauseTime& x9 ?% w6 u' b, i5 B
        DoEvents    ' 將程式執行權讓給其它程式。
" W8 \8 k) H( \; u    Loop
( z3 P4 ?- E( f8 ]' bNext
! w7 N. J, S+ Y4 D$ yMsgBox "Run End"
0 p: A  y; K* W3 T
  L% X, {9 v( t, f5 f0 @& e. A) QEnd Sub- [/ Y1 Q& N4 G
4 O: ?+ p! J% n% @
发表于 2016-1-29 10:45:08 | 显示全部楼层 来自: 中国北京
beingsolver 发表于 2014-10-27 17:07) A5 Q" O* T" e& a
这些天一直在找这个图号文件名的分离功能,终于成功了!
. `/ _# j& [" r9 @
你好你能把你的那个文件发给我试一下可以吗,我的没用成功谢谢你啦。
发表于 2016-2-13 22:39:58 | 显示全部楼层 来自: 中国河南安阳
本帖最后由 huyaomeng 于 2016-2-13 22:43 编辑
7 E- \# h5 W/ [  a2 t
0 k% b7 J) k+ M$ Z. y8 ~' V文件名:no name_prj.xxx- [3 ?* }) X' m6 Q
用方程式如何实现提取no到代号、提取name到名称、prj到类型(项目)呢?请高人帮忙?其中,xxx
3 t; Z+ q% u& p9 T& \是扩展名。"Dummy1"=part.Extension.CustomPropertyManager("").Set("代号",Left(part.GetTitle,InStr(part.GetTitle," ")))
7 _9 G8 f  }8 i4 c( A( x"Dummy2"=part.Extension.CustomPropertyManager("").Set("名称",Mid(part.GetTitle,InStr(part.GetTitle," ")+1,(InStr(InStr(part.GetTitle," ")+1,part.GetTitle,"_")-InStr(part.GetTitle," ")-1)))) _. E2 Z+ J1 U$ G2 J
"Dummy3"=part.Extension.CustomPropertyManager("").Set("项目",Mid(part.GetTitle,InStr(part.GetTitle,"_")+1,Len(part.GetTitle)-InStr(Part.GetTitle,"_")-7)). e& r. A7 u' ~
6 b/ e! s, z, Y# y. r
这是三个方程,但是有时候不管用。请前辈们看看!另外,能通过方程读取文件路径吗?怎么编写?谢谢!2 x# U- r9 i8 }4 a; S" b
发表于 2016-2-13 22:47:22 | 显示全部楼层 来自: 中国河南安阳
ryouss 发表于 2015-10-5 11:43& [' w1 V9 |) D% x6 L& G
學習要活用,) c' O$ d0 z* C6 U: r: M
3 T: a3 `+ P  N" W' k
解題在51#.

' [# ]! M- y, l+ A, `这个我知道了。我的问题是想在51#的基础上再多提取些信息。我本意是想通过方程式提取文件所在文件夹名称的。
发表于 2016-2-17 15:55:30 | 显示全部楼层 来自: 中国安徽蚌埠
ryouss 发表于 2013-12-12 20:50
( p7 l5 R7 J, f0 L如 300_222_33_固定销压板,假設 300_222_33_ 之位數不變,只有第三個" _ "之後的位數會變動的話,
; M, x8 ?" d% R! I公式如 ...
! ^6 v7 e6 ]# `0 U
嵌入宏的界面怎么进去,前面几楼都是一个属性,% |3 G4 }4 O4 B' W( m
我要再加个属性。
! q) t7 V8 g+ r一个代号
1 M' o; p9 N' K6 w& j( q一个名称
发表于 2016-2-17 16:15:40 | 显示全部楼层 来自: 中国安徽蚌埠
我知道了,可以在TXT文件中修改,然后粘贴进来。8 ]; @+ U; \/ |8 F' B

2 _$ F  e9 P9 `% t/ p5 t1% g# {7 t" r/ q3 i7 l9 M- ?8 K0 q
dim str1' F/ y3 v4 p) M; h* u' V
dim str2' g  y' n* Q  h7 y. s0 ~" s
str1=part.Extension.CustomPropertyManager("").Set("名称",mid(part.GetTitle,9,20))( q2 g; E# h9 _: y& W* K1 K2 R% L8 ]
str2=part.Extension.CustomPropertyManager("").Set("代号",Left(part.GetTitle,8))2 }! k: d' v' H6 h9 g  c$ h; q) n( _  }7 R
qianh.png
发表于 2016-2-20 14:53:26 | 显示全部楼层 来自: 中国四川绵阳
ryouss 发表于 2013-12-17 23:47! _5 V4 ]8 }% R4 f! j" }
試試如下:win7 64位元
0 Z, X. h0 j0 x& m6 s+ U1 j編碼原則為   代號_名稱.solidworks副檔名(如 123456_軸承.SLDPRT)1 c# g" S3 V" t% @& v
功能:應用宏 ...
0 v6 t4 _( ?; i7 n0 L
请教下,这个宏能自动执行么?我每次都要制作完图纸后再按一次执行宏,感觉有点麻烦。
发表于 2016-2-20 15:15:09 | 显示全部楼层 来自: 中国浙江嘉兴
eastking1111 发表于 2016-2-20 14:534 l$ T/ x' P3 t& [
请教下,这个宏能自动执行么?我每次都要制作完图纸后再按一次执行宏,感觉有点麻烦。

! ]( z& [, E  j( F, `* s/ a參考幫助,在工具列作個宏的 "自訂按鈕"
' t7 Z/ ?4 v9 h/ w 0220-1.png . t# U- G  u' h- m1 ~
5 X8 k2 l; W  p/ K( F
发表于 2016-2-20 15:19:34 | 显示全部楼层 来自: 中国四川绵阳
ryouss 发表于 2016-2-20 15:15
, u: |: U  x* @8 E參考幫助,在工具列作個宏的 "自訂按鈕"

' t3 U! Y( Y5 M2 C) h1 ^5 G, _% n感谢你的回复,我目前就是用的自定义按钮,我的意思是能否让文件保存后就自动生成名称和图号
发表于 2016-2-20 16:33:23 | 显示全部楼层 来自: 中国浙江嘉兴
eastking1111 发表于 2016-2-20 15:19
2 Y) D. R/ j) t- w* G感谢你的回复,我目前就是用的自定义按钮,我的意思是能否让文件保存后就自动生成名称和图号

. e) T9 T6 D3 _( g' B  q0 |應該可以,把條件及要求詳述,最好附個簡單文件說明一下
发表于 2016-2-20 16:50:28 | 显示全部楼层 来自: 中国四川绵阳
ryouss 发表于 2016-2-20 16:339 X# s/ d# o* D& n- D2 p4 k
應該可以,把條件及要求詳述,最好附個簡單文件說明一下

7 w& O1 H+ i- n我是这么个意思:
" c( D4 z0 z, h) B" D1 Z  t2 C3 }( u; Q7 s  W 开始状态_proc.jpg
$ w4 i' x, F3 m/ f9 x3 Q: b+ x首先随机创建个文件,模版显示为上图;; B( e% O6 w$ {" ~

2 Y% {+ d" _6 u" E7 p& ~8 n. o4 K 保存名称及代号后_proc.jpg
; f$ o  G, U) n5 _+ g+ u! d7 C/ l7 H9 f- G) A/ O! H/ d8 A* I
按照XXXX_XXXX的模式保存文件名,但属性里面并无改变;2 j; A2 ^4 M1 ]8 _0 x; A
点击后_proc.jpg 6 o9 x; Z/ V1 B# H' B+ e
4 T- I( b  _( c; \
点击设定好的宏按钮后,图号及名称分离。
0 h% w6 a" _) J5 R5 V这是一个图纸从创建到完成的流程,我的意思是,是否每次都需要点击下宏按钮?
% c' m# q3 f, q3 K0 A/ S. j8 T能否怎么弄一下,只要按XXXX_XXXX的模式保存文件,属性就自动分离图号及名称?# ?, q8 _4 O& i8 ~  |, q7 W
发表于 2016-2-20 17:28:57 | 显示全部楼层 来自: 中国浙江嘉兴
不經過"宏"作保存處理,想不出達到第3圖的自訂屬性要求.- ^6 O7 I- n6 s( ~. w, |" Q" i/ K
发表于 2016-2-20 22:08:10 | 显示全部楼层 来自: 中国安徽蚌埠
eastking1111 发表于 2016-2-20 14:53
* \; B' P8 I/ a1 [2 s' d请教下,这个宏能自动执行么?我每次都要制作完图纸后再按一次执行宏,感觉有点麻烦。

3 l, G: X' H( u, i) i% pSOLIDWORKS怎样将图档名“图号+名称”分离后自动链接到属性中
  x5 ?% K3 B* r( N" xhttp://www.3dportal.cn/discuz/fo ... amp;fromuid=1883407, }$ S: o- G9 b. [# Y
(出处: 三维网)
- Q1 H3 I4 l) [! i18楼,我的回复  b! v+ G7 Q* [- Q+ S
发表于 2016-2-21 10:08:10 | 显示全部楼层 来自: 中国四川绵阳
jinqin11 发表于 2016-2-20 22:08
* L! z8 l; E$ ?  c( TSOLIDWORKS怎样将图档名“图号+名称”分离后自动链接到属性中
! J9 k2 J. O; Z$ e: x, phttp://www.3dportal.cn/discuz/forum.php ...

+ Z: k, b+ r# f% c感谢你的回复,我没看懂,我再把你的代码研究研究。
发表于 2016-2-21 10:27:12 | 显示全部楼层 来自: 中国四川绵阳
jinqin11 发表于 2016-2-20 22:088 E( p  g, y/ s
SOLIDWORKS怎样将图档名“图号+名称”分离后自动链接到属性中4 J1 {- |3 T& g+ @6 p9 J' o# ?0 p
http://www.3dportal.cn/discuz/forum.php ...

: h1 W% O, a. q- I0 D3 A& N XX.png
0 J( ]5 L3 Y1 T/ E  l8 H5 J1 p请教下我用2016的,为什么全局变量会有×?  B3 g8 J* Q  m1 i
QQ截图20160221102458.png 9 o' ?. p4 \" @5 @) r, |" Y1 l
还有就是代码改哪儿会让他从“_”开始分离,而不是从“.”分离?
1 h+ b) q, n% n+ O; f
发表于 2016-2-21 22:13:40 | 显示全部楼层 来自: 中国安徽蚌埠
本帖最后由 jinqin11 于 2016-2-21 22:23 编辑
  t% @9 a8 _$ O  W
eastking1111 发表于 2016-2-21 10:27
: _2 Q4 b$ b% g3 I% _9 Z9 W+ I8 C, ?$ c请教下我用2016的,为什么全局变量会有×?2 K5 b( C: X2 L5 U6 T6 x

" v, Y0 ^- P2 a1 ~: M! I还有就是代码改哪儿会让他从“_”开始分离,而不是从“. ...
. {4 U: w) W+ f7 v3 m
不用理会全局变量的错误。
0 G/ S5 x, m( s  i# D用28楼的代号,也是用记事本编辑,然后复制到属性栏5 e7 w2 n. @) ^/ N& p  t0 s
28楼代码中两个哭脸改成一个“代号”一个名称(要同属性栏的属性名一样)
0 s7 Y5 V' A8 g$ |/ R& Y6 G0 P# i
发表于 2016-2-22 11:28:00 | 显示全部楼层 来自: 中国四川绵阳
jinqin11 发表于 2016-2-21 22:13
$ i# r& G1 ^) ~- f" [# _不用理会全局变量的错误。: R+ y1 K% S2 T; A
用28楼的代号,也是用记事本编辑,然后复制到属性栏
8 z' f( W% q# {. G/ ]0 d) q28楼代码中两个哭脸改成 ...
) E& y# m( ?7 N2 T0 S; J
28楼的帖子一直都弄不成功,不知道是版本问题还是我没弄对,  n4 ?8 Y; U) m; W! x
感谢你的回复。
发表于 2016-2-23 16:30:33 | 显示全部楼层 来自: 中国安徽蚌埠
eastking1111 发表于 2016-2-22 11:28
$ Q0 l7 J# `7 `% G2 X# K  Z28楼的帖子一直都弄不成功,不知道是版本问题还是我没弄对,% b0 e0 |& @0 [( I
感谢你的回复。
& K0 X( Z5 n* E2 w% }% F
28楼的代码是有问题,正确的是
2 _/ }! y- R6 {; ?; {4 y: h5 }* p- G
1  X: M$ n) u1 {, i' `  G  [7 {2 u
dim str1
- U5 ^5 `; S) W& ]2 P, F; Odim str24 ^, L0 ~+ H( D' U5 ]
dim str3
' w) U3 R% \2 B$ x! W8 Odim l
# N* k$ e6 y( j% m/ Q6 Ustr1=Part.GetTitle
6 z' G/ Z/ T. T% r: ^$ g8 T5 o" Wl=InStr(str1,"-")
9 Z5 M$ Z' L0 J2 o( qstr2=part.Extension.CustomPropertyManager("").Set("代号",Left(str1,l-1))- P+ i6 A, Q* ]2 G" }/ e( d
str3=part.Extension.CustomPropertyManager("").Set("名称",mid(str1,l+1,20))# C0 E# D8 E% @1 @% z
02233.png
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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