QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 bj-alex 于 2014-3-10 22:12 编辑
0 K- f  x6 g0 ~0 i* B- r# u- i: D& v' K3 y% L8 b6 U; N( E  X
我有大量的曲线坐标以文本方式保存,每条曲线一个文本文件,现需要将曲线导入。参考坛子里各位大神的方法,写了个自动输入的宏。调试也没发现错误,但是就是曲线显示不了?还望各位高手指点。
0 j$ A7 h8 k. T; p9 JSub main()
+ M7 U* {/ B7 K Dim swApp As Object
4 p1 w' u: }, ^; [6 ]. F: z3 w Dim Part As Object
4 h( V, \8 K8 i% _9 z) Z Dim boolstatus As Boolean
" A1 P! i- Q' A/ M1 e Dim longstatus As Long, longwarnings As Long
0 Z2 W0 l- ?9 v) s
! l7 [# y) Z7 a8 Q5 c8 H+ t& T6 K& x
$ t' O, ?3 S; H5 l, i( Y Set swApp =  Application.SldWorks
$ W* C& ?7 C+ A, A0 ]" L5 w
, |) K: _; A! e9 W+ @" t# O6 C Set Part = swApp.ActiveDoc. m7 `' V* s( z
7 n, I5 ^+ A& g' f
Dim f As String, folder As String# Y* a# l' a5 |: a
folder = "E:\F\CU\Feb2014\5mm\01\"' M% Q! H+ Z5 B# w! Z! ~- l6 b
f = Dir(folder & "*.txt")) Q9 S: q, m1 ^0 R
While f > ""
6 z; I; k3 X, C2 T' Z, j Dim x, y, z As Double " d/ Q! d0 R" K0 \, j
Dim n As Integer   
7 a  ~* d3 A. L6 E7 l: h1 k Part.InsertCurveFileBegin% Q# R' X8 a, A+ Z, I
Open folder & f For Input As #15 s, _5 o7 `9 r) N) L
     n = 0
, h' H% o8 u5 T2 `& r. C2 p. h- Q     Do While Not EOF(1)) p& B, K( A2 V6 `3 {
          Input #1, x
+ J. K' R: n1 T          If EOF(1) Then5 t5 ?+ ~! n9 U9 T: W. |  B3 z
          Exit Sub0 Q2 N" u3 Z: K+ i* @; N
          End If% z4 i" U7 m7 B! l8 b
          Input #1, y
$ j" g, [- N) w" x# Q          If EOF(1) Then
! y5 E) }- m; N0 A          Exit Sub6 K. x5 |( u5 I, }
          End If4 v9 G7 v4 q3 q+ B" U" D' y
          Input #1, z
* V+ F/ B+ ^# P# N          n = n + 1
; t! W) ?9 X# q        Part.InsertCurveFilePoint x, y, z
" t2 y% N% {$ V     Loop
0 c1 B( I  ]. V, x) l$ h    Part.InsertCurveFileEnd
4 \* n) R  G- w; z  q. h Close #1   
4 }3 I4 }2 ^! x: r+ d    f = Dir
; c; A- M$ q7 u+ |: J Wend5 i7 [, [; ]) Z5 d
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
6 P+ b8 w" V9 q1 m" s9 D6 [还请高手指点啊,这个问题困扰我好久了

( b+ `7 Q( S) b  p  E: |! J1. TXT檔用連續不跳號之數字取名稱如 1.txt,2.txt ....,就可以配合  For Next 之 i 值,抓取全部的 TXT 檔.5 l$ J# C0 S' x0 N5 F7 R" A3 D6 S+ x" {
2. 把 全部的 TXT 檔 置放在須要的文件路徑下.
# w9 G6 j+ g8 |. _$ ]3. 先開SW的零件檔,執行如下宏,會在零件檔新插入3D草圖作出全部的 TXT 放樣曲線圖.; |4 X* [4 G: k. {/ E) `. |* [
4. 附檔是兩個測試檔 1.txt,2.txt 可以試看., y* V0 L( b1 T) J( W
4 X. b) q! i, V- c6 Z  g* a
測試圖% L- V  G! I2 a1 i! G' [# M
capture-29.gif - A8 d. Y4 y1 |! ]. ]$ S" F
Sub main()- E! F' y: R% o* t0 A3 h4 g
Dim swApp As Object
# ]( [) r: Z) k# N5 e+ zDim Part As Object# W8 ~) E0 J/ c& v$ F# s
Dim boolstatus As Boolean+ P# m3 O! L& `& D/ ?
Dim longstatus As Long, longwarnings As Long8 H2 I: Y+ F: z- U/ T
Dim SketchMgr                 As Object
* G" m* {5 T; }8 M+ sDim pointArray As Variant
: r4 w5 j7 g$ n. }! j4 o& {0 UDim points() As Double
! s0 G2 S& @. O' y* v$ L, YOn Error Resume Next
. R2 k) O: K- J. W) SSet swApp = Application.SldWorks
1 O! K& q  y' r. USet Part = swApp.ActiveDoc! e+ Y. S6 O& Y
For i = 1 To 2
7 f9 N8 L* G( w    Dim f As String, folder As String
3 R$ c9 u# q& h  T" l3 z* u    folder = "E:\F\CU\Feb2014\5mm\01\"
5 k- B3 i/ L# t; a% I3 c    f = Dir(folder & i & "*.txt")$ z2 V: s7 h1 G
    While f > ""
. n+ O0 Y% E8 X0 Z( r* j  [    Dim x, y, z As Double  z) A3 l" f# a0 T; b
    Dim s
/ r  g' P* f  {  J    Dim n As Integer
' x4 ~: k4 \  _1 H5 Z, `; a  |: a% T    Open folder & f For Input As #1
% q$ z4 V+ W, }% X8 K) `' _+ |    n = 0
% p8 b' K3 L5 w) T: X7 E    Do While Not EOF(1)
3 g  O$ A9 u/ M) p3 e* D         Line Input #1, s/ {* y  A6 S2 J' A! o5 ?
         n = n + 1
. l3 F" B" b/ \    Loop' S* O, M. t. K
    Close #1
& ~. e9 P5 W- l) L- M    Open folder & f For Input As #1
4 Q' X0 H) K' d% Y! R8 i    Set SketchMgr = Part.SketchManager4 @: w' v/ \* D, k! p  H. [
    SketchMgr.Insert3DSketch True$ P1 H4 W4 a/ r1 T1 A$ u' b/ ]
    ReDim points(1 To n * 3) As Double! f- s, Z5 @8 e0 f- o
    n = 0
, V' q3 g1 `) P! \5 P3 S    Do While Not EOF(1)* h! z3 j! l( y6 a
         Input #1, x
9 w4 C6 {5 Y/ `  [1 J6 Y' ~  N         points(n + 1) = x / 1000$ C& x% a( z6 g% u
         If EOF(1) Then
8 R% y$ u; z' M# u4 c- V         Exit Sub
) F$ `- ^: m/ m         End If
' G, ^" s( m! C: w/ m         Input #1, y
! Y9 J/ ~5 h8 f: u$ h5 Y2 o         points(n + 2) = y / 1000/ H/ v! T& B5 }; M
         If EOF(1) Then
  G  v& v4 A- u0 }! b         Exit Sub/ D  i- w0 w  {# Z/ O
         End If
8 b! f: F* U, e4 N; x9 t; P# Q5 h         Input #1, z
' f9 g8 d& W- ~+ F- ?; U5 v         points(n + 3) = z / 1000
. E9 o& p+ w. e' c1 d! e& V         n = n + 36 W' m, K* i6 K/ k0 Z' ?
    Loop
7 b) E& S) s- A. t* t- v    Close #1/ s- c+ B- j  c
    f = Dir
7 F8 o& A# |; @% w+ y( H4 V    Wend
9 F6 c5 y* z: s1 o2 m$ P4 i( }& V    pointArray = points
4 P9 p; q& a7 E5 p4 \) _    Set skSegment = Part.SketchManager.CreateSpline((pointArray))
( D5 k: f( y& k* M- R$ d    boolstatus = Part.EditRebuild3()
( G' Y! B& H: DNext
- m, X% }) B: G. ~2 r% qEnd Sub9 Z; K! m$ Q. _- B

* f/ _, }, i5 i, D8 D! _# u5 z5 W 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 编辑 4 z0 J+ k- D5 |" s2 D) d, P6 a

  c1 A1 f) Q8 Y. r, m沒試不知道
* Y  H* [' S; O# \4 H試看再說了,有問題再讨论.
, ~3 F: ?% R6 s9 ?4 |7 N若有跳號要繼續執行就在  
" H9 Y( d5 c) R( LWhile f > "" 之上,插入 If f = "" Then GoTo aa
! A. H% E6 j! ]8 e& A! o) Fboolstatus = Part.EditRebuild3() 之上,插入 aa:: X1 P: i& `) Z* J3 w. q9 q

4 s+ B5 i, {  l3 `
" B& L8 s6 A4 J+ C/ N' P

评分

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

查看全部评分

 楼主| 发表于 2014-3-11 10:35:03 | 显示全部楼层 来自: 中国吉林长春
http://C:\\Users\\Alex Wang\\Desktop\\01
  Z! t; r6 d: q% W0 P! v! M程序执行之后,显示的有草图,有3D草图,检查数据也没问题。
 楼主| 发表于 2014-3-11 10:36:34 | 显示全部楼层 来自: 中国吉林长春
贴图失败
发表于 2014-3-11 10:43:23 | 显示全部楼层 来自: 中国浙江嘉兴
本帖最后由 ryouss 于 2014-3-11 10:47 编辑 1 |+ r# H  D9 Z- a9 B
bj-alex 发表于 2014-3-11 10:35 static/image/common/back.gif* g9 \7 _, [, _+ e, H0 a
程序执行之后,显示的有草图,有3D草图,检查数据也没问题。
0 _. `- K- h/ b3 _) {
显示的有草图,是前3d草圖作完沒跳出3d草圖的編輯狀態,就繼續作第2個文件.- N- {) S( q- @! U0 h: \
正常是作完3d草圖用  boolstatus = Part.EditRebuild3() 重新計算 跳出3d草圖的編輯狀態.
5 X! y7 j+ u! P9 W% `- I- Z/ ?是用3#附檔文件測試的嗎$ C1 [/ Q9 P/ {* d0 J
! t/ D. ?5 e/ E- S& f$ M

评分

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

查看全部评分

 楼主| 发表于 2014-3-11 10:50:50 | 显示全部楼层 来自: 中国吉林长春
是用3#附件测试的。这么说,还是两次循环之间时间间隔太短。我可以把比一般文件大的多的挑出来,再试试。或者,加个延时。
发表于 2014-3-11 10:59:31 | 显示全部楼层 来自: 中国浙江嘉兴
本帖最后由 ryouss 于 2014-3-11 11:00 编辑
* u# u3 q. f4 D5 ~: Y
bj-alex 发表于 2014-3-11 10:50 static/image/common/back.gif
# q  `" v3 v5 g- s2 }3 o是用3#附件测试的。这么说,还是两次循环之间时间间隔太短。我可以把比一般文件大的多的挑出来,再试试。或 ...
3#附件,我測試是正常
# B' m- t% R. ~3 W$ ?在 boolstatus = Part.EditRebuild3()  之下, 補上如下作緩沖看看: H* n4 ?* u. U: }
Dim myModelView As Object- d& K3 J2 a4 ?
Set myModelView = Part.ActiveView
* E  T2 b0 R9 g& \; }myModelView.RotateAboutCenter 0, 0$ j- P- Y( M( \& o! k4 \

评分

参与人数 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
& W6 m% t* m- R/ v! ?  b还是不行,我用附件中的数据测试的。您试试?我一次之选了10个文件。

2 a6 a2 a0 r! ]如下有誤
0 [" e- X  {7 d/ ?2 wf = Dir(folder & i & "*.txt")" }1 W3 B+ x5 [1 G$ ^
把  *.txt  改為  .txt (拿掉  * )- C  o' m9 c9 m* B
另來檔沒 5.txt
0 `6 F; G) b& z! e  W0 t0 t6 N! L
! q1 \$ S: ~' i" n; I測試正常
- r+ ?5 }$ r" u/ E& H$ _8 p 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
" I% w6 ^$ I/ L/ y4 e! O我故意把5拿掉的,是想测试下i值不连续的情况。

/ E) `; ~2 e, p/ O0 |有跳號處理就參考5#的解決方法
 楼主| 发表于 2014-3-11 12:02:48 | 显示全部楼层 来自: 中国吉林长春
程序运行正常!非常感谢ryouss的无私帮助!
+ m3 b1 @" n9 Q5 F+ Q% X9 M; d' ^我在想,如果写个宏,一次只输入一条曲线。然后再用另一宏循环调用它,这样也许可以解决文件数太多时,容易死机的情况。下午有空试试。! F3 A" K1 E- N# ^
另外,再试试使用InsertCurveFile函数。
" R% A& d8 h2 j3 n+ A8 v9 J% a再次感谢ryouss!!
发表于 2014-3-11 14:30:38 | 显示全部楼层 来自: 中国浙江嘉兴
1~500 約跑12分鐘
6 c! H: v  c- K/ W% v# ^# \' R+ o+ z: h9 Q& ^# }6 G
capture_03112014_142755.jpg
 楼主| 发表于 2014-3-15 10:20:56 | 显示全部楼层 来自: 中国吉林长春
本帖最后由 bj-alex 于 2014-3-15 17:32 编辑
" O' p1 i0 _& V+ L& Z2 E4 \
ryouss 发表于 2014-3-11 14:30 static/image/common/back.gif9 H: D( x& F, v1 z/ {
1~500 約跑12分鐘
) _$ b& c/ I$ U4 s, ~
我现在已经将数据都导入了,形成了曲线,非常感谢您的指导。) r. W4 ^; ~8 C' |
另一个问题来了,这只是一层的数据,我还有很多层同样的数据。现在需要在对应位置的曲线,在垂直方向上连接成曲面,就是形成一个垂直的圆柱面。我用放样曲面,再选中两层的两个曲线,形成不了曲面啊。
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分钟。但是,无法编辑曲线。
8 f  x  t, \. r! M/ w用3D草图导入txt文档,虽然耗时,但是可以编辑曲线。4 \/ G+ c  s" B
另:3D草图导入的曲线,无法使用放样曲面。$ Z% r# g- C! ]: ^
txt.jpg
发表于 2014-3-15 20:40:45 | 显示全部楼层 来自: 中国浙江嘉兴
本帖最后由 ryouss 于 2014-3-15 20:42 编辑 : y* z; A9 _+ Q6 }
bj-alex 发表于 2014-3-15 17:17 static/image/common/back.gif/ d3 w9 R& F; [0 ^3 K
在原来程序之上修改,用insertcurvefile函数导入800个txt文档,只需要3分钟。但是,无法编辑曲线。) Q8 F" v: A8 v
用3D草 ...
6 z6 G& {: G* I" Y1 L
生成的草圖是能夠做放樣曲面,, J- G0 \: W+ l8 W& i2 b
應該是第一層和第二層的點沒對應吧9 e+ f! E( y* T" {1 N  R
" ]6 G/ @! Q3 }8 d, l) p9 `
Clipboard01.jpg
. D5 j6 i- w# s& [" V; F
5 ~; f- b  a5 d4 S2 m3 N, K3D草圖5是你提供的第6檔,3D草圖10是依據第6檔做對應點的放樣曲線,因點有對應就可以做出放樣拉伸曲面.
7 H9 T8 |: z& }  W capture-1.gif
 楼主| 发表于 2014-3-18 14:44:45 | 显示全部楼层 来自: 中国吉林长春
ryouss 发表于 2014-3-15 20:40 static/image/common/back.gif/ R. H: G* R" @5 g/ Q
生成的草圖是能夠做放樣曲面,
0 o. S2 S# \$ O. I! F應該是第一層和第二層的點沒對應吧

! O5 G. W4 I- `/ j9 O/ T! V如果是两个同心圆呢?只是一个大,一个小,却没有一个对应点,这样也做不了放样曲面?
+ }  w0 K! B' V1 o3 E' s- l2 C除了这种办法,还有没有其他方法,生成曲面?
发表于 2019-10-20 19:21:57 | 显示全部楼层 来自: 中国福建福州
两位好强,解决了我遇到的问题
发表于 2020-7-8 22:47:10 | 显示全部楼层 来自: 中国四川成都
两位高手非常强,我非常佩服,在你们宏文件的指导下,我依葫芦画瓢做了“宏”,批量做出了31条沿齿高方向的齿面曲线(31条曲线曲面放样是面齿轮的齿面,齿高方向就是沿坐标的Z轴方向。31条曲线的坐标点是在Excel里用VBA"宏"算的)。见下面几张图
9 w. `( ]& g9 [% s9 Z, C
) F: @; t2 V) [" |, Q: E  }& F- E9 R3 d8 k9 L8 Q2 n9 f8 h
" F$ D, |' E& y% O# w% G- h3 [% q, v
9 t6 W, `6 I5 s( L* _* P; o1 R2 d
面齿轮全貌
) V# i- I1 U, b$ i* t6 P$ ^+ _1 L% O0 Y" X1 g- l% C

( ]. s/ l" T7 _9 q" O7 j. _" t面齿轮与直齿啮合
: z6 Q5 F$ ~2 n  ], M0 l# o( D
# m. b* j" f6 c- I. f9 G- _2 p+ |# R7 C# i
现在,制造方采用数控机床按曲面加工面齿轮的齿面,要求有沿齿向的曲线坐标点,见下图8 ^2 l4 U& L/ q* Q/ O3 K

* j4 d0 K9 s4 q9 X% q
  ~0 |0 |) l$ `% }+ x, Y. a& r: L# t1 x; M. M. W" s

& R& r$ d  K. n. w/ G6 o5 }
1 o$ ^4 L& N( ^. Z1 }8 }
发表于 2020-7-8 22:49:30 | 显示全部楼层 来自: 中国四川成都
怎么图片都没传上来?重新再传
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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