QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 bj-alex 于 2014-3-10 22:12 编辑
4 b& a# ~& R" {% X$ d* @
- f6 [. }* l4 T, m% z' H我有大量的曲线坐标以文本方式保存,每条曲线一个文本文件,现需要将曲线导入。参考坛子里各位大神的方法,写了个自动输入的宏。调试也没发现错误,但是就是曲线显示不了?还望各位高手指点。
8 j' S1 V" e0 ^Sub main()) `, ]" D# c: g+ @
Dim swApp As Object1 ^6 q0 \# r/ }  A
Dim Part As Object7 `' Y, s  ~0 E/ K' X8 |0 n
Dim boolstatus As Boolean  j1 l5 U, [2 f$ J6 P5 j' d
Dim longstatus As Long, longwarnings As Long  k$ G) e- y( y" L
+ t; {. _# I( j5 c; R! e, E
# k6 n- f6 D+ ~' V3 n& f
Set swApp =  Application.SldWorks8 z5 p  u9 N9 @+ I4 r
- O9 Q7 n! L# ~% ?
Set Part = swApp.ActiveDoc
8 ]& m  t, T+ v( ~- l& C* L
% I8 u( X" z* m  b& _ Dim f As String, folder As String) e) ?4 m) \( U5 B1 E% U/ F8 z
folder = "E:\F\CU\Feb2014\5mm\01\"
$ q  l( I. v& m, D1 w f = Dir(folder & "*.txt")
; }/ E; m( H; j) Z While f > ""
) f, `7 O0 V/ X5 j Dim x, y, z As Double . Q$ _' n/ p+ |# q
Dim n As Integer   
% b  g! `( m8 Q7 t: Z Part.InsertCurveFileBegin
5 Z7 n+ y4 W: t$ U# ? Open folder & f For Input As #1) h  M" j7 k+ w
     n = 0
3 T4 e8 E1 x+ v. _! j! x# u, X, Y     Do While Not EOF(1)
4 j/ u  Z2 b/ G# ^3 h0 ^$ J: K- |          Input #1, x- m7 X' T6 o3 i: n3 S& T
          If EOF(1) Then
4 T# F' M5 v( {! t5 S  ^- R- n          Exit Sub/ ^( X: ]0 d! a4 F
          End If) ^3 [% C0 H  @+ D/ Q/ m5 ]
          Input #1, y) Z: r. j: G% Z/ h3 C) I
          If EOF(1) Then( M- l4 g0 \6 o7 s1 \4 Q* ^
          Exit Sub
8 R5 d2 |9 O' @* m! ]          End If- m  H! Q) K, w) d% Q
          Input #1, z
1 E3 x- a( P$ z  D$ j2 D% ~          n = n + 1
" x9 h9 H; T" X: s! A+ d  {        Part.InsertCurveFilePoint x, y, z
' C" _0 C9 w  ~4 z  G+ }     Loop2 B: y, t" e7 t' P% @8 H+ ~8 }
    Part.InsertCurveFileEnd7 o) T$ J7 n% m0 w
Close #1   
: u" X. B1 s3 B% F5 V* k    f = Dir9 G$ W5 O6 c6 L
Wend
% {8 v1 ]5 Y1 F- a8 m6 LEnd 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$ d6 m4 m5 X2 n, T" M0 W
还请高手指点啊,这个问题困扰我好久了
8 T# W9 K1 \& q) G
1. TXT檔用連續不跳號之數字取名稱如 1.txt,2.txt ....,就可以配合  For Next 之 i 值,抓取全部的 TXT 檔." C+ t( x$ i4 _
2. 把 全部的 TXT 檔 置放在須要的文件路徑下.
) u7 s* u$ [) v. g* V# d3. 先開SW的零件檔,執行如下宏,會在零件檔新插入3D草圖作出全部的 TXT 放樣曲線圖.: s. }/ n$ _) n
4. 附檔是兩個測試檔 1.txt,2.txt 可以試看.; |+ w/ r$ }8 ]# k) ~( G

: C. p4 p) R6 p, d4 T& s測試圖) J$ K2 }6 Y1 o
capture-29.gif
8 u7 `) G) n1 V$ `. a* s' ^, ]Sub main()
$ c# z1 s+ }# w) ]5 x7 e' C4 T) U' \Dim swApp As Object6 r% d3 z6 u3 Y: W8 w6 U
Dim Part As Object2 a$ `% Z! K: W0 F( [
Dim boolstatus As Boolean" s' s8 L' U2 k3 G* W0 D' q6 _
Dim longstatus As Long, longwarnings As Long; @6 }' h8 `* i8 h* {
Dim SketchMgr                 As Object2 ^* T8 M2 o/ ?7 r% f, H
Dim pointArray As Variant* P9 A: i- w7 y& j* n* H5 X
Dim points() As Double
7 V" A; p. H( ROn Error Resume Next) X) ?! R4 u& R' X0 C* a
Set swApp = Application.SldWorks5 ~, ]5 i$ B1 h- V/ c
Set Part = swApp.ActiveDoc
0 a( _3 H1 r, O& S2 \* J% {For i = 1 To 2  V7 A! C( T; ]. k0 x9 i+ I1 M$ p4 P
    Dim f As String, folder As String
& q5 c2 k+ Z- m    folder = "E:\F\CU\Feb2014\5mm\01\"3 k1 o& Z* G; _- N: s) `: {
    f = Dir(folder & i & "*.txt"), L3 v+ ?" O  p1 Q$ c
    While f > "": G( t1 T4 G' t$ E! n) L" n3 G! S
    Dim x, y, z As Double; E9 t+ X3 v  P1 W  T+ [) g
    Dim s
1 W0 Y% R5 D1 v' y    Dim n As Integer7 n, X1 v( I! g. A+ o* f5 Y
    Open folder & f For Input As #16 w+ w. }/ k' [+ p- y
    n = 0
; j' @' J) Y9 W$ v1 c    Do While Not EOF(1)7 ?1 c" \8 J1 R
         Line Input #1, s
7 y1 T8 f- V: r, i! R         n = n + 10 w7 q4 A& ^6 p: q
    Loop
( s) A* x% @$ _    Close #1& c& C& j- \" G* h! i
    Open folder & f For Input As #1
) {4 |) a' O' {& y8 B    Set SketchMgr = Part.SketchManager0 Z- b. |2 s, ]& H% Y- T  O& J' \
    SketchMgr.Insert3DSketch True
1 I: c; ]' J9 E0 }6 L4 S; V    ReDim points(1 To n * 3) As Double
$ O/ z, D+ M' ?4 w# e    n = 01 U, |# C# m1 L6 F+ o1 e* P
    Do While Not EOF(1)9 Z4 [" e  `$ ^9 `
         Input #1, x5 P0 E6 w7 h+ T9 p4 ?: {2 y
         points(n + 1) = x / 1000
' N; D1 }% z! l: e) [) G: b         If EOF(1) Then/ N5 A  ~: y/ g2 y$ z5 `
         Exit Sub/ @, x) f" L4 r- L
         End If. g  J, Q; |; R
         Input #1, y
5 ~9 s3 n% l% @0 U$ @9 L, j3 E; q" m         points(n + 2) = y / 1000
  x8 ?0 v  E* B  C% ]: S5 }         If EOF(1) Then% z. Z# `* o2 p3 R! y  Y
         Exit Sub7 c7 x" N4 R2 w1 D* c6 D' o" f, r
         End If9 N0 G5 f3 M% V, r3 x, t
         Input #1, z
% o- Z) S7 r% }, I  E         points(n + 3) = z / 1000
# V: w0 T- e7 M/ t# I         n = n + 3$ O/ O  E4 D( w) b, B( l- Q
    Loop; K- W3 e* U& A! y8 [) m/ s
    Close #1
$ t4 C/ J* y: U$ V( O% q9 @$ i    f = Dir
/ W- O! j: \7 q' C) h    Wend2 T- c6 d( U+ Z
    pointArray = points
! B/ ^0 \  W  `    Set skSegment = Part.SketchManager.CreateSpline((pointArray))
9 ], T) F% _$ i. L- ^    boolstatus = Part.EditRebuild3()8 A+ a5 Y& H5 |; c- Q
Next5 c7 w$ F. d1 u4 ?6 n* k7 q
End Sub* E- B( l- X9 S" |* ]
$ E7 S, Z' I! D$ C. R$ Q$ Q
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 编辑 0 ~# _! ?. z) ?: b
( x) _4 @3 ?3 o3 T$ e0 c7 b9 @4 a( X8 h
沒試不知道
5 B* @1 @7 h; F+ K) W試看再說了,有問題再讨论.. z! c( u9 [2 S6 G( a
若有跳號要繼續執行就在  , a( B( [' S4 y! i1 `
While f > "" 之上,插入 If f = "" Then GoTo aa
" `" L4 N& ~" {/ yboolstatus = Part.EditRebuild3() 之上,插入 aa:1 E  ^' d% ~- X" i
' m/ n# M- |1 t" ^) @( f
" z& J+ C7 J9 k& \' A: U

评分

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

查看全部评分

 楼主| 发表于 2014-3-11 10:35:03 | 显示全部楼层 来自: 中国吉林长春
http://C:\\Users\\Alex Wang\\Desktop\\019 P9 W% ~% ?$ b; h, L) D4 E
程序执行之后,显示的有草图,有3D草图,检查数据也没问题。
 楼主| 发表于 2014-3-11 10:36:34 | 显示全部楼层 来自: 中国吉林长春
贴图失败
发表于 2014-3-11 10:43:23 | 显示全部楼层 来自: 中国浙江嘉兴
本帖最后由 ryouss 于 2014-3-11 10:47 编辑 3 i2 M$ d8 e+ E/ ^" q
bj-alex 发表于 2014-3-11 10:35 static/image/common/back.gif8 Q7 U( j4 A9 b* b
程序执行之后,显示的有草图,有3D草图,检查数据也没问题。
: }6 q% A3 ?& T
显示的有草图,是前3d草圖作完沒跳出3d草圖的編輯狀態,就繼續作第2個文件.' ]9 t8 R" x. S* v7 S8 d
正常是作完3d草圖用  boolstatus = Part.EditRebuild3() 重新計算 跳出3d草圖的編輯狀態.' |/ c4 p" s6 y( r8 i- [
是用3#附檔文件測試的嗎
; h8 L. P" Z9 W4 w- ]; k+ l8 P$ Q0 E1 B2 {1 N$ ?

评分

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

查看全部评分

 楼主| 发表于 2014-3-11 10:50:50 | 显示全部楼层 来自: 中国吉林长春
是用3#附件测试的。这么说,还是两次循环之间时间间隔太短。我可以把比一般文件大的多的挑出来,再试试。或者,加个延时。
发表于 2014-3-11 10:59:31 | 显示全部楼层 来自: 中国浙江嘉兴
本帖最后由 ryouss 于 2014-3-11 11:00 编辑
. J. R: t# `/ a, p8 m3 I
bj-alex 发表于 2014-3-11 10:50 static/image/common/back.gif8 _! s4 g- v* R# E1 C2 @/ W
是用3#附件测试的。这么说,还是两次循环之间时间间隔太短。我可以把比一般文件大的多的挑出来,再试试。或 ...
3#附件,我測試是正常0 S* i5 S" M2 P, c9 Y2 J6 `
在 boolstatus = Part.EditRebuild3()  之下, 補上如下作緩沖看看* |( l: g! g9 C8 Y
Dim myModelView As Object6 M1 \  v3 `: E! h4 u/ d" {
Set myModelView = Part.ActiveView
- C2 ^. ^' s8 M& }) ImyModelView.RotateAboutCenter 0, 0& I1 T1 H5 w' B: Q: Q8 g

评分

参与人数 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
/ x$ D4 s- F( r5 i0 u4 @还是不行,我用附件中的数据测试的。您试试?我一次之选了10个文件。
( Z4 e7 D& B" Y- S4 C9 q
如下有誤
3 s% r* E$ ~7 s$ k5 Y1 Vf = Dir(folder & i & "*.txt")/ H; Z( {; F5 N3 a3 H: y1 c( O* x
把  *.txt  改為  .txt (拿掉  * )
3 U( o+ p# N* k7 H5 Y$ o6 Y另來檔沒 5.txt
% Q3 S1 |5 d/ ]3 C$ _  @- D4 G5 {2 Y
. @: Z4 V5 c& y, f  C4 @測試正常* ]. \7 G  \$ x
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
0 ~) _9 W$ J5 L0 s6 c我故意把5拿掉的,是想测试下i值不连续的情况。
0 `9 |3 ^4 ^* L, Q# f
有跳號處理就參考5#的解決方法
 楼主| 发表于 2014-3-11 12:02:48 | 显示全部楼层 来自: 中国吉林长春
程序运行正常!非常感谢ryouss的无私帮助!: p! x" m1 @- \
我在想,如果写个宏,一次只输入一条曲线。然后再用另一宏循环调用它,这样也许可以解决文件数太多时,容易死机的情况。下午有空试试。
: W- N& t  D% h% G/ h( h另外,再试试使用InsertCurveFile函数。
6 `6 y2 v3 `; E! ]9 _再次感谢ryouss!!
发表于 2014-3-11 14:30:38 | 显示全部楼层 来自: 中国浙江嘉兴
1~500 約跑12分鐘" f+ f2 E8 |0 Z7 D

% z8 c2 k! P  S: ` capture_03112014_142755.jpg
 楼主| 发表于 2014-3-15 10:20:56 | 显示全部楼层 来自: 中国吉林长春
本帖最后由 bj-alex 于 2014-3-15 17:32 编辑
( S( @" H: k# c' w+ d
ryouss 发表于 2014-3-11 14:30 static/image/common/back.gif
% C7 {; A" }, I$ N- h, O1~500 約跑12分鐘
4 h9 f7 X+ Z- [  X  D7 C3 U+ K- i
我现在已经将数据都导入了,形成了曲线,非常感谢您的指导。* ~4 b1 I  F6 m. X
另一个问题来了,这只是一层的数据,我还有很多层同样的数据。现在需要在对应位置的曲线,在垂直方向上连接成曲面,就是形成一个垂直的圆柱面。我用放样曲面,再选中两层的两个曲线,形成不了曲面啊。
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分钟。但是,无法编辑曲线。
. K8 R5 `3 ~* c5 o) s! V* U用3D草图导入txt文档,虽然耗时,但是可以编辑曲线。
, Z/ w0 o6 B4 h7 \0 J另:3D草图导入的曲线,无法使用放样曲面。8 g$ m7 D( `$ ~9 r% b
txt.jpg
发表于 2014-3-15 20:40:45 | 显示全部楼层 来自: 中国浙江嘉兴
本帖最后由 ryouss 于 2014-3-15 20:42 编辑 + I9 t6 |0 C. E% t8 Y9 q
bj-alex 发表于 2014-3-15 17:17 static/image/common/back.gif
1 c2 j/ b' v8 p$ `: W在原来程序之上修改,用insertcurvefile函数导入800个txt文档,只需要3分钟。但是,无法编辑曲线。
3 {) j  y5 y* a$ H( y  _& r用3D草 ...
3 b  N4 r. u  C: T( T6 V
生成的草圖是能夠做放樣曲面,1 B( s' H- x+ d, J+ S/ o6 G
應該是第一層和第二層的點沒對應吧$ a  z+ `  F( J! b  e

; x$ q% _/ \- T2 f4 S Clipboard01.jpg . O/ B+ r* H! b& S; O5 z! }. y

2 R  X! P0 l; O( b3D草圖5是你提供的第6檔,3D草圖10是依據第6檔做對應點的放樣曲線,因點有對應就可以做出放樣拉伸曲面.. {- o. i- s( b
capture-1.gif
 楼主| 发表于 2014-3-18 14:44:45 | 显示全部楼层 来自: 中国吉林长春
ryouss 发表于 2014-3-15 20:40 static/image/common/back.gif
# h. D) J6 B' l& x; T& j生成的草圖是能夠做放樣曲面,6 A* W5 i2 R! `8 q
應該是第一層和第二層的點沒對應吧
- y% G, Q7 W" o1 O
如果是两个同心圆呢?只是一个大,一个小,却没有一个对应点,这样也做不了放样曲面?
' b4 {' j) [4 D. u" Q5 O# l除了这种办法,还有没有其他方法,生成曲面?
发表于 2019-10-20 19:21:57 | 显示全部楼层 来自: 中国福建福州
两位好强,解决了我遇到的问题
发表于 2020-7-8 22:47:10 | 显示全部楼层 来自: 中国四川成都
两位高手非常强,我非常佩服,在你们宏文件的指导下,我依葫芦画瓢做了“宏”,批量做出了31条沿齿高方向的齿面曲线(31条曲线曲面放样是面齿轮的齿面,齿高方向就是沿坐标的Z轴方向。31条曲线的坐标点是在Excel里用VBA"宏"算的)。见下面几张图
! g" W; I# i* |" I0 N5 o+ A: E: X2 i

2 q+ E2 h3 E' u8 V; K
5 z# H# \0 j7 d0 f5 q9 {4 n* I) V+ X" V0 e( j0 t% R& D; s  D
面齿轮全貌
) b; k: Y1 J/ `4 Z  q* f! P
& R2 r% f4 C- i7 `! B% U
0 ?+ y7 w' S# \" b. H' z* D面齿轮与直齿啮合9 K: F$ O( K! z4 F3 G* a1 [
! U2 D& o$ C5 |# o$ m) d& N/ r

( m1 Q3 P) O: R/ [. P9 ^- |4 ~  p现在,制造方采用数控机床按曲面加工面齿轮的齿面,要求有沿齿向的曲线坐标点,见下图
5 p7 f2 y' V4 n7 D: T- C) e
& f- m2 p  f* w! ]  \
# r% m; \' [- o# [, C
, S' s6 I; q' a: I1 P$ H5 ]  ^
! H+ F3 |# _& A6 M* X0 t2 u/ H5 l1 n0 M+ F: X3 \- l  S! u+ L9 d
发表于 2020-7-8 22:49:30 | 显示全部楼层 来自: 中国四川成都
怎么图片都没传上来?重新再传
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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