QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

楼主: qiminger
收起左侧

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

[复制链接]
发表于 2015-10-4 09:03:48 | 显示全部楼层 来自: 中国浙江嘉兴
需要关联什麼,請詳述!
: b3 A$ S: c( H6 ~: A0 n1 X6 I
发表于 2015-10-4 21:26:12 | 显示全部楼层 来自: 中国河南安阳
文件名:no name_prj。xxx
9 R$ i% Z+ @" ?. r1 I用方程式如何实现提取no到代号、提取name到名称、prj到类型呢?高人帮帮忙?! \* h0 Y! t( G- e0 o$ A+ t; F% `- p9 Q
谢谢!
发表于 2015-10-5 11:43:34 | 显示全部楼层 来自: 中国浙江嘉兴
huyaomeng 发表于 2015-10-4 21:26+ I3 i/ L9 c, X3 H
文件名:no name_prj。xxx
/ [% S# }8 K& A  n5 E用方程式如何实现提取no到代号、提取name到名称、prj到类型呢?高人帮帮忙?; T# o  L) R* ~0 T( E+ F
...
* X4 Q9 Q% \/ A! W. N
學習要活用,1 P9 l& B: y: t/ F

# P8 c) T0 h! N, D  ?解題在51#.
发表于 2015-12-7 20:30:26 | 显示全部楼层 来自: 中国湖北武汉
QQ图片20151207202936.png ( u) A. C9 u. q7 O! x( {
我的零件名是“T13-06-015_动板”为什么L2=0?0 \- {  f% H, ^, X# w
发表于 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; G4 B$ h5 O& d# ?
我的零件名是“T13-06-015_动板”为什么L2=0?
9 T% p4 S) i; A, V
我的零件名是“T13-06-015_动板”为什么L2=0?" R8 D. Q) O' b" {! t

+ }; H0 V, U0 F2 F- ^又是文件隱藏了擴展名,取消就好了!
发表于 2015-12-11 01:04:22 | 显示全部楼层 来自: 中国湖北武汉
ryouss 发表于 2015-12-8 00:29
& G8 w" r! v* T+ t; [7 y- I" y我的零件名是“T13-06-015_动板”为什么L2=0?- E. ?: z  X; [0 X2 V
& h0 l: O' {) m+ I  ~  }, e
又是文件隱藏了擴展名,取消就好了!
, }, J& t2 G5 d5 T
原来如此,多谢

点评

見83#  发表于 2015-12-11 08:37
发表于 2015-12-11 08:30:42 | 显示全部楼层 来自: 中国浙江嘉兴
本帖最后由 ryouss 于 2015-12-11 11:05 编辑 6 Q) G6 e) G' h

. o3 Y& L$ V+ V+ C) p! s9 V1 C其實既然知道在VBA編程裡,在偵錯中斷模式中,% D! n4 C9 l2 @
把鼠標放在變數  L2 可以得知當時之值,應該就會把鼠標放在變數  name_ 不就可以查知 name_ 當時的值了.(肯定是沒有 .SLDPRT 這7個字母)% h# @. M+ u* N# Q% T$ R

; U# J% M* K0 @+ b# C2 t/ E4 d! u, w! G6 W3 `
再給個概念,
* Y- ~/ N$ F- d1 [1 n# t, G# @5 ?% O  x/ _- O% e; R3 k, F
除了因執行錯誤而成偵錯中斷模式之外,為了找執行錯誤用 逐步執行 也是很好用的.  n/ H, H9 S, z) m6 b6 V2 H: A

1 ]+ @5 L& c. Z( e) r: y% k& m+ I或是在適當編程中插入  STOP 指令,如要查  name_ 在執行時之值,就在 name_ 之下插入 STOP ,
7 J; ]0 ^1 D3 T5 ]0 [
8 r2 N7 P* g: G- }; G% y( \$ J當宏執行到 STOP 就會暫停可以查 name_ 當時值,再按執行鍵就可以跳出 STOP 往下再執行.2 T. Q  c% ~: @& z; X, x- i
' *************************************************3 _8 z% L/ k" g2 E& e( ?4 \
'  macro recorded on 12/06/15 by lsc" B0 g6 R. i$ _7 A, j9 Y6 ~
' *************************************************
2 f  k8 }& ~: m* S+ f& zDim swApp As Object4 w8 v8 f* _* Z/ ~
Dim Part As Object9 p* p& j/ `0 o" R; \2 Q
Dim boolstatus As Boolean; W- J2 @: L9 Z, C* P5 C

% q4 ?0 z( l- ~4 k6 j3 }4 t+ l7 oSub main()- p; B' V0 P3 j- _( n8 L  ~3 @

- E7 |# R1 B! t$ z$ sSet swApp = Application.SldWorks
9 m, X& o$ b" ESet Part = swApp.ActiveDoc
. T% G- j4 x2 GDim myDimension As Object" d* r) {! T. u4 c! |/ w
Set myDimension_1 = Part.Parameter("D5@草圖1")
/ f1 S; j" r* r5 h4 r' D$ hSet myDimension_2 = Part.Parameter("D1@角度1")
) Z, |* p! u. Fpi = Atn(1) * 4
8 n# \4 c, g( q6 o4 ~For I = 45 To 225 Step 52 B$ ^/ c$ T6 v9 D
    A = I * pi / 1802 D6 j# F: u( m$ N. P+ E& x1 g
    A1 = A * 0.01  '弧長R=10mm
% q) u$ O! w+ \    A2 = A * 33 / 21 - 1.0840988 '角度
$ s+ Z3 \; g  V; ]) r/ c    myDimension_1.SystemValue = A1
. T7 ]( W4 M* ?    myDimension_2.SystemValue = A29 x4 ~$ m1 v7 B. H' q7 }+ B
    boolstatus = Part.EditRebuild3()
5 d/ w4 o5 l; I' O2 |# W6 K8 G- A    PauseTime = 0.01 ' 設定暫停時間0.3秒。# f! P& F7 R0 m5 B' c. ]
    Start = Timer    ' 設定開始暫停的時刻。! d2 q* I( Z' i8 S
        Do While Timer < Start + PauseTime$ `. M) b7 f$ T2 s
            DoEvents    ' 將程式執行權讓給其它程式。
7 i( g( e/ u2 q        Loop/ L. F! I  ?2 S& v1 T7 W6 t
Next* `  l* q- J6 T+ C$ A( Z  ^
Stop: n- f2 D2 p; R2 H' ]7 C' F  S
For J = 220 To 45 Step -5
( Q' h; N1 J5 m  m0 f" X    A = J * pi / 180
  h: y% Q- I3 e% x' `+ E" _    A1 = A * 0.01  '弧長R=10mm' \1 I& r- ^" r2 d, U' u7 [
    A2 = A * 33 / 21 - 1.0840988 '角度
  r9 }  }7 Q. L1 S! V) Z    myDimension_1.SystemValue = A1+ ?* M  w9 |# {  B
    myDimension_2.SystemValue = A2
- U+ N, t7 h% m( D7 W    boolstatus = Part.EditRebuild3()
; G) M1 F9 I+ p    PauseTime = 0.01 ' 設定暫停時間0.3秒。
2 l5 A7 Z9 `7 N. K( H* v    Start = Timer    ' 設定開始暫停的時刻。
* M: e0 a5 N# V/ ~    Do While Timer < Start + PauseTime8 d3 a8 y) |) C8 }. H
        DoEvents    ' 將程式執行權讓給其它程式。
9 W3 w' F9 S$ o, p' u$ l# v! p    Loop
1 R6 \7 \; D; h: c1 DNext
( z- X3 ~5 n2 NMsgBox "Run End"& @( N! W4 T, \& M/ q  @6 h

. E$ J/ _- h- X+ ^$ NEnd Sub+ S$ L) |0 Q% p) t& M! S5 H
! i& V: s2 {9 g' J0 q, t
发表于 2016-1-29 10:45:08 | 显示全部楼层 来自: 中国北京
beingsolver 发表于 2014-10-27 17:07
; ~6 ^# n5 z7 [" Y, s这些天一直在找这个图号文件名的分离功能,终于成功了!

7 c- f6 O9 A5 D你好你能把你的那个文件发给我试一下可以吗,我的没用成功谢谢你啦。
发表于 2016-2-13 22:39:58 | 显示全部楼层 来自: 中国河南安阳
本帖最后由 huyaomeng 于 2016-2-13 22:43 编辑
/ y! t  i, G% k6 I7 e% |# {0 c  Z* Y! w8 \" _4 h
文件名:no name_prj.xxx
3 z9 d: \. x4 S用方程式如何实现提取no到代号、提取name到名称、prj到类型(项目)呢?请高人帮忙?其中,xxx7 @2 {  s7 O( b- v
是扩展名。"Dummy1"=part.Extension.CustomPropertyManager("").Set("代号",Left(part.GetTitle,InStr(part.GetTitle," ")))( Y! A# M0 n/ u6 f& B$ p3 t% R: u
"Dummy2"=part.Extension.CustomPropertyManager("").Set("名称",Mid(part.GetTitle,InStr(part.GetTitle," ")+1,(InStr(InStr(part.GetTitle," ")+1,part.GetTitle,"_")-InStr(part.GetTitle," ")-1)))
3 |* T" n# A$ w"Dummy3"=part.Extension.CustomPropertyManager("").Set("项目",Mid(part.GetTitle,InStr(part.GetTitle,"_")+1,Len(part.GetTitle)-InStr(Part.GetTitle,"_")-7))$ @: k9 h9 K0 H8 s( }/ N: r8 q1 s) t9 ~

- h% d* ~& ^) @, T, A这是三个方程,但是有时候不管用。请前辈们看看!另外,能通过方程读取文件路径吗?怎么编写?谢谢!
8 g7 H) v- P" [% W9 N1 [, s
发表于 2016-2-13 22:47:22 | 显示全部楼层 来自: 中国河南安阳
ryouss 发表于 2015-10-5 11:43
" |7 j, S# K: {+ k% ~學習要活用,
6 u) M) v# T& R- g  ?7 F2 I7 T  x; {: s6 {! g
解題在51#.

! H4 l9 e; s" j这个我知道了。我的问题是想在51#的基础上再多提取些信息。我本意是想通过方程式提取文件所在文件夹名称的。
发表于 2016-2-17 15:55:30 | 显示全部楼层 来自: 中国安徽蚌埠
ryouss 发表于 2013-12-12 20:50, c: q4 n" O, X
如 300_222_33_固定销压板,假設 300_222_33_ 之位數不變,只有第三個" _ "之後的位數會變動的話,& }8 M# Q8 B" ^6 B- c
公式如 ...
" \4 o+ o% S5 ^# r: k4 t- s2 Q
嵌入宏的界面怎么进去,前面几楼都是一个属性,
) u% w' q5 ]( J6 s3 l3 t我要再加个属性。: g$ I2 j; X, w- n# X& m9 e4 L
一个代号
7 X( Y) T" o" r0 V一个名称
发表于 2016-2-17 16:15:40 | 显示全部楼层 来自: 中国安徽蚌埠
我知道了,可以在TXT文件中修改,然后粘贴进来。
- [# L  K: p3 M. k& d* O/ {( W2 k4 P: u6 `; T3 t$ m! p
15 w5 w  w: f$ b. _3 V  Q" c
dim str1& `" \  e% D% B# t6 A! I$ n5 X
dim str2# f8 x. U2 \! L2 U9 f& B
str1=part.Extension.CustomPropertyManager("").Set("名称",mid(part.GetTitle,9,20))
& `; J9 |" i6 H" T& E6 k  I6 c0 Astr2=part.Extension.CustomPropertyManager("").Set("代号",Left(part.GetTitle,8))4 Y% c, X6 I3 d. u& k0 ?
qianh.png
发表于 2016-2-20 14:53:26 | 显示全部楼层 来自: 中国四川绵阳
ryouss 发表于 2013-12-17 23:47
7 [9 ]0 \, _0 H. L2 V試試如下:win7 64位元# i: x# G) T4 p1 Z. B" N
編碼原則為   代號_名稱.solidworks副檔名(如 123456_軸承.SLDPRT)- W8 w* y$ R' U1 N+ z+ C
功能:應用宏 ...
* A/ H) m5 ]/ H) ^7 s4 a+ U
请教下,这个宏能自动执行么?我每次都要制作完图纸后再按一次执行宏,感觉有点麻烦。
发表于 2016-2-20 15:15:09 | 显示全部楼层 来自: 中国浙江嘉兴
eastking1111 发表于 2016-2-20 14:53
8 D* z2 ]! k8 R* m- r# q7 `* t) S- h请教下,这个宏能自动执行么?我每次都要制作完图纸后再按一次执行宏,感觉有点麻烦。

) C/ I6 e$ d4 n* D- n7 Q參考幫助,在工具列作個宏的 "自訂按鈕"
7 p5 u  H) E; |3 v7 n/ M 0220-1.png
/ V* u2 B, C$ }4 H1 k% d
* X& C, g: {, b
发表于 2016-2-20 15:19:34 | 显示全部楼层 来自: 中国四川绵阳
ryouss 发表于 2016-2-20 15:15% ]% V% ~2 g5 s; {9 f5 B; E
參考幫助,在工具列作個宏的 "自訂按鈕"
2 ]! V" q! l# N+ G( P% }
感谢你的回复,我目前就是用的自定义按钮,我的意思是能否让文件保存后就自动生成名称和图号
发表于 2016-2-20 16:33:23 | 显示全部楼层 来自: 中国浙江嘉兴
eastking1111 发表于 2016-2-20 15:195 A! {8 P6 o  R: A# |9 m
感谢你的回复,我目前就是用的自定义按钮,我的意思是能否让文件保存后就自动生成名称和图号

$ W* u; ?* W  R, B& ~5 Y) Z* j應該可以,把條件及要求詳述,最好附個簡單文件說明一下
发表于 2016-2-20 16:50:28 | 显示全部楼层 来自: 中国四川绵阳
ryouss 发表于 2016-2-20 16:33) B7 }3 p% e! ~
應該可以,把條件及要求詳述,最好附個簡單文件說明一下
5 c! H6 C7 c! w, g4 C1 E
我是这么个意思:
7 @( i6 M7 e5 G% k1 O* `0 Q 开始状态_proc.jpg
* `+ T& h( r7 u: ]首先随机创建个文件,模版显示为上图;8 y. x2 L8 |3 \$ b2 |
! G3 H' e: K- H- x0 T9 r2 H
保存名称及代号后_proc.jpg
* l- f5 M  C4 M' v( R* ?- w6 B
9 R/ f+ {+ c6 t  `  N! M按照XXXX_XXXX的模式保存文件名,但属性里面并无改变;% w* b% {0 [0 m+ a
点击后_proc.jpg , |  {* {. ]3 |& D) m- ]: |% S

, w6 I+ ~* U. b& L5 Z% K点击设定好的宏按钮后,图号及名称分离。
8 W6 k" I0 h. K) k$ H' U这是一个图纸从创建到完成的流程,我的意思是,是否每次都需要点击下宏按钮?! }7 c$ |+ O5 _3 f. N
能否怎么弄一下,只要按XXXX_XXXX的模式保存文件,属性就自动分离图号及名称?: p( Q; ?1 v0 F$ M$ `- t/ c$ M
发表于 2016-2-20 17:28:57 | 显示全部楼层 来自: 中国浙江嘉兴
不經過"宏"作保存處理,想不出達到第3圖的自訂屬性要求.6 B, \6 l6 x3 H: W. o( u+ M5 k
发表于 2016-2-20 22:08:10 | 显示全部楼层 来自: 中国安徽蚌埠
eastking1111 发表于 2016-2-20 14:53. ?) Z# }. t5 P* m/ X3 e0 Z! i: Y
请教下,这个宏能自动执行么?我每次都要制作完图纸后再按一次执行宏,感觉有点麻烦。

8 \: q  W4 D0 p  FSOLIDWORKS怎样将图档名“图号+名称”分离后自动链接到属性中4 l, w) N  n7 H
http://www.3dportal.cn/discuz/fo ... amp;fromuid=18834073 u% f. f6 S8 l0 c
(出处: 三维网); b2 m& }+ y$ O& e  }8 W/ N
18楼,我的回复
/ q$ K- L: h" F. R! h6 \
发表于 2016-2-21 10:08:10 | 显示全部楼层 来自: 中国四川绵阳
jinqin11 发表于 2016-2-20 22:08
4 n3 W6 d+ p7 r% y- U3 n. VSOLIDWORKS怎样将图档名“图号+名称”分离后自动链接到属性中
8 g; u+ A. a9 \* i9 ]http://www.3dportal.cn/discuz/forum.php ...
/ d1 s' K! n( w' j
感谢你的回复,我没看懂,我再把你的代码研究研究。
发表于 2016-2-21 10:27:12 | 显示全部楼层 来自: 中国四川绵阳
jinqin11 发表于 2016-2-20 22:08  P. s& e1 v% ~, u' |* }( u
SOLIDWORKS怎样将图档名“图号+名称”分离后自动链接到属性中
( S* |7 s0 N8 v% G1 Dhttp://www.3dportal.cn/discuz/forum.php ...
* D3 `, c, q5 x: P; ^7 A0 E1 ~4 q
XX.png
$ _5 W+ a: M. L# A; b% _" m请教下我用2016的,为什么全局变量会有×?1 k: `" j! [2 G
QQ截图20160221102458.png ( d5 \$ u0 j/ }! P( p7 r
还有就是代码改哪儿会让他从“_”开始分离,而不是从“.”分离?
) i  K! S9 o: ^1 ~$ N
发表于 2016-2-21 22:13:40 | 显示全部楼层 来自: 中国安徽蚌埠
本帖最后由 jinqin11 于 2016-2-21 22:23 编辑 . U: Q, Q5 W- U6 v* h  Z5 x
eastking1111 发表于 2016-2-21 10:27, ^) f3 k5 Y  U
请教下我用2016的,为什么全局变量会有×?/ Z% g8 T& f* e, L: x
& L+ p( f: E2 Y3 W+ ?$ n
还有就是代码改哪儿会让他从“_”开始分离,而不是从“. ...

1 ~8 P) u+ N) }* ?2 s不用理会全局变量的错误。: y2 O' U" Y! i3 x+ M( C
用28楼的代号,也是用记事本编辑,然后复制到属性栏
: I" S) y% E; b2 o6 K28楼代码中两个哭脸改成一个“代号”一个名称(要同属性栏的属性名一样)3 z$ H7 a2 m) |/ P
发表于 2016-2-22 11:28:00 | 显示全部楼层 来自: 中国四川绵阳
jinqin11 发表于 2016-2-21 22:13% i, C( w+ ~+ a3 a1 N
不用理会全局变量的错误。
% X/ D: B; [) T5 M# g' _$ s/ r7 q6 y用28楼的代号,也是用记事本编辑,然后复制到属性栏8 G3 J+ q/ s; q" X3 t
28楼代码中两个哭脸改成 ...

$ w, ~9 Y! j  l/ ]2 P9 m$ I' y28楼的帖子一直都弄不成功,不知道是版本问题还是我没弄对,
) W  f" {  {1 p. q3 k, ^% [感谢你的回复。
发表于 2016-2-23 16:30:33 | 显示全部楼层 来自: 中国安徽蚌埠
eastking1111 发表于 2016-2-22 11:28
( i, Z1 o+ i, x4 J8 l28楼的帖子一直都弄不成功,不知道是版本问题还是我没弄对,$ x% P, A4 ^, T; Y- j3 E* E
感谢你的回复。

# E- h: C! [- @% N4 C" @( r28楼的代码是有问题,正确的是
# ~2 y& f9 `, |. _; q
) K/ d, Y9 }) h! r1, [/ C! ~8 }( Y3 i
dim str1; z7 ?7 s* B$ i7 G; ?. C- ]1 b4 H) i. i( X
dim str22 T& U& v" v$ q: b; x; R
dim str3
$ {! f% Z, W1 P+ `* }4 g& ]dim l
5 u# |6 U. ~, T! U$ u) Ustr1=Part.GetTitle
7 ]- f. E& y4 f3 l1 m( {9 ~l=InStr(str1,"-")
3 Z% k" z, [( l7 I) W& y  s( l1 `: Y. istr2=part.Extension.CustomPropertyManager("").Set("代号",Left(str1,l-1))
5 v2 t) V, O/ n8 r7 L- R  ?str3=part.Extension.CustomPropertyManager("").Set("名称",mid(str1,l+1,20))
4 E" g, R4 C% S/ ~
02233.png
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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