QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 bj-alex 于 2014-3-10 22:12 编辑 4 |$ _; X: Z$ s. M, X" D, A$ i

% T, W1 g- Y9 t! R我有大量的曲线坐标以文本方式保存,每条曲线一个文本文件,现需要将曲线导入。参考坛子里各位大神的方法,写了个自动输入的宏。调试也没发现错误,但是就是曲线显示不了?还望各位高手指点。& q, s$ T5 ]+ z/ e7 K
Sub main()
9 k9 N& E* a0 z! D! g6 A Dim swApp As Object3 ~. D9 a& ?" e0 ~
Dim Part As Object
2 D0 L) H7 C+ e$ [# x- X Dim boolstatus As Boolean
6 B$ [$ y; D5 R' Z: t8 _) L. t Dim longstatus As Long, longwarnings As Long( e4 e& |9 ?# _
# G: y0 ~; i; d9 A

2 Q( J  A6 f) g# V- M8 H Set swApp =  Application.SldWorks) D5 g1 S9 @  G) J% V- [  Q

% w2 ]5 {- d" ?% G4 z  {1 |2 i: | Set Part = swApp.ActiveDoc
0 N' p$ W7 I" s; B! y1 T  ?3 g( M+ x( w5 {( Z( m! E8 ]. o& K
Dim f As String, folder As String
4 [5 }+ @' a  r! g9 V& ~3 \  d1 [ folder = "E:\F\CU\Feb2014\5mm\01\"
" [; c( }8 n$ {% H f = Dir(folder & "*.txt")- X( l6 {4 u6 N: M7 p  I
While f > ""
8 X5 C" H# I. N Dim x, y, z As Double 1 S3 x# w; w7 \, S# e) N
Dim n As Integer   0 m- y4 K. e$ O1 D. u4 Q1 Y
Part.InsertCurveFileBegin
9 u$ J9 b' X9 ^7 ?( U Open folder & f For Input As #1
0 R* q0 t4 P* N# ]  k/ R$ p  h     n = 01 m; \8 q4 G% z7 t7 Y$ T
     Do While Not EOF(1)
! K& {3 Q6 K# g) K) }( @( D* c' J          Input #1, x& T+ N& Q2 I0 }
          If EOF(1) Then
% C( \' X  J7 [" `/ t          Exit Sub
% X' G* V) O) I# p2 v$ n, B          End If
+ G2 q  Z, Y; U          Input #1, y
$ y% L# K/ X: ^; b9 f9 ?" N. Q9 l          If EOF(1) Then
$ ~, {% |9 {& v: _' f# i$ g          Exit Sub
: `) j! D1 n. ]6 {  b/ ~          End If
* n' P- E- x9 x$ u- w          Input #1, z$ T! X8 Y" g: l: K2 n
          n = n + 1
% X( Q9 y$ O7 {        Part.InsertCurveFilePoint x, y, z
8 H0 r6 E& ]3 D. |( A! ]* J" |     Loop
! i* @% N7 E: Y+ W( x: J    Part.InsertCurveFileEnd
+ S# B7 Q, M7 K Close #1    3 z; D, n, H/ I. C$ Y* r: t
    f = Dir5 M7 ^3 t; m4 C  m4 Q  D
Wend
8 K* Z5 A3 |6 x# P, Y. @) UEnd 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/ W  q  _5 H! `1 i
还请高手指点啊,这个问题困扰我好久了

, A6 k, i/ o5 Y2 k# u1. TXT檔用連續不跳號之數字取名稱如 1.txt,2.txt ....,就可以配合  For Next 之 i 值,抓取全部的 TXT 檔.! Q( ~4 C, H* j
2. 把 全部的 TXT 檔 置放在須要的文件路徑下.
6 p; }0 k4 c: a& Z1 H# C3. 先開SW的零件檔,執行如下宏,會在零件檔新插入3D草圖作出全部的 TXT 放樣曲線圖.$ D, `9 c  I+ @. i: n: e4 V+ g
4. 附檔是兩個測試檔 1.txt,2.txt 可以試看.
1 b& o6 z: {) ~: E/ T
& Z5 Y# s1 q* R/ r( R" |! J1 Q7 }# P測試圖
+ }8 C' _. x2 i  I. @- m# E3 H. x capture-29.gif ; |4 d1 ^  w5 u# t+ L; @; c. y9 _
Sub main()* S: t1 D3 ~9 V4 n0 o' n
Dim swApp As Object7 ]  `; n& B5 t$ Q# n
Dim Part As Object0 y( a& X3 `9 Y# P
Dim boolstatus As Boolean0 Z% z% E) E3 L% P. I& a
Dim longstatus As Long, longwarnings As Long! L% i. p3 C& K1 n/ s5 S
Dim SketchMgr                 As Object. T4 S! b% U4 s0 D* I
Dim pointArray As Variant
/ B4 U" a# v2 L$ QDim points() As Double' @( j, L- [2 I2 T& J$ R  L
On Error Resume Next' q8 X  j1 f8 z
Set swApp = Application.SldWorks; v0 r" G+ B* s( R3 q8 d( N3 o
Set Part = swApp.ActiveDoc; i* M) _2 K" `( @, |
For i = 1 To 2/ H( i+ I6 E$ n9 b
    Dim f As String, folder As String
2 l3 [& D+ v; }  |: I# L5 M    folder = "E:\F\CU\Feb2014\5mm\01\": s) \# O; C  Q8 v4 o7 u
    f = Dir(folder & i & "*.txt")1 @" p, P# e7 z6 c
    While f > ""
/ c/ y; y; }/ `    Dim x, y, z As Double
- G; ~- p  E# C3 Y    Dim s+ o6 o0 x) U' q% L2 F) i" t, X! m
    Dim n As Integer8 I1 O  O# [5 t' V
    Open folder & f For Input As #1  V- B. D+ ]. c  F8 S: }9 h1 L
    n = 0
! U# ?$ J- B2 }; `/ I: o# `2 _    Do While Not EOF(1)
# g. c* V% K* u7 `8 N4 M         Line Input #1, s
) {* Z+ E' U7 L         n = n + 1
- ?$ f$ m. h6 R5 L' r    Loop; W' N5 h- e  q" I
    Close #1
; c' d0 Z8 c# C2 u; J    Open folder & f For Input As #13 l1 }7 ~) ~$ O" a" O
    Set SketchMgr = Part.SketchManager
8 j1 v/ L) f0 ?0 l. g4 F6 y0 h    SketchMgr.Insert3DSketch True* p8 a1 J4 J- n- q0 B0 ]" T8 h
    ReDim points(1 To n * 3) As Double6 f. L5 y6 S& J- ^- b# o( C
    n = 0% T& v' p  I: O; j) c2 ~
    Do While Not EOF(1)
9 h2 @' V) n' c! B- C# Z         Input #1, x
+ ]. m( v: g2 X7 w  e- Q0 `9 \% D         points(n + 1) = x / 1000+ F( x% g" N! R
         If EOF(1) Then6 X, c& Z% t, l2 k! m4 `2 D( F
         Exit Sub
* ^+ @4 x0 G$ @! ?4 W         End If( ~2 A+ o0 A& |; A$ \
         Input #1, y& i( Y: k! d+ {/ [1 `
         points(n + 2) = y / 10001 j9 \$ @; p! X$ l  c
         If EOF(1) Then
: W/ g1 T8 z, ~         Exit Sub
4 A5 u6 A2 U6 O. n- J5 ?         End If1 H6 f2 Q0 [' b* x: B: F: [
         Input #1, z
' f9 ^, a* h8 b# F         points(n + 3) = z / 1000. {. \: z3 Q: i
         n = n + 3
; r( M3 c: o5 ?    Loop
6 d3 j% M8 Y; s6 M    Close #1
% O) I7 @$ o7 K1 q+ W    f = Dir
( F4 U/ M3 ^& Z% e1 ~    Wend
/ _9 M( @6 F  G- y2 e- R    pointArray = points& I; H9 d) a7 {/ V
    Set skSegment = Part.SketchManager.CreateSpline((pointArray))" Z( \0 j6 G9 H0 A, ~. N$ z! M7 U
    boolstatus = Part.EditRebuild3()
; Y) p- S( S5 TNext
+ @; X1 M$ m: T9 m$ `End Sub
& {' ~: m2 i7 o/ q. I$ O2 N' P
: m/ ^% ?4 h* d  @5 c 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 编辑
* M/ X4 y7 @/ N% r0 V6 ]0 I! H
  _. ~/ d+ U2 m0 S沒試不知道
; _8 e- x! ?- [: M! e7 Z試看再說了,有問題再讨论.9 L  y8 q! B$ [0 I0 W
若有跳號要繼續執行就在  6 f# c6 j# k  t8 L
While f > "" 之上,插入 If f = "" Then GoTo aa7 O) v0 O% K  Z9 a8 O2 A
boolstatus = Part.EditRebuild3() 之上,插入 aa:* Z+ I6 t# G# Y( X4 `
# @+ }! f7 U$ |- L/ `  X. c: p% M
' i1 H+ x! s+ T. ]  H1 I0 O3 F

评分

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

查看全部评分

 楼主| 发表于 2014-3-11 10:35:03 | 显示全部楼层 来自: 中国吉林长春
http://C:\\Users\\Alex Wang\\Desktop\\01
6 v5 O6 z$ F- F( n# L程序执行之后,显示的有草图,有3D草图,检查数据也没问题。
 楼主| 发表于 2014-3-11 10:36:34 | 显示全部楼层 来自: 中国吉林长春
贴图失败
发表于 2014-3-11 10:43:23 | 显示全部楼层 来自: 中国浙江嘉兴
本帖最后由 ryouss 于 2014-3-11 10:47 编辑 2 l6 x' v+ I8 O! X( ^' r$ f# ^( {
bj-alex 发表于 2014-3-11 10:35 static/image/common/back.gif
  J* |8 j' T# g3 E6 W3 o9 c7 p6 x程序执行之后,显示的有草图,有3D草图,检查数据也没问题。
% z# f. h6 n/ X- }( I2 E
显示的有草图,是前3d草圖作完沒跳出3d草圖的編輯狀態,就繼續作第2個文件.
9 x8 M3 x9 g3 a0 g- ^正常是作完3d草圖用  boolstatus = Part.EditRebuild3() 重新計算 跳出3d草圖的編輯狀態.
3 X+ u$ A4 m4 D0 h! |是用3#附檔文件測試的嗎
$ `# \! n1 G3 a" D' ~9 Y4 l. ~. |$ I: O3 Y0 |9 W: s

评分

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

查看全部评分

 楼主| 发表于 2014-3-11 10:50:50 | 显示全部楼层 来自: 中国吉林长春
是用3#附件测试的。这么说,还是两次循环之间时间间隔太短。我可以把比一般文件大的多的挑出来,再试试。或者,加个延时。
发表于 2014-3-11 10:59:31 | 显示全部楼层 来自: 中国浙江嘉兴
本帖最后由 ryouss 于 2014-3-11 11:00 编辑 . Q+ E# v: G4 O" M6 d
bj-alex 发表于 2014-3-11 10:50 static/image/common/back.gif
4 Z( }6 F0 p' g# E: f是用3#附件测试的。这么说,还是两次循环之间时间间隔太短。我可以把比一般文件大的多的挑出来,再试试。或 ...
3#附件,我測試是正常
6 X" N, X# `" N/ I* C0 m1 r* k在 boolstatus = Part.EditRebuild3()  之下, 補上如下作緩沖看看
$ w5 D& k" }4 D5 l9 S5 A2 ]! S2 ~Dim myModelView As Object
1 w8 v& x2 g; I. ySet myModelView = Part.ActiveView
& F& D8 r/ K/ N+ }myModelView.RotateAboutCenter 0, 0
% {" D7 @  E4 B

评分

参与人数 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. B4 |. Z: h9 ]# Z
还是不行,我用附件中的数据测试的。您试试?我一次之选了10个文件。
3 D7 _4 p6 V- U) k+ J5 }, p
如下有誤& `- @& R+ w6 O: ?
f = Dir(folder & i & "*.txt")$ T1 c4 D: R& W- T  C/ ]% G6 p
把  *.txt  改為  .txt (拿掉  * )" y- w, e, j% k2 g+ e
另來檔沒 5.txt
/ y2 o! {3 q' `  A6 a- t
2 X  |( T6 y) k測試正常
  p5 X  l  z' }/ u4 F' w0 B' `* m 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.gif3 H5 }7 u0 e  l/ _: l, t
我故意把5拿掉的,是想测试下i值不连续的情况。

, F% O: d) w8 R% F. \, n有跳號處理就參考5#的解決方法
 楼主| 发表于 2014-3-11 12:02:48 | 显示全部楼层 来自: 中国吉林长春
程序运行正常!非常感谢ryouss的无私帮助!
$ q% L6 K/ y$ F: B我在想,如果写个宏,一次只输入一条曲线。然后再用另一宏循环调用它,这样也许可以解决文件数太多时,容易死机的情况。下午有空试试。
  K3 g' E& i- ]另外,再试试使用InsertCurveFile函数。( k5 n3 B& [* S3 F
再次感谢ryouss!!
发表于 2014-3-11 14:30:38 | 显示全部楼层 来自: 中国浙江嘉兴
1~500 約跑12分鐘
/ ^  A! u) t- |! w# h) ^9 r9 L! N) T4 x3 X
capture_03112014_142755.jpg
 楼主| 发表于 2014-3-15 10:20:56 | 显示全部楼层 来自: 中国吉林长春
本帖最后由 bj-alex 于 2014-3-15 17:32 编辑
6 h4 `4 W" Y; p" f4 K
ryouss 发表于 2014-3-11 14:30 static/image/common/back.gif" X9 e4 O2 F. o2 D
1~500 約跑12分鐘

1 ~$ \7 I; T$ m% ^7 o8 }$ p2 e我现在已经将数据都导入了,形成了曲线,非常感谢您的指导。- i0 \0 Q2 `7 ^! Q9 r9 [  ?+ _: 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分钟。但是,无法编辑曲线。4 K% W( t" Z- T$ a0 G" I, M( y4 i
用3D草图导入txt文档,虽然耗时,但是可以编辑曲线。# A4 B, ~! J1 f7 R& X" U0 j
另:3D草图导入的曲线,无法使用放样曲面。: N$ z! k8 r1 x3 j
txt.jpg
发表于 2014-3-15 20:40:45 | 显示全部楼层 来自: 中国浙江嘉兴
本帖最后由 ryouss 于 2014-3-15 20:42 编辑 6 v" a, y5 @# `9 u& J, G( m
bj-alex 发表于 2014-3-15 17:17 static/image/common/back.gif
/ P% f2 ?: v7 [1 L; K在原来程序之上修改,用insertcurvefile函数导入800个txt文档,只需要3分钟。但是,无法编辑曲线。
8 o& s/ [6 ~& s& d6 X! m( f8 W用3D草 ...

; z/ |: `" w6 |/ o  i9 K生成的草圖是能夠做放樣曲面,7 ~3 @& b+ }# A# |- |  a5 i
應該是第一層和第二層的點沒對應吧
# Y$ A5 p1 g7 T% A9 d0 E  F4 h0 D# }* c9 `" Y! h* C- T
Clipboard01.jpg . \3 b7 k- [8 C

! ^- ]6 M9 d2 F( p8 y' _  p" H$ I/ ?3D草圖5是你提供的第6檔,3D草圖10是依據第6檔做對應點的放樣曲線,因點有對應就可以做出放樣拉伸曲面.
9 }8 ^5 A4 F" D+ Y1 C7 Z. ^ capture-1.gif
 楼主| 发表于 2014-3-18 14:44:45 | 显示全部楼层 来自: 中国吉林长春
ryouss 发表于 2014-3-15 20:40 static/image/common/back.gif
$ F! K- z9 f/ R$ f; ^生成的草圖是能夠做放樣曲面,
% c; o$ R8 O6 D! j2 \應該是第一層和第二層的點沒對應吧

1 E3 [) M4 R+ n' c如果是两个同心圆呢?只是一个大,一个小,却没有一个对应点,这样也做不了放样曲面?7 Q( A8 Z* B" D: O0 N1 }2 g
除了这种办法,还有没有其他方法,生成曲面?
发表于 2019-10-20 19:21:57 | 显示全部楼层 来自: 中国福建福州
两位好强,解决了我遇到的问题
发表于 2020-7-8 22:47:10 | 显示全部楼层 来自: 中国四川成都
两位高手非常强,我非常佩服,在你们宏文件的指导下,我依葫芦画瓢做了“宏”,批量做出了31条沿齿高方向的齿面曲线(31条曲线曲面放样是面齿轮的齿面,齿高方向就是沿坐标的Z轴方向。31条曲线的坐标点是在Excel里用VBA"宏"算的)。见下面几张图- j& c  q1 ^! [

) @& E# |9 R: p5 J4 P% D3 d3 ?# w& t6 @/ d( H  n# q* x0 e& D

. N2 @# G* d. y' D% |* G
3 |8 L/ w4 G' s- I面齿轮全貌7 I- t. ^8 H) O: J- W5 t

; H8 o! z) a8 ^" C3 V7 {3 L: n6 N0 t* P0 g+ X* v$ J
面齿轮与直齿啮合( ]8 y( q7 x3 m1 Z0 Z8 P" ^) i) [
0 [, w" e0 j; D+ _* i) I3 I

8 B7 P' X2 v1 o4 T7 ^! A6 i) b现在,制造方采用数控机床按曲面加工面齿轮的齿面,要求有沿齿向的曲线坐标点,见下图& c! H. \* B: @1 ~- r! U! I( ]! i

0 t2 r) j; t( `8 x& t5 m/ P6 F
5 b) F3 n! t5 y, L8 z- ~( G1 i9 v
: u% ~$ h; k- x% e  K( |7 b% R# O* [! `
* \& O' S" ?$ {3 v2 e
发表于 2020-7-8 22:49:30 | 显示全部楼层 来自: 中国四川成都
怎么图片都没传上来?重新再传
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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