QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 4404|回复: 14
收起左侧

[求助] 向高人请教用宏提取文件名中部分内容做成自定义属性的用法中的疑问

[复制链接]
发表于 2014-2-10 21:22:09 | 显示全部楼层 |阅读模式 来自: 中国广东深圳

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
http://www.3dportal.cn/discuz/forum.php?mod=viewthread&tid=1250784&highlight=%CC%E1%C8%A1这个帖子中复制的提取SW文件名中的部分内容自动生成自定义属性研究宏的用法。" e/ w. _) Q8 B6 z
在实际使用中,对于零件,用原帖里的代码都能很好的达到目的。6 o: ~2 F# f9 i/ h

9 Y! B( A. z; p$ w; o7 H9 F! k+ M但现在的问题是,在装配体文件中,这些代码就不起作用,不能实现提取文件名中的部分内容通过代码与方程式配合来自动生成自定义属性。
; s' q8 {6 X6 H/ h9 r: J  Z我使用的是以下两个代码:" p5 N% l: R1 ]% W/ O
: v6 h% v0 I) T2 g1 ~  Q4 M
第一个:/ R+ F, |6 w$ p4 G2 }# s& B/ \0 _4 O
下面这段代码,可以取第一个下划线前面的字符。; Y1 r  C/ a( j% X# A
- i; E5 t3 Z( n$ {  F
12 J' O& M2 H5 w7 x6 B
dim yfd# N: ]. K* a" E' h+ n4 ^- `" l' R9 a
yfd=part.Extension.CustomPropertyManager("").Set("partno",Left(part.GetTitle,InStr(1,part.GetTitle,"_")-1))* v# k0 G& d: z! W

. E- W& W; W) e; U4 K4 P9 _3 {第二个:& j5 I3 \3 a, [
19 o* b2 |& s8 w9 D7 u
: r/ Q5 a# k9 u
Dim Txt
2 p% Y4 e% X0 o  |1 G( y: l6 E  S$ |Txt = Part.GetPathName. P( m  s: ?( f7 v1 ?9 n
Txt = Mid(Txt, InStrRev(Txt, "_", -1) + 1)2 T( T/ j& s# E1 L" Y  W, Q  g. H
Txt = Left(Txt, Len(Txt) - 7)( q# T1 E2 `  T  O6 h6 B+ j3 p. A# ^" Q  i" R+ g
Part.Extension.CustomPropertyManager("").Set "partno", Txt. b8 q: }* M  {
1 n% i+ U  e# P0 g5 P  L# W/ |3 s
在以上两个代码中的"partno"部分我已经改成了自己定义的文字,而且在零件文件中已经验证可行。但再把这两行代码复制到装配体文件中,却无论如何都不能提取文件名到自定义属性中了。* z+ Q' k+ m& W
现在很疑惑,不知道在装配体中为何不能这样用代码达到和零件中相同的效果呢?7 w+ [5 k4 H8 H* e5 S( y" V3 Y5 |
如果要在装配体中实现这同样的目的,是不是需要对代码做些什么修改?我对代码可谓一窍不通,恳请各位过路高人留步指点一二,不甚感激。
发表于 2014-2-11 09:23:49 | 显示全部楼层 来自: 中国辽宁抚顺
算是有缘,又被我回了这个帖子。
: s0 p* o" S% ?9 u. d! d6 u. j% }我研究后是下面这样的,装配体的表达式是assembly   下面代码我的2011版测试没问题,自己下面看一下有什么不同吧。/ E6 f6 D2 }' N1 _6 i% L! q7 i' H
1
9 J+ J3 L. h8 Z% ddim zfd
( z0 @- Q# P4 `# Yzfd=assembly.Extension.CustomPropertyManager("").Set("partno",Left(assembly.GetTitle,InStr(1,assembly.GetTitle,".SLDASM")-1))
3 e6 _1 I5 A+ e+ C; @4 Q
/ }& k8 Q8 Z/ @2 s  E# P% q8 s8 D; Q$ Q+ W" y+ z. l$ S
1
; P2 D  I+ @4 Y8 c( KDim Txt0 Z' E' P* X( o: \9 K
Txt = assembly.GetPathName  }) g% ]3 J& t# r6 y# o. l! v
Txt = Mid(Txt, InStrRev(Txt, " ", -1) + 1)
' E. s: J1 K  xTxt = Left(Txt, Len(Txt)-7)( k0 x0 F' y, y/ v
assembly.Extension.CustomPropertyManager("").Set "Description", Txt
发表于 2014-2-11 11:01:56 | 显示全部楼层 来自: 中国香港
qiminger 发表于 2014-2-11 09:23 static/image/common/back.gif6 }% _# t( ^. I; O/ B) w6 l
算是有缘,又被我回了这个帖子。
( R- A; P7 x2 G4 s. v我研究后是下面这样的,装配体的表达式是assembly   下面代码我的2011版测 ...

+ M' W; I; f: ]% O. u7 n給qiminger兄一個贊!
 楼主| 发表于 2014-2-11 20:14:45 | 显示全部楼层 来自: 中国广东深圳
qiminger 发表于 2014-2-11 09:23 static/image/common/back.gif/ z% Y: T( P( r& l1 ^; K
算是有缘,又被我回了这个帖子。
6 |3 m6 g! v  S: o# d; M我研究后是下面这样的,装配体的表达式是assembly   下面代码我的2011版测 ...
5 G: {& ~" }% L8 X4 [; r1 r/ X
十分感谢,万分感谢。昨天我试这个东西试了半天哎。我对代码这些东西基本上一无所知,谢谢朋友你了。
 楼主| 发表于 2014-2-11 20:15:34 | 显示全部楼层 来自: 中国广东深圳
qiminger 发表于 2014-2-11 09:23 static/image/common/back.gif
: v  i4 t/ I  z# Z算是有缘,又被我回了这个帖子。& D2 J0 `! T- S! O
我研究后是下面这样的,装配体的表达式是assembly   下面代码我的2011版测 ...
" Y2 j: l3 k9 E5 f5 d
其实我也想到了是零件和装配体的表达式不一样,但我不知道应该把原代码里的“part"改成什么内容,谢谢。
发表于 2014-2-12 18:27:39 | 显示全部楼层 来自: 中国重庆
这玩意能不能集成在零件和装配体的模板里啊,要能。
/ ?) ?0 a7 e# u  ~/ m; E) i0 b那就真的是太方便了,不用都对不起自己了
 楼主| 发表于 2014-2-12 21:01:55 | 显示全部楼层 来自: 中国广东深圳
xfange 发表于 2014-2-12 18:27 static/image/common/back.gif  Y2 `+ @- E9 U8 l! g4 o' y
这玩意能不能集成在零件和装配体的模板里啊,要能。" j3 X) _  ]! [! y
那就真的是太方便了,不用都对不起自己了

. y1 Y4 I( ^3 _  ?; e$ t4 {你把它预输入到装配体或者零件文件里,然后另存为模板不就集成了吗?我就另存为了模板了。
发表于 2014-2-13 09:07:39 | 显示全部楼层 来自: 中国辽宁抚顺
Francis 发表于 2014-2-11 11:01 static/image/common/back.gif
! d3 v8 f! s, A給qiminger兄一個贊!
% f9 T+ \- B1 I2 R- n: ?5 o
谢谢闷人兄弟的赞,要和你学习的很多很多。其实我对宏也是入门级都不到,e文不好,学二次开发太难,工作用的不多,仅仅是兴趣学习。
发表于 2014-2-13 09:09:37 | 显示全部楼层 来自: 中国辽宁抚顺
NC@jiang@nan 发表于 2014-2-11 20:14 static/image/common/back.gif2 v2 J. f0 l5 ^3 w/ w, U+ T9 \5 h
十分感谢,万分感谢。昨天我试这个东西试了半天哎。我对代码这些东西基本上一无所知,谢谢朋友你了。

7 l1 k$ I) y! h4 a, ^, D不用客气,互相学习,我也是英文不好,宏方面入门级还不到,以后一起学习。
 楼主| 发表于 2014-2-13 20:15:51 | 显示全部楼层 来自: 中国广东深圳
qiminger 发表于 2014-2-13 09:09 static/image/common/back.gif1 t. ?, T% E* ]. c; X7 R$ F
不用客气,互相学习,我也是英文不好,宏方面入门级还不到,以后一起学习。
* o, @4 r) L% A
呵呵,还是需要向你学习。那个装配体的自动提取文件,按你说的修改后已经可以用了。谢了。
发表于 2014-2-19 22:48:49 | 显示全部楼层 来自: 中国重庆
NC@jiang@nan 发表于 2014-2-12 21:01 static/image/common/back.gif
, T1 p7 o1 D0 z7 e+ [" y" V你把它预输入到装配体或者零件文件里,然后另存为模板不就集成了吗?我就另存为了模板了。
9 ]" ~4 R7 O6 |' b$ C
不用运行宏就能改么?能不能把模版分享下
 楼主| 发表于 2014-2-20 20:00:32 | 显示全部楼层 来自: 中国广东深圳
xfange 发表于 2014-2-19 22:48 static/image/common/back.gif  k- _3 Q2 S3 m% }) T7 ^
不用运行宏就能改么?能不能把模版分享下

# {5 g4 p! u/ I. x( S这几个代码不是做成宏文件的,是预输入文件的自定义属性里用的。. ?8 x) ^, c! U3 \
具体的你看我给出的那个原文地址吧
发表于 2015-5-11 11:15:24 | 显示全部楼层 来自: 中国辽宁丹东
yfd=part.Extension.CustomPropertyManager("").Set("partno",Left(part.GetTitle,InStr(1,part.GetTitle,"_")-1))
) |3 S9 a1 r" _) P) s$ j7 b: x  T5 e- ^用这个公式返回的值是-1为什么呢?
发表于 2015-5-11 11:15:57 | 显示全部楼层 来自: 中国辽宁丹东
yfd=part.Extension.CustomPropertyManager("").Set("partno",Left(part.GetTitle,InStr(1,part.GetTitle,"_")-1)): Z0 }) v* Q- }' Y
用这个公式返回的值是-1为什么呢?
 楼主| 发表于 2015-5-11 20:47:26 | 显示全部楼层 来自: 中国广东深圳
蓝血刺猬 发表于 2015-5-11 11:15 static/image/common/back.gif( Y: I5 H8 m2 F7 e" h( U
yfd=part.Extension.CustomPropertyManager("").Set("partno",Left(part.GetTitle,InStr(1,part.GetTitle," ...

/ Y1 s4 N4 J" G% B) |) u# R( a# }你用的哪个版本的SW?好像SW2013后输入这些代码已经失效了。
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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