QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

楼主: qiminger
收起左侧

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

[复制链接]
发表于 2015-10-4 09:03:48 | 显示全部楼层 来自: 中国浙江嘉兴
需要关联什麼,請詳述!2 N9 j! \: ^+ u! f, E: \1 ?
发表于 2015-10-4 21:26:12 | 显示全部楼层 来自: 中国河南安阳
文件名:no name_prj。xxx
! i% [% d& C5 q! q# g用方程式如何实现提取no到代号、提取name到名称、prj到类型呢?高人帮帮忙?. `+ E( k0 s4 H" N
谢谢!
发表于 2015-10-5 11:43:34 | 显示全部楼层 来自: 中国浙江嘉兴
huyaomeng 发表于 2015-10-4 21:26
! x: S1 @# E5 ^6 k6 }文件名:no name_prj。xxx
& Q+ T' U) ?; i4 A/ j# J0 X用方程式如何实现提取no到代号、提取name到名称、prj到类型呢?高人帮帮忙?6 t1 S+ p* q/ l# m6 x
...

" V; m, }, B% ]學習要活用,/ \" y: K& }1 E5 B, J6 W. j

! W. a3 B) I; Y0 m; X* L# {解題在51#.
发表于 2015-12-7 20:30:26 | 显示全部楼层 来自: 中国湖北武汉
QQ图片20151207202936.png ! q/ b2 P" Q3 u; }8 k# Z) {/ |9 d' U
我的零件名是“T13-06-015_动板”为什么L2=0?
; k0 V' ~! X8 ~. r3 }: \* F/ x
发表于 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
" Q* g9 O4 x" ^4 q  a我的零件名是“T13-06-015_动板”为什么L2=0?

/ h% z5 k1 V/ E5 e4 U# p我的零件名是“T13-06-015_动板”为什么L2=0?9 Y! k5 R: \- L! G- @

5 v8 ?: |- T; B, G5 W又是文件隱藏了擴展名,取消就好了!
发表于 2015-12-11 01:04:22 | 显示全部楼层 来自: 中国湖北武汉
ryouss 发表于 2015-12-8 00:299 ^8 X( l& M2 p7 p5 ^  S9 ?
我的零件名是“T13-06-015_动板”为什么L2=0?
3 p4 x/ g% Q/ m+ B. ]8 `9 B0 g6 N  }0 @0 p$ k
又是文件隱藏了擴展名,取消就好了!

8 X# Y! I( a0 \0 i8 @8 ]原来如此,多谢

点评

見83#  发表于 2015-12-11 08:37
发表于 2015-12-11 08:30:42 | 显示全部楼层 来自: 中国浙江嘉兴
本帖最后由 ryouss 于 2015-12-11 11:05 编辑 4 f4 Y  \- u. d$ L4 l; S7 X

. v8 [' ?. T) g& k& C  E0 B其實既然知道在VBA編程裡,在偵錯中斷模式中,
- F# P& o' ?3 Z  \, q# ?; e把鼠標放在變數  L2 可以得知當時之值,應該就會把鼠標放在變數  name_ 不就可以查知 name_ 當時的值了.(肯定是沒有 .SLDPRT 這7個字母)- q8 M% c% ~/ g8 l0 D

6 a0 v5 q% V! ~, h- n3 T/ H" T: B( t, t3 c1 l2 x- {/ ]
再給個概念,
# z( q- p7 R, u, C. @$ h+ j5 Z/ s* }3 e8 ^6 a
除了因執行錯誤而成偵錯中斷模式之外,為了找執行錯誤用 逐步執行 也是很好用的.
0 }8 y9 P: b3 |( A6 ~; b; M% m+ T: O+ d4 r# h
或是在適當編程中插入  STOP 指令,如要查  name_ 在執行時之值,就在 name_ 之下插入 STOP ,( u9 p. I+ _) m
5 s- W) K+ Y8 f& V+ _3 [3 ~
當宏執行到 STOP 就會暫停可以查 name_ 當時值,再按執行鍵就可以跳出 STOP 往下再執行.
* }; |. r$ s! r! x1 B. a9 L' *************************************************
, w( }5 \2 ~1 [+ W'  macro recorded on 12/06/15 by lsc5 j# [' t3 \: j8 S0 I
' *************************************************/ B9 C  r! i; D( N, h: D
Dim swApp As Object
" ]2 e0 |' _6 b: P9 E5 \Dim Part As Object3 a% l# M0 `8 W6 ?
Dim boolstatus As Boolean$ u0 z$ T, ?% N4 q
- m; A0 t  x7 e8 _2 i; V
Sub main()
6 R$ _. ^8 }# n: J$ g) P4 C& @8 ]: W
Set swApp = Application.SldWorks
# _7 \: a0 Q1 q1 @  Y0 I. o9 \Set Part = swApp.ActiveDoc
/ x; m* Q2 r1 a' s7 _# v6 j  dDim myDimension As Object4 c4 i2 O5 A  [0 c1 n1 l: [( j  o( P* p' D
Set myDimension_1 = Part.Parameter("D5@草圖1")
, Q! h) L! }& GSet myDimension_2 = Part.Parameter("D1@角度1")- y8 F! T; }! `: y
pi = Atn(1) * 4
& l2 ?( }/ s- Q1 W( B' x0 ^9 Z, U8 A1 aFor I = 45 To 225 Step 5
* v0 y6 k9 q. j5 @    A = I * pi / 180
& S& m; Q. O+ @1 `    A1 = A * 0.01  '弧長R=10mm
: i7 o2 _. K- r5 n, u    A2 = A * 33 / 21 - 1.0840988 '角度
9 ?" N' i, E* W' v8 E    myDimension_1.SystemValue = A1
/ P% ^5 ~" M, `& u8 P& G    myDimension_2.SystemValue = A2
/ L* t6 h2 ]4 p7 q/ K    boolstatus = Part.EditRebuild3()7 S% k: B* \) d/ I; D
    PauseTime = 0.01 ' 設定暫停時間0.3秒。% @3 P6 B4 P5 H. y
    Start = Timer    ' 設定開始暫停的時刻。. h; v$ D& V( c
        Do While Timer < Start + PauseTime
6 M, P0 O4 Z1 D' U* T) ~            DoEvents    ' 將程式執行權讓給其它程式。/ v5 H1 E5 b. ]+ b5 S0 S$ p1 g
        Loop
" z# n1 G4 R  N, ?! q& eNext
0 ?8 F6 M, Z* VStop
, Z, K. U- x$ Z5 QFor J = 220 To 45 Step -5
* [" P) M; [/ ~0 Y0 W- O5 w    A = J * pi / 1805 D, T/ c5 R/ n% K6 ?3 p
    A1 = A * 0.01  '弧長R=10mm
) X; ]. s) J- d4 t    A2 = A * 33 / 21 - 1.0840988 '角度$ X. R7 G& K# [+ R. K& G
    myDimension_1.SystemValue = A1+ B0 E- r/ B4 m- K& l
    myDimension_2.SystemValue = A24 j7 H$ x* d  o# A0 a! j# o7 K5 v
    boolstatus = Part.EditRebuild3()
3 c% {* X) z- N! q+ h  d1 M. t( P    PauseTime = 0.01 ' 設定暫停時間0.3秒。( {# H  C. l# [3 w8 C; c% F9 n
    Start = Timer    ' 設定開始暫停的時刻。& d$ p" F8 z6 H
    Do While Timer < Start + PauseTime. _$ h2 e, o6 U! a
        DoEvents    ' 將程式執行權讓給其它程式。0 m! _& V0 y' n% K
    Loop
/ M, B! H+ k  W2 y; z1 lNext; s' I3 A2 W. H( e7 o
MsgBox "Run End"  v& u  ^$ ^# ?$ A$ {) R8 H) H
5 H! |. {: j/ t  ~4 b0 Q
End Sub
7 N# ], S- d8 `9 a2 u' \: Z$ h
) i6 k/ f. r1 E% H/ u* S% q
发表于 2016-1-29 10:45:08 | 显示全部楼层 来自: 中国北京
beingsolver 发表于 2014-10-27 17:07
+ F* v; l7 y4 r这些天一直在找这个图号文件名的分离功能,终于成功了!

' @8 t- V3 u7 g" W: B9 U5 Y, c你好你能把你的那个文件发给我试一下可以吗,我的没用成功谢谢你啦。
发表于 2016-2-13 22:39:58 | 显示全部楼层 来自: 中国河南安阳
本帖最后由 huyaomeng 于 2016-2-13 22:43 编辑 $ {+ w2 K2 `. N" A' ]( ]
  G2 g$ ?: [% n& K
文件名:no name_prj.xxx
- J  j: k9 H( D5 W( E用方程式如何实现提取no到代号、提取name到名称、prj到类型(项目)呢?请高人帮忙?其中,xxx
' I8 s: a, ?3 j$ s是扩展名。"Dummy1"=part.Extension.CustomPropertyManager("").Set("代号",Left(part.GetTitle,InStr(part.GetTitle," ")))# u  e( p8 l# q# M( T1 B
"Dummy2"=part.Extension.CustomPropertyManager("").Set("名称",Mid(part.GetTitle,InStr(part.GetTitle," ")+1,(InStr(InStr(part.GetTitle," ")+1,part.GetTitle,"_")-InStr(part.GetTitle," ")-1)))
# h6 E+ ~! @* y. i5 b"Dummy3"=part.Extension.CustomPropertyManager("").Set("项目",Mid(part.GetTitle,InStr(part.GetTitle,"_")+1,Len(part.GetTitle)-InStr(Part.GetTitle,"_")-7))$ {% T3 `* n. z  O
) `8 T7 W% B; }, @6 H
这是三个方程,但是有时候不管用。请前辈们看看!另外,能通过方程读取文件路径吗?怎么编写?谢谢!4 U9 \4 @5 r: ?: G
发表于 2016-2-13 22:47:22 | 显示全部楼层 来自: 中国河南安阳
ryouss 发表于 2015-10-5 11:43
( t; E8 e. W4 l2 v" h% Q) e$ W學習要活用,
' n# m  m, c2 A. n. F  I$ E5 z4 X% J2 @) ?& @
解題在51#.

# z3 |; _1 P/ E: i" }9 I这个我知道了。我的问题是想在51#的基础上再多提取些信息。我本意是想通过方程式提取文件所在文件夹名称的。
发表于 2016-2-17 15:55:30 | 显示全部楼层 来自: 中国安徽蚌埠
ryouss 发表于 2013-12-12 20:50$ |6 U) p* {) ^$ e) Y/ E8 J/ Y
如 300_222_33_固定销压板,假設 300_222_33_ 之位數不變,只有第三個" _ "之後的位數會變動的話,
5 x/ ^) d3 m0 q) G+ R公式如 ...

2 H2 o+ E' y8 e* q嵌入宏的界面怎么进去,前面几楼都是一个属性,+ m1 G# [( v9 A4 X
我要再加个属性。/ ]/ |, G1 C5 C7 x9 K/ S  S2 P
一个代号$ z9 R8 I) c# j9 e
一个名称
发表于 2016-2-17 16:15:40 | 显示全部楼层 来自: 中国安徽蚌埠
我知道了,可以在TXT文件中修改,然后粘贴进来。
' `  |; @- b2 P. W( ?$ [, Y: p" M& W9 q0 [
13 F% u; l% y3 C& q' l- @1 E
dim str1+ n. y9 N7 _, W* B5 @
dim str2) N$ H, F! f& ]
str1=part.Extension.CustomPropertyManager("").Set("名称",mid(part.GetTitle,9,20)), A# ^1 C0 Z3 C7 l9 I% J( c/ e
str2=part.Extension.CustomPropertyManager("").Set("代号",Left(part.GetTitle,8))
1 f" ^1 D$ ~1 n: K
qianh.png
发表于 2016-2-20 14:53:26 | 显示全部楼层 来自: 中国四川绵阳
ryouss 发表于 2013-12-17 23:47
0 E. G' O8 f* X) o: A' R試試如下:win7 64位元
# E7 P1 k8 O1 ]# J編碼原則為   代號_名稱.solidworks副檔名(如 123456_軸承.SLDPRT)
4 {( F! H$ r7 a$ E( O9 l功能:應用宏 ...
% r0 l& y$ r6 J$ s$ M
请教下,这个宏能自动执行么?我每次都要制作完图纸后再按一次执行宏,感觉有点麻烦。
发表于 2016-2-20 15:15:09 | 显示全部楼层 来自: 中国浙江嘉兴
eastking1111 发表于 2016-2-20 14:53
) _2 T, _2 K- B/ Z1 ~5 Z请教下,这个宏能自动执行么?我每次都要制作完图纸后再按一次执行宏,感觉有点麻烦。

! L$ u% [# d' C- a0 _& x參考幫助,在工具列作個宏的 "自訂按鈕"$ C! D- T6 M6 V% b
0220-1.png
1 a1 q- @/ A& x2 J, Q2 r5 c+ V3 W# X! y7 q8 n
发表于 2016-2-20 15:19:34 | 显示全部楼层 来自: 中国四川绵阳
ryouss 发表于 2016-2-20 15:15
3 o3 s9 W6 T$ b5 c  D4 G參考幫助,在工具列作個宏的 "自訂按鈕"

6 E# N3 R- w- r0 B% j7 [感谢你的回复,我目前就是用的自定义按钮,我的意思是能否让文件保存后就自动生成名称和图号
发表于 2016-2-20 16:33:23 | 显示全部楼层 来自: 中国浙江嘉兴
eastking1111 发表于 2016-2-20 15:19. U3 p' \* D8 B# V3 r2 j+ K9 g& Q
感谢你的回复,我目前就是用的自定义按钮,我的意思是能否让文件保存后就自动生成名称和图号

+ Q) R) f+ f7 u; s9 E. R2 |8 m5 v應該可以,把條件及要求詳述,最好附個簡單文件說明一下
发表于 2016-2-20 16:50:28 | 显示全部楼层 来自: 中国四川绵阳
ryouss 发表于 2016-2-20 16:33: y! m6 ~/ v$ p! ?6 H9 |1 I( _  B
應該可以,把條件及要求詳述,最好附個簡單文件說明一下
, r) g* h8 Y( I2 \! [
我是这么个意思:
6 @$ s) R+ }- `  l: Z( Q& r 开始状态_proc.jpg
7 T  T- ^/ J5 s( o$ i首先随机创建个文件,模版显示为上图;
) _7 [4 T! h, b8 T$ H
/ U& B" _/ M8 s- D: r8 q 保存名称及代号后_proc.jpg
* M/ F. Z( A, d0 d4 T9 G2 R( X; S9 G  |( n$ H5 W3 q4 J" }+ m
按照XXXX_XXXX的模式保存文件名,但属性里面并无改变;3 c4 F9 e# ^+ T) z" `5 X; V
点击后_proc.jpg
/ S9 R; D. F# q6 t7 {) i) m, f% w6 C9 _3 m4 l
点击设定好的宏按钮后,图号及名称分离。
  ?, M9 i! ?, @, p  T这是一个图纸从创建到完成的流程,我的意思是,是否每次都需要点击下宏按钮?
) c& y" \) [6 \0 u" I, H  L- c3 ?能否怎么弄一下,只要按XXXX_XXXX的模式保存文件,属性就自动分离图号及名称?
9 H0 T$ C" u6 g. `/ g' g' N6 @' G
发表于 2016-2-20 17:28:57 | 显示全部楼层 来自: 中国浙江嘉兴
不經過"宏"作保存處理,想不出達到第3圖的自訂屬性要求.) W+ W& Y" A6 p2 @9 l7 F
发表于 2016-2-20 22:08:10 | 显示全部楼层 来自: 中国安徽蚌埠
eastking1111 发表于 2016-2-20 14:53
3 Y1 [/ b% N7 f9 S5 x0 `6 k9 w8 O请教下,这个宏能自动执行么?我每次都要制作完图纸后再按一次执行宏,感觉有点麻烦。

" l( E$ i( X% C* NSOLIDWORKS怎样将图档名“图号+名称”分离后自动链接到属性中  C. y4 V) i( `' i
http://www.3dportal.cn/discuz/fo ... amp;fromuid=1883407
2 o1 t! k2 u& K7 @/ ~9 I(出处: 三维网)" U) x1 C  j- Q! u2 ^+ @) M
18楼,我的回复' f6 C( V) K! u
发表于 2016-2-21 10:08:10 | 显示全部楼层 来自: 中国四川绵阳
jinqin11 发表于 2016-2-20 22:08" O; @5 P# E$ Q7 J# g' k
SOLIDWORKS怎样将图档名“图号+名称”分离后自动链接到属性中
0 u/ N7 E  Z0 D; p" qhttp://www.3dportal.cn/discuz/forum.php ...
" g& v8 Y" w* w1 y7 M! A
感谢你的回复,我没看懂,我再把你的代码研究研究。
发表于 2016-2-21 10:27:12 | 显示全部楼层 来自: 中国四川绵阳
jinqin11 发表于 2016-2-20 22:085 l' j" J8 q  q; Y' E
SOLIDWORKS怎样将图档名“图号+名称”分离后自动链接到属性中
0 q4 B% b. D$ y. b8 E" _0 Phttp://www.3dportal.cn/discuz/forum.php ...
6 B, K, y0 k: l- o1 d* `
XX.png * u; n4 Z% G$ ]9 \: K5 j, c
请教下我用2016的,为什么全局变量会有×?  ~. ~4 W" i2 W2 Q0 T
QQ截图20160221102458.png ! b& B" L* {4 ^4 k
还有就是代码改哪儿会让他从“_”开始分离,而不是从“.”分离?
8 f& K! k* v% s3 n
发表于 2016-2-21 22:13:40 | 显示全部楼层 来自: 中国安徽蚌埠
本帖最后由 jinqin11 于 2016-2-21 22:23 编辑 2 N0 ]/ X3 t5 W$ P- Y! Q8 Z6 ?
eastking1111 发表于 2016-2-21 10:27" M, W* p' G4 L5 H& t  n+ W
请教下我用2016的,为什么全局变量会有×?
6 p6 U, ?! a9 q# ~! P5 N' C# f
4 P& s- h0 D2 \4 n: Q& E' q还有就是代码改哪儿会让他从“_”开始分离,而不是从“. ...
. P6 g, N5 B! L( b9 p- ]
不用理会全局变量的错误。! i2 z3 H6 I/ R+ ?5 o
用28楼的代号,也是用记事本编辑,然后复制到属性栏$ \4 _/ q+ v; e& [% ]/ y' [
28楼代码中两个哭脸改成一个“代号”一个名称(要同属性栏的属性名一样)# q# E) b% C& ]/ c8 J
发表于 2016-2-22 11:28:00 | 显示全部楼层 来自: 中国四川绵阳
jinqin11 发表于 2016-2-21 22:138 u$ ^6 a( y! }! [2 z) W
不用理会全局变量的错误。3 r) L2 Q  I8 J4 `- m
用28楼的代号,也是用记事本编辑,然后复制到属性栏! j: j% e. t7 R* W. P; A
28楼代码中两个哭脸改成 ...
) p% z8 j' F% e0 X3 q' P+ ?
28楼的帖子一直都弄不成功,不知道是版本问题还是我没弄对,6 J! @6 N' |4 F
感谢你的回复。
发表于 2016-2-23 16:30:33 | 显示全部楼层 来自: 中国安徽蚌埠
eastking1111 发表于 2016-2-22 11:28& ]: I" L# ?/ L( G' K& q9 u
28楼的帖子一直都弄不成功,不知道是版本问题还是我没弄对,
0 t+ i! Z* H4 t! X. U) A感谢你的回复。
; \7 \3 Q, @) L# b# N9 }
28楼的代码是有问题,正确的是
% P" v' S) z  n1 R, f: \2 g& Z9 _; `. ?; V! K
14 ~& S: {2 R. p* e
dim str1
7 N& K) Z. N: |2 w" `1 V: W: Y. |dim str2
! T1 G2 U! f8 B/ R2 gdim str3
/ C9 j2 Q' o) g! k: ^* ~dim l3 u$ l  U+ X& X
str1=Part.GetTitle
" B9 w4 K. `( Z. D) {, gl=InStr(str1,"-")
7 C. y: m& B; q( R* m! e4 Zstr2=part.Extension.CustomPropertyManager("").Set("代号",Left(str1,l-1))
# g& l. b; e  u8 n. `! ustr3=part.Extension.CustomPropertyManager("").Set("名称",mid(str1,l+1,20))
! x" U- i4 ^! I' U
02233.png
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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