QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 4568|回复: 27
收起左侧

[求助] 导入同一文件夹下多个txt文件的宏问题

[复制链接]
发表于 2014-3-10 16:12:35 | 显示全部楼层 |阅读模式 来自: 中国吉林长春

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

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

x
本帖最后由 bj-alex 于 2014-3-10 22:12 编辑
& Y5 B" R. x; D& P* g. J. Z/ g5 x( z( x
我有大量的曲线坐标以文本方式保存,每条曲线一个文本文件,现需要将曲线导入。参考坛子里各位大神的方法,写了个自动输入的宏。调试也没发现错误,但是就是曲线显示不了?还望各位高手指点。
+ ]; Q/ @4 `" H6 C. SSub main()
# u- z. Q8 A1 A, Q+ g0 M Dim swApp As Object1 |1 R7 t3 }6 D& D( X4 _
Dim Part As Object3 g  _7 V4 I6 h! A  U3 H2 Q/ L6 E7 H
Dim boolstatus As Boolean
* N2 }, w. z9 W- {6 H. v Dim longstatus As Long, longwarnings As Long8 r( D9 m% k( d) m

0 O  ?  j9 V: M& x# G% G, g: S% \$ r; G% I/ Y
Set swApp =  Application.SldWorks
3 C, ^8 W7 @8 o5 R3 b% S- ]; d& A1 `6 n3 b4 {# u' X# A7 ~6 B: C
Set Part = swApp.ActiveDoc" h& {: N. g2 @0 O5 R1 V- b9 |
1 H6 E) `" @* R6 ~  J( u- B7 O$ b
Dim f As String, folder As String# y) q) P, o: ?% ?* v
folder = "E:\F\CU\Feb2014\5mm\01\"
. B2 a; O3 z; o: \ f = Dir(folder & "*.txt")
$ x- A  H* X2 p2 u While f > ""
3 g+ D+ b. {" @- N) L Dim x, y, z As Double 9 H/ V# f4 _7 o) d
Dim n As Integer     o8 N& s' C$ }, A, A, P. ]. W7 F
Part.InsertCurveFileBegin5 w0 D0 D9 v( x& b; D5 `1 V
Open folder & f For Input As #19 M- [- ]4 S% I1 f' A8 g& P
     n = 0
* ?! I4 W) S& v     Do While Not EOF(1)
+ P* n2 A; h2 F% l0 ^/ L6 H          Input #1, x
; d0 d( F! J% w          If EOF(1) Then
( L" y% J. [+ B, S! f3 V          Exit Sub
8 @' a3 w! B7 }! [          End If
: H2 }1 b2 ~0 {% R3 L* {- d          Input #1, y
5 v4 i0 p9 Q& ~; a9 U% m          If EOF(1) Then* K- k" C# w- X9 p
          Exit Sub
" R8 ~" J: Y' \* a4 S) h1 T          End If- K( d: }- \# K/ T: k( h+ k( u" |4 i
          Input #1, z0 z9 e4 i6 \, n
          n = n + 15 g6 |2 E: z1 e/ g/ |- L
        Part.InsertCurveFilePoint x, y, z
! L6 j, {. {3 \; ^9 Y     Loop
: }8 k! G" c/ d0 H: C4 ?    Part.InsertCurveFileEnd
( r, k/ Q- B; T" b  w: z5 ]! P Close #1   
* f4 e$ a. _+ x6 h5 b) |: E: U! `    f = Dir* O  K! i- }5 o& s/ H
Wend
$ @* o! _- A. z6 k2 C( bEnd Sub
 楼主| 发表于 2014-3-10 22:10:24 | 显示全部楼层 来自: 中国吉林长春
还请高手指点啊,这个问题困扰我好久了
发表于 2014-3-11 09:37:28 | 显示全部楼层 来自: 中国浙江嘉兴
bj-alex 发表于 2014-3-10 22:10 static/image/common/back.gif
0 U  G( T( V  k8 ~. i! O$ H' D还请高手指点啊,这个问题困扰我好久了

" |- D* h4 t: y/ n7 V1. TXT檔用連續不跳號之數字取名稱如 1.txt,2.txt ....,就可以配合  For Next 之 i 值,抓取全部的 TXT 檔.
7 y$ O# H# q6 \" r- C: c2. 把 全部的 TXT 檔 置放在須要的文件路徑下.
' j& M/ ]4 f) }3. 先開SW的零件檔,執行如下宏,會在零件檔新插入3D草圖作出全部的 TXT 放樣曲線圖.% r8 H2 i8 G7 I; O
4. 附檔是兩個測試檔 1.txt,2.txt 可以試看.% k5 I! z: t( z" N5 x" ?
  ?  n# q- v* K; U( V* H6 ]
測試圖
$ g- @7 ^( M, {+ w/ Y' v capture-29.gif
, N/ g1 W" ~( V# F& G+ {Sub main()
' s$ R/ ~( d0 T7 e' `Dim swApp As Object5 i1 ^: g$ v+ {2 c& X
Dim Part As Object
  ~( N6 R2 \  V2 WDim boolstatus As Boolean) \# `. h4 W, u+ Y- S  J6 f+ E, ]& \& C
Dim longstatus As Long, longwarnings As Long1 M' ^2 m2 O& R6 ]
Dim SketchMgr                 As Object4 c8 H; r, F- C0 P3 s
Dim pointArray As Variant0 w, {7 Z4 u' {$ {+ {' A/ Y
Dim points() As Double
; C0 G/ r2 H1 pOn Error Resume Next
- W4 h7 d7 s5 G3 y# r3 NSet swApp = Application.SldWorks
& j5 S* ^- j' f) U' ySet Part = swApp.ActiveDoc# f% p$ i1 ^8 I+ W0 l, M
For i = 1 To 2" z5 K- K) g% ^+ U& U7 M
    Dim f As String, folder As String
3 R8 {- o3 s( Z# Y! N2 G    folder = "E:\F\CU\Feb2014\5mm\01\"
" L) P& n; U0 x2 f. d9 e4 t    f = Dir(folder & i & "*.txt")1 ^% m* N0 ~! Z' G
    While f > ""9 a8 ?: F; n  b
    Dim x, y, z As Double
* m% o  K1 ]  f    Dim s
5 i& Q" P/ J8 y    Dim n As Integer; F9 C# r# C/ b1 D4 ~6 b
    Open folder & f For Input As #1
) [  I( h. `' B$ x$ P8 }; F$ Y    n = 0
6 c" y. Z1 V; O( n2 K+ c  p1 C    Do While Not EOF(1)
$ o& D1 Y1 b5 _& o8 q5 {1 V# Y( Z         Line Input #1, s0 [1 W' G% ~5 L8 t6 E; Q
         n = n + 1
7 D5 T, h8 Y7 o$ V4 \    Loop5 ]# r  T2 a, X* l3 ]" U
    Close #1
6 w/ }0 X8 W: V7 h2 D2 Q3 d    Open folder & f For Input As #1$ }8 ^1 H* N. T% S1 r% k1 ~
    Set SketchMgr = Part.SketchManager* n8 |0 s4 Y4 N+ {* I
    SketchMgr.Insert3DSketch True# k4 b$ z& F8 U. a2 x2 R
    ReDim points(1 To n * 3) As Double) Q- Q8 a$ O( K* X- `! T1 H" z
    n = 0
* `9 I7 A. o, M: }5 u! P    Do While Not EOF(1)
' L5 c; h( J0 M# G         Input #1, x
, r$ T3 Q! u; F: G3 S. _; J9 N         points(n + 1) = x / 1000: g8 F$ n% R! J" [
         If EOF(1) Then
8 R: a  _+ H* g2 Y% J0 ?  w         Exit Sub1 K- i1 k0 |' g5 W( o- ]' X
         End If9 K- p0 P* ^1 L' c
         Input #1, y
% O- m& g- R! g         points(n + 2) = y / 1000& @% \" S! P8 [. ?% @" u# E
         If EOF(1) Then
. Q$ w8 s, {. f         Exit Sub' k3 A  L+ C  T7 c+ ]
         End If5 O0 e& D# @: V/ o( f
         Input #1, z& V! T) v) b& R. _$ O. R% B6 T
         points(n + 3) = z / 1000! a1 o, `1 y: O; k. M' T# `' M
         n = n + 38 r5 B" c& d3 O" G
    Loop8 W5 [: v' Y# [2 E
    Close #1
. ]  i* r# w& h* ]    f = Dir8 U# V; ?4 e5 K3 X% l/ f
    Wend
8 y0 @& D8 V# L9 {2 }0 t  X, q/ B& j    pointArray = points
. _: D2 j) I* q  e7 u2 p8 E. O    Set skSegment = Part.SketchManager.CreateSpline((pointArray))9 b1 v& H8 X+ r! i! l) c
    boolstatus = Part.EditRebuild3()+ G# r; P# ^* i
Next& e* Z+ N. ?  N  j! A' {; E& T$ X0 s; L
End Sub( T/ {& P- G, Q3 m* {

' m1 q3 L6 a' m macro_txt.zip (17.57 KB, 下载次数: 33)

评分

参与人数 1三维币 +3 收起 理由
阿帕奇 + 3 3

查看全部评分

 楼主| 发表于 2014-3-11 09:57:07 | 显示全部楼层 来自: 中国吉林长春
非常感谢!! 如果txt文件太多,比如1000个,会不会造成死机?而且每个文件大小不同,在输入大文件时,所需的时间会久一点,所以,在每次循环之间需要延时函数不?
发表于 2014-3-11 10:02:05 | 显示全部楼层 来自: 中国浙江嘉兴
本帖最后由 ryouss 于 2014-3-11 10:06 编辑
: x) _! \: T0 J. w" M
- Y  m  V  M+ a' R' `沒試不知道2 ]# p) R0 q3 P% y; L* V
試看再說了,有問題再讨论.
2 x( k9 J; u5 H% k$ g若有跳號要繼續執行就在  ( I7 ~7 x, Y/ ~% s; S
While f > "" 之上,插入 If f = "" Then GoTo aa3 ?) }7 w- C; K( K
boolstatus = Part.EditRebuild3() 之上,插入 aa:
0 C( `+ w( g1 l8 T3 Q1 E
+ T; U2 G0 z; T: `$ G! w+ T  o8 r0 `9 y; [) V2 U  b( m% G/ b

评分

参与人数 1三维币 +3 收起 理由
阿帕奇 + 3

查看全部评分

 楼主| 发表于 2014-3-11 10:35:03 | 显示全部楼层 来自: 中国吉林长春
http://C:\\Users\\Alex Wang\\Desktop\\011 D$ \. d% m9 m& @  A" `
程序执行之后,显示的有草图,有3D草图,检查数据也没问题。
 楼主| 发表于 2014-3-11 10:36:34 | 显示全部楼层 来自: 中国吉林长春
贴图失败
发表于 2014-3-11 10:43:23 | 显示全部楼层 来自: 中国浙江嘉兴
本帖最后由 ryouss 于 2014-3-11 10:47 编辑
, u$ b6 l& K7 h4 X
bj-alex 发表于 2014-3-11 10:35 static/image/common/back.gif* a, o* J" i, F! S8 k* F
程序执行之后,显示的有草图,有3D草图,检查数据也没问题。
6 j! o! L& g2 r- U  r) @, g& \
显示的有草图,是前3d草圖作完沒跳出3d草圖的編輯狀態,就繼續作第2個文件.
  r' C3 D: V1 R& y' P6 f9 d正常是作完3d草圖用  boolstatus = Part.EditRebuild3() 重新計算 跳出3d草圖的編輯狀態.
* U7 w& F  u) n是用3#附檔文件測試的嗎
& G; n+ A# q) d' ^  ]5 C3 H, p, Z5 [/ |" K$ x5 x! k& w* D, W

评分

参与人数 1三维币 +3 收起 理由
阿帕奇 + 3

查看全部评分

 楼主| 发表于 2014-3-11 10:50:50 | 显示全部楼层 来自: 中国吉林长春
是用3#附件测试的。这么说,还是两次循环之间时间间隔太短。我可以把比一般文件大的多的挑出来,再试试。或者,加个延时。
发表于 2014-3-11 10:59:31 | 显示全部楼层 来自: 中国浙江嘉兴
本帖最后由 ryouss 于 2014-3-11 11:00 编辑 6 w/ v. _) M2 o6 `. J9 I
bj-alex 发表于 2014-3-11 10:50 static/image/common/back.gif
  Q/ H1 R( C* ?0 X& U; ~. y- g" p是用3#附件测试的。这么说,还是两次循环之间时间间隔太短。我可以把比一般文件大的多的挑出来,再试试。或 ...
3#附件,我測試是正常
% R8 w- u' r) ~- }& e6 i- D$ i& L! ^在 boolstatus = Part.EditRebuild3()  之下, 補上如下作緩沖看看, K2 K& o9 R/ T7 S) W' ?  Y& k
Dim myModelView As Object
( i7 [; A* ^- V/ q9 `, z* wSet myModelView = Part.ActiveView
* |3 V6 N2 A7 K: i2 k1 s$ v& {myModelView.RotateAboutCenter 0, 0
1 T5 N8 G, z9 i3 j* [! m

评分

参与人数 1三维币 +3 收起 理由
阿帕奇 + 3

查看全部评分

 楼主| 发表于 2014-3-11 11:07:53 | 显示全部楼层 来自: 中国吉林长春
还是不行,我用附件中的数据测试的。您试试?我一次之选了10个文件。

01.rar

302.39 KB, 下载次数: 15

 楼主| 发表于 2014-3-11 11:40:09 | 显示全部楼层 来自: 中国吉林长春
感觉是循环语句的问题。f=Dir之后,i值并没有变化啊。
发表于 2014-3-11 11:44:04 | 显示全部楼层 来自: 中国浙江嘉兴
bj-alex 发表于 2014-3-11 11:07 static/image/common/back.gif, p/ [; i* D% w  P. g. Q
还是不行,我用附件中的数据测试的。您试试?我一次之选了10个文件。

7 \# t7 o1 L0 f% Y: {1 R9 b如下有誤
6 m$ A& x, {" b0 Of = Dir(folder & i & "*.txt")! N; V0 o2 R. Y
把  *.txt  改為  .txt (拿掉  * )
6 e! r- c; [  b$ O+ c" b$ q2 x, \另來檔沒 5.txt# w; @2 ~9 ]4 K5 V
7 O- }% }' W/ {& [& u8 v$ b4 Y
測試正常
* Q; P$ C, H: G8 R) w( x$ M5 m2 k7 ^% U capture_03112014_113746.jpg
 楼主| 发表于 2014-3-11 11:50:23 | 显示全部楼层 来自: 中国吉林长春
我故意把5拿掉的,是想测试下i值不连续的情况。
发表于 2014-3-11 11:56:49 | 显示全部楼层 来自: 中国浙江嘉兴
bj-alex 发表于 2014-3-11 11:50 static/image/common/back.gif$ t( |& c$ I: a( W2 f
我故意把5拿掉的,是想测试下i值不连续的情况。
; I7 Z; g( [5 Q# g( J! ]* Z
有跳號處理就參考5#的解決方法
 楼主| 发表于 2014-3-11 12:02:48 | 显示全部楼层 来自: 中国吉林长春
程序运行正常!非常感谢ryouss的无私帮助!
! |0 c3 x% z. O, ]9 n我在想,如果写个宏,一次只输入一条曲线。然后再用另一宏循环调用它,这样也许可以解决文件数太多时,容易死机的情况。下午有空试试。
9 @3 r( ~0 t; d& ~- j1 u$ {" R另外,再试试使用InsertCurveFile函数。. T0 r% K7 v& o- @
再次感谢ryouss!!
发表于 2014-3-11 14:30:38 | 显示全部楼层 来自: 中国浙江嘉兴
1~500 約跑12分鐘8 P7 z: h7 u* y4 _
1 N9 B" x- ]2 r" X& Q2 H- ^
capture_03112014_142755.jpg
 楼主| 发表于 2014-3-15 10:20:56 | 显示全部楼层 来自: 中国吉林长春
本帖最后由 bj-alex 于 2014-3-15 17:32 编辑 ( [; t  d; n: O  S' s
ryouss 发表于 2014-3-11 14:30 static/image/common/back.gif
; y6 d' O. E2 X( Q1 f1~500 約跑12分鐘

/ O4 q- X( O( ~; [* W  v我现在已经将数据都导入了,形成了曲线,非常感谢您的指导。
+ X# l2 H& K7 Z. y& K另一个问题来了,这只是一层的数据,我还有很多层同样的数据。现在需要在对应位置的曲线,在垂直方向上连接成曲面,就是形成一个垂直的圆柱面。我用放样曲面,再选中两层的两个曲线,形成不了曲面啊。
qumian1.jpg
 楼主| 发表于 2014-3-15 10:26:56 | 显示全部楼层 来自: 中国吉林长春
现附上第二层,和第三层的数据。我做了好几天了,还是形不成曲面。还望指点。

02.rar

50.88 KB, 下载次数: 2

03.rar

38.77 KB, 下载次数: 1

 楼主| 发表于 2014-3-15 17:17:34 | 显示全部楼层 来自: 中国吉林长春
在原来程序之上修改,用insertcurvefile函数导入800个txt文档,只需要3分钟。但是,无法编辑曲线。
& Z6 p! v* S) O. s! }- V+ G6 ?用3D草图导入txt文档,虽然耗时,但是可以编辑曲线。; N3 A/ m$ C3 {' O5 a
另:3D草图导入的曲线,无法使用放样曲面。
8 K* y0 V4 Z8 q  U7 {
txt.jpg
发表于 2014-3-15 20:40:45 | 显示全部楼层 来自: 中国浙江嘉兴
本帖最后由 ryouss 于 2014-3-15 20:42 编辑
; v  ^+ w! e- M! \
bj-alex 发表于 2014-3-15 17:17 static/image/common/back.gif
. O0 U( e( X& M3 e  j1 N在原来程序之上修改,用insertcurvefile函数导入800个txt文档,只需要3分钟。但是,无法编辑曲线。
" K  v+ N& b$ ^( [3 q( L: Z用3D草 ...
4 ]: q" ]7 l9 P! z0 d
生成的草圖是能夠做放樣曲面,$ c9 ?% G* r" u
應該是第一層和第二層的點沒對應吧
' T! C3 l$ A& m+ u) V/ ^4 p( b* J. U
Clipboard01.jpg ! S% o' @, j" a5 t+ `' l/ ^

0 |, p$ Z3 m* S: m; D, n3D草圖5是你提供的第6檔,3D草圖10是依據第6檔做對應點的放樣曲線,因點有對應就可以做出放樣拉伸曲面.
+ k& J  N, T6 H7 X# }  k capture-1.gif
 楼主| 发表于 2014-3-18 14:44:45 | 显示全部楼层 来自: 中国吉林长春
ryouss 发表于 2014-3-15 20:40 static/image/common/back.gif
* K- Q2 O6 m& {' O$ i% G5 `' S  e& b生成的草圖是能夠做放樣曲面,
1 E) x! {( M; H. `應該是第一層和第二層的點沒對應吧

1 ^- p$ `' g3 Z! }4 E如果是两个同心圆呢?只是一个大,一个小,却没有一个对应点,这样也做不了放样曲面?, E1 W+ c/ D9 j; a' i2 v
除了这种办法,还有没有其他方法,生成曲面?
发表于 2019-10-20 19:21:57 | 显示全部楼层 来自: 中国福建福州
两位好强,解决了我遇到的问题
发表于 2020-7-8 22:47:10 | 显示全部楼层 来自: 中国四川成都
两位高手非常强,我非常佩服,在你们宏文件的指导下,我依葫芦画瓢做了“宏”,批量做出了31条沿齿高方向的齿面曲线(31条曲线曲面放样是面齿轮的齿面,齿高方向就是沿坐标的Z轴方向。31条曲线的坐标点是在Excel里用VBA"宏"算的)。见下面几张图
7 q6 ^. h" z$ H1 [# s, k; M1 Q
3 b) O6 f( @$ m, B9 C
* d2 }4 _1 {% ?" Q/ I
5 t6 Q, d0 J4 a7 I% ]) {( ]2 |; R3 Y" f$ W( D+ r
面齿轮全貌
/ ]% u8 L4 v' I% r6 `! M" G7 `+ X" v9 s. L3 S
9 G) W1 U1 ~. i# q5 y, E
面齿轮与直齿啮合- [8 j) U6 X+ Q, ]9 I# f
, ]) A/ t5 Z1 P& G! p! J

: Q7 X6 Q- E7 h! D& Y现在,制造方采用数控机床按曲面加工面齿轮的齿面,要求有沿齿向的曲线坐标点,见下图
, ?7 \  ^" x" l) G- {# X/ L
' K1 A) o( Z3 m/ l+ W
$ ]! m  x9 }% p  {
$ b! R9 }- z" ~2 Q& m$ z
/ |4 p% g* Q) P% |8 I6 T( g& L/ q0 ^8 ?, \
发表于 2020-7-8 22:49:30 | 显示全部楼层 来自: 中国四川成都
怎么图片都没传上来?重新再传
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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