QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 bj-alex 于 2014-3-10 22:12 编辑
6 w# @  e& C- Q* j  i6 K; S  Z! \/ M& j
我有大量的曲线坐标以文本方式保存,每条曲线一个文本文件,现需要将曲线导入。参考坛子里各位大神的方法,写了个自动输入的宏。调试也没发现错误,但是就是曲线显示不了?还望各位高手指点。# V* d) t; J  D% y1 F% R: _* |# M
Sub main()7 k, g1 Q5 i9 ?4 T# h
Dim swApp As Object
/ S$ ?7 B3 K3 ~6 ~, w3 J Dim Part As Object; o: e9 B8 x$ u2 r* c2 j/ e7 J
Dim boolstatus As Boolean
( x$ _% ~: y( Z7 [7 x7 l; Y8 [ Dim longstatus As Long, longwarnings As Long# B+ M1 y2 ^! i9 W, i
* R1 X. z  B1 a3 P, p; [3 Q

6 T9 V1 @7 z5 _ Set swApp =  Application.SldWorks( w( K  y$ P0 f7 K7 N' ]7 r
! E& T7 ~! [; j& w7 c
Set Part = swApp.ActiveDoc+ ]( g# j3 r- c

' p( H) W# n4 `, c) b: e7 m. t; V) G" ` Dim f As String, folder As String
3 `9 J) s" \( G+ {0 _7 s7 C  P; {) \9 n folder = "E:\F\CU\Feb2014\5mm\01\"
0 K% G* U! r/ M/ `; J, e5 _ f = Dir(folder & "*.txt")7 Q% [  L3 Q! ]
While f > ""0 |$ j) d" u0 d2 A* [9 P: L7 n
Dim x, y, z As Double " @2 w$ ^; x/ I# V0 b  F/ m
Dim n As Integer   2 |3 w1 k' W+ Z9 O/ e, s% z
Part.InsertCurveFileBegin6 d: R3 d5 d6 M
Open folder & f For Input As #12 _  U" W3 s. T' M! K
     n = 0
; ^6 ~9 c& h  z) }! O" J     Do While Not EOF(1)
& F& r/ P; ^% p% H0 J/ ~4 s0 Z  p          Input #1, x2 A# l4 f* ^' d5 K+ O
          If EOF(1) Then5 k' g  N8 {/ A7 a5 E% _- O; C% J
          Exit Sub$ q3 H7 r* Z$ @. U3 x0 Z* _
          End If; z# G3 n. z4 E' Y0 X
          Input #1, y9 @) d9 Q+ M: x: I8 i8 D9 m: H
          If EOF(1) Then
8 G0 C" y2 ]& l& @. e% m          Exit Sub
& I$ ^) D3 W5 u+ t# D          End If6 T. {1 y; @9 X3 N  H2 W
          Input #1, z2 p; \) Y( [9 ?0 D! p
          n = n + 1
+ Y: E2 h# ]1 V        Part.InsertCurveFilePoint x, y, z  ]$ n- x4 D) b/ v/ ~" {
     Loop
2 f' x- d5 l, b$ E# T5 K    Part.InsertCurveFileEnd  \+ q% b7 e1 Y0 T1 r
Close #1      ^4 z) f8 W4 j
    f = Dir" U2 K( R9 ?7 `# P* }( U6 T
Wend- t  E4 n" g1 K& ]2 Y0 }6 w* ^
End 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
2 I; Q% ?% @% r4 y! P$ l0 i; u还请高手指点啊,这个问题困扰我好久了

1 U/ H+ I2 F, ~1. TXT檔用連續不跳號之數字取名稱如 1.txt,2.txt ....,就可以配合  For Next 之 i 值,抓取全部的 TXT 檔.
8 q) M  m' K# E; `7 G1 ~5 e2. 把 全部的 TXT 檔 置放在須要的文件路徑下.6 b- s6 W* R8 @  }/ P7 k6 V
3. 先開SW的零件檔,執行如下宏,會在零件檔新插入3D草圖作出全部的 TXT 放樣曲線圖.
: f" X, I2 K9 z+ P4. 附檔是兩個測試檔 1.txt,2.txt 可以試看.8 a2 t0 V; q+ Z+ K6 T2 z+ S- [
" v- T* _& ^, P6 D2 f! j
測試圖
$ U0 P1 @8 j9 f+ B  Z7 S capture-29.gif
1 w' S5 d8 n8 SSub main()% F) F" K7 N2 }& U' [
Dim swApp As Object' j: K( |" s6 Q: N
Dim Part As Object
9 A" Q. u" P2 Q2 gDim boolstatus As Boolean( s7 T5 x3 y: W
Dim longstatus As Long, longwarnings As Long
2 }& G1 [+ f0 m8 C3 YDim SketchMgr                 As Object, {& n1 f0 |  X) Z# g- J4 T5 e
Dim pointArray As Variant
, b6 q  d3 F2 c) ]8 JDim points() As Double: X$ u, r& h, w7 ?5 B; ?
On Error Resume Next$ y( ]; c" Y2 n' S4 ^4 H
Set swApp = Application.SldWorks
& x: D5 h: K" ]) N7 M1 \& ~Set Part = swApp.ActiveDoc# n* _$ _9 [! ]. K# W) f2 b
For i = 1 To 2" v! O0 v. l+ Z/ h4 t% z
    Dim f As String, folder As String
2 `6 `5 S% }; C' e# E0 g, @    folder = "E:\F\CU\Feb2014\5mm\01\"
" k* \% P/ R9 s9 i9 f2 C    f = Dir(folder & i & "*.txt")8 C; X2 X' |, Z* N5 J
    While f > ""0 R/ T# \7 B! [5 a& l# y8 M
    Dim x, y, z As Double( g0 y, |5 M$ w
    Dim s
1 A! M2 s/ x/ R& T+ J    Dim n As Integer
; I6 Q4 F, \9 z    Open folder & f For Input As #1) e8 @5 i. [- \9 }
    n = 0
5 n8 X1 l2 P6 |& ]6 P    Do While Not EOF(1)
6 ?6 o4 N& Q6 r1 z/ w         Line Input #1, s
3 T6 h/ R2 W  y& v% n0 Y, ?         n = n + 1! w( G% ^* Y. d+ r6 L0 e, ]; x
    Loop
+ d; j) H1 ?' U. S8 m/ o3 F    Close #1
1 O4 u& ?: ], ^/ y3 i    Open folder & f For Input As #1
/ c9 T0 ]. h0 T- a' I    Set SketchMgr = Part.SketchManager7 h: |4 x+ ?' n7 R7 u: Z
    SketchMgr.Insert3DSketch True" i8 `- [' m3 e/ ^1 B$ K
    ReDim points(1 To n * 3) As Double
4 y' \; {( d. I$ n    n = 0
1 |1 {2 J5 O: |/ v7 Y8 l1 W    Do While Not EOF(1)
4 W3 ]/ b% e& O         Input #1, x) z' w4 Y& x$ D( u& H; J% C
         points(n + 1) = x / 1000, S% e% I) ~0 O" m- _/ V
         If EOF(1) Then
) s! k- y% v% F+ e         Exit Sub
6 \: z$ S/ V& h& ]% e/ w* V         End If
6 u: i& i3 R: ]4 @5 q4 B6 s! x, H         Input #1, y& G! `" D; [. D. ^, }8 ]
         points(n + 2) = y / 1000
/ k, x! N  B) z2 r$ |4 P         If EOF(1) Then
: F) m" |0 J8 c. U% `         Exit Sub" k9 u# E8 R* Y! A- A
         End If& H" Z$ Q# r6 @2 L: f: S
         Input #1, z
9 L4 Z2 m3 `$ H" @3 [$ M         points(n + 3) = z / 1000
- Q0 O4 ^/ t$ c5 p* O5 c! w         n = n + 3$ k9 g4 T! w/ Y& X8 |3 e
    Loop( G- A: X& Z3 O' ~" K: q
    Close #1  {6 S2 m0 n$ Z' Y6 R8 Y
    f = Dir
* h5 e: m; }8 f2 V6 c8 \) q    Wend% w+ ?" ^& I& s* z' P3 z
    pointArray = points& V) {1 m8 s9 m, B
    Set skSegment = Part.SketchManager.CreateSpline((pointArray))* J* r' z% X/ [  }7 H8 ?# Q8 d
    boolstatus = Part.EditRebuild3()
, k3 F: P! q: p+ E& q# rNext% v) k/ V2 a, q' W. V0 X7 ]
End Sub; Z; b3 O. [( p5 ?  U

. l1 y( \2 l" B2 A& G" G 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& p) U8 P8 T- z- Z
5 J0 p8 e5 C$ D1 L沒試不知道
+ i& r2 J+ \# E試看再說了,有問題再讨论.
( ?$ {+ h6 \) p/ @3 l若有跳號要繼續執行就在  
9 a" v$ }4 n4 ~: j3 r2 w) JWhile f > "" 之上,插入 If f = "" Then GoTo aa: I9 e: j- i1 `6 g4 b
boolstatus = Part.EditRebuild3() 之上,插入 aa:: ~+ Q' F& i0 E1 |9 m

7 ~' D1 f* ?5 P7 a0 \9 K
% x; e+ T/ X5 a; H; B* ~, B: A

评分

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

查看全部评分

 楼主| 发表于 2014-3-11 10:35:03 | 显示全部楼层 来自: 中国吉林长春
http://C:\\Users\\Alex Wang\\Desktop\\01; D+ b1 l# b: m% O/ k
程序执行之后,显示的有草图,有3D草图,检查数据也没问题。
 楼主| 发表于 2014-3-11 10:36:34 | 显示全部楼层 来自: 中国吉林长春
贴图失败
发表于 2014-3-11 10:43:23 | 显示全部楼层 来自: 中国浙江嘉兴
本帖最后由 ryouss 于 2014-3-11 10:47 编辑
( b. g. H3 a7 B
bj-alex 发表于 2014-3-11 10:35 static/image/common/back.gif
$ T/ E$ P3 Y; n- \1 x9 b2 ?& w程序执行之后,显示的有草图,有3D草图,检查数据也没问题。
$ y4 ]5 [8 S$ b
显示的有草图,是前3d草圖作完沒跳出3d草圖的編輯狀態,就繼續作第2個文件.( a' q, V8 m" o- V5 E
正常是作完3d草圖用  boolstatus = Part.EditRebuild3() 重新計算 跳出3d草圖的編輯狀態.
% ?1 P/ K: h4 L) o) x是用3#附檔文件測試的嗎% [9 R1 w1 ^0 {  l% J% E
# |( j  Q1 y$ w7 y9 _; V; v

评分

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

查看全部评分

 楼主| 发表于 2014-3-11 10:50:50 | 显示全部楼层 来自: 中国吉林长春
是用3#附件测试的。这么说,还是两次循环之间时间间隔太短。我可以把比一般文件大的多的挑出来,再试试。或者,加个延时。
发表于 2014-3-11 10:59:31 | 显示全部楼层 来自: 中国浙江嘉兴
本帖最后由 ryouss 于 2014-3-11 11:00 编辑
: ?& L. q% _: U5 i- R) c
bj-alex 发表于 2014-3-11 10:50 static/image/common/back.gif+ w4 j- E) s3 |/ ?$ \( L
是用3#附件测试的。这么说,还是两次循环之间时间间隔太短。我可以把比一般文件大的多的挑出来,再试试。或 ...
3#附件,我測試是正常
8 c9 M" O2 P  ^  ?1 b+ ~! H在 boolstatus = Part.EditRebuild3()  之下, 補上如下作緩沖看看
0 E9 z, s7 |" ?5 U9 O* NDim myModelView As Object9 v' v& g6 c% c3 s& n, d
Set myModelView = Part.ActiveView6 J# j6 v9 a( r1 L* C( u# b; V
myModelView.RotateAboutCenter 0, 0
" F+ Y. x/ A0 A7 Y/ C' ]5 r

评分

参与人数 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.gif2 _  e8 R. J% ]
还是不行,我用附件中的数据测试的。您试试?我一次之选了10个文件。
4 x+ M$ j3 Q5 T7 k- }
如下有誤
( E( `. `: U( r! A7 |( ?6 Hf = Dir(folder & i & "*.txt")
6 j- O% k. ~# k, d0 B; W把  *.txt  改為  .txt (拿掉  * )
- l2 U2 H0 G7 y3 [$ }! M9 {1 }* Q另來檔沒 5.txt
7 s; \; i+ e" v; j4 U
- U8 p7 ?$ g: l; v4 \  |: t測試正常
- i) l- n( R; _. S 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
/ {  H; ^& L# l  A1 ^% d2 ]4 S  W我故意把5拿掉的,是想测试下i值不连续的情况。
9 ^4 J. }' F0 _+ M1 J1 h# B! r
有跳號處理就參考5#的解決方法
 楼主| 发表于 2014-3-11 12:02:48 | 显示全部楼层 来自: 中国吉林长春
程序运行正常!非常感谢ryouss的无私帮助!
5 j' p2 U/ h. [" z我在想,如果写个宏,一次只输入一条曲线。然后再用另一宏循环调用它,这样也许可以解决文件数太多时,容易死机的情况。下午有空试试。
, ]. g; w" G0 T0 P另外,再试试使用InsertCurveFile函数。
; ]7 v) \' b5 Y1 B+ m2 c. ?再次感谢ryouss!!
发表于 2014-3-11 14:30:38 | 显示全部楼层 来自: 中国浙江嘉兴
1~500 約跑12分鐘" q+ d/ U0 \0 \% d4 |1 k$ o4 w# Q
6 d+ G3 S* }& V
capture_03112014_142755.jpg
 楼主| 发表于 2014-3-15 10:20:56 | 显示全部楼层 来自: 中国吉林长春
本帖最后由 bj-alex 于 2014-3-15 17:32 编辑 2 i9 d' B9 ^) A( P& n3 v4 O& F. ~
ryouss 发表于 2014-3-11 14:30 static/image/common/back.gif
8 u/ E( j* h. T9 \: \5 c9 `: {1~500 約跑12分鐘

4 `* w- F$ G( U) X* H1 a+ M* O我现在已经将数据都导入了,形成了曲线,非常感谢您的指导。& i' M; X! k# w0 ~9 L0 |* `8 A
另一个问题来了,这只是一层的数据,我还有很多层同样的数据。现在需要在对应位置的曲线,在垂直方向上连接成曲面,就是形成一个垂直的圆柱面。我用放样曲面,再选中两层的两个曲线,形成不了曲面啊。
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分钟。但是,无法编辑曲线。) R- h) _" P7 A5 T! m3 i% m
用3D草图导入txt文档,虽然耗时,但是可以编辑曲线。
7 E& \8 x6 W$ p1 h0 M7 c另:3D草图导入的曲线,无法使用放样曲面。: D* e- H0 x- C- ^0 F% e
txt.jpg
发表于 2014-3-15 20:40:45 | 显示全部楼层 来自: 中国浙江嘉兴
本帖最后由 ryouss 于 2014-3-15 20:42 编辑 $ B+ _6 P2 c8 V$ b  M1 G- r5 @, U. D
bj-alex 发表于 2014-3-15 17:17 static/image/common/back.gif7 T. W( D* q/ y  K6 \! N" @0 R6 _
在原来程序之上修改,用insertcurvefile函数导入800个txt文档,只需要3分钟。但是,无法编辑曲线。9 d2 G" d  q" r3 ~; k' O
用3D草 ...
3 b9 ]6 ^$ r8 W/ G% B# Y# y2 _
生成的草圖是能夠做放樣曲面,% g' H0 Z. r& _% q+ X( _$ _
應該是第一層和第二層的點沒對應吧" Z  L2 w; j6 I3 G' x, O0 _6 ]
1 S2 ~+ y* k. h, J% A
Clipboard01.jpg
7 t; U, x5 r7 r% F; c& r5 X7 A, ~8 t" g! h' Z
3D草圖5是你提供的第6檔,3D草圖10是依據第6檔做對應點的放樣曲線,因點有對應就可以做出放樣拉伸曲面.
0 t- o/ q" n* p/ Y/ K) p capture-1.gif
 楼主| 发表于 2014-3-18 14:44:45 | 显示全部楼层 来自: 中国吉林长春
ryouss 发表于 2014-3-15 20:40 static/image/common/back.gif* Q, F, X1 V" c  s: O! Z; @
生成的草圖是能夠做放樣曲面,
: N+ b- c/ b: {6 i# t, X應該是第一層和第二層的點沒對應吧
; p  c6 E6 X6 Y, a! j, l: n/ o
如果是两个同心圆呢?只是一个大,一个小,却没有一个对应点,这样也做不了放样曲面?% ~# q8 b& _$ d6 c0 Y0 W# d3 s) l' I
除了这种办法,还有没有其他方法,生成曲面?
发表于 2019-10-20 19:21:57 | 显示全部楼层 来自: 中国福建福州
两位好强,解决了我遇到的问题
发表于 2020-7-8 22:47:10 | 显示全部楼层 来自: 中国四川成都
两位高手非常强,我非常佩服,在你们宏文件的指导下,我依葫芦画瓢做了“宏”,批量做出了31条沿齿高方向的齿面曲线(31条曲线曲面放样是面齿轮的齿面,齿高方向就是沿坐标的Z轴方向。31条曲线的坐标点是在Excel里用VBA"宏"算的)。见下面几张图
  f6 m( a  j! G" p  E. F: f6 a4 B# `3 m9 Z

8 t$ W+ L1 c3 q4 N. ^: Z3 l# `
5 \& m( U' l+ `/ t  ~' v5 \
/ F8 h0 |5 U& L' C' o面齿轮全貌2 N" n: I% J3 T% \# V- h

/ w- b& v& c# h+ X3 K* I  `+ ?
8 P/ u' P9 B. z面齿轮与直齿啮合
1 y# m3 c9 w2 H6 t4 X0 y' A2 u' H. p/ b0 i+ M$ ^- y

5 Y" u5 p2 `5 m" H3 g: |" d现在,制造方采用数控机床按曲面加工面齿轮的齿面,要求有沿齿向的曲线坐标点,见下图
0 t, |  [$ e4 [3 g% z! e" g* D1 g4 ~7 M) ?! a& F4 R0 s7 ^, G

& Z- {1 t/ \8 D3 d" v* f
; w9 I' S0 R' P" a2 d0 n9 M9 g4 u: A. |( [2 h

  j( L! A% U2 C# F! g" f
发表于 2020-7-8 22:49:30 | 显示全部楼层 来自: 中国四川成都
怎么图片都没传上来?重新再传
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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