QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
本帖最后由 bj-alex 于 2014-3-10 22:12 编辑 0 B1 T4 E2 b  Y0 \* U" P# G

% U4 d( S% o% p0 O# i我有大量的曲线坐标以文本方式保存,每条曲线一个文本文件,现需要将曲线导入。参考坛子里各位大神的方法,写了个自动输入的宏。调试也没发现错误,但是就是曲线显示不了?还望各位高手指点。
) L. r: X4 `& \: f3 B8 W5 C. FSub main()' s+ S" c8 G/ q3 c3 N+ R
Dim swApp As Object; l$ M+ a; _( u3 o6 q1 P6 O
Dim Part As Object$ T# z2 l! e1 o4 G  @+ j. t% u
Dim boolstatus As Boolean9 V! G% A; f8 E" Q* F8 ?3 F
Dim longstatus As Long, longwarnings As Long
! f9 c+ D$ F% E7 n. O5 L
  {9 e" {1 J5 f0 d6 Q9 F
# h/ _/ z5 t8 i& J0 ^" Y Set swApp =  Application.SldWorks, J* c6 t6 J- `5 Y' T' N# R" _: s  Y% G9 g

) F+ q7 q) R8 Q0 D* O. p# F Set Part = swApp.ActiveDoc& w8 \" ?. N# R9 J" M* `- ~3 k

/ c* z3 v9 k9 x  X2 A% | Dim f As String, folder As String; O0 n$ e# m2 Z& m  Y% K' N+ l
folder = "E:\F\CU\Feb2014\5mm\01\"
: z2 S8 k! X+ q8 Y f = Dir(folder & "*.txt")$ R  V( \3 K% `6 ?( ]
While f > ""
2 B* l& ?: ^! Z2 W7 b Dim x, y, z As Double 6 i9 l6 Z( ^. c5 M% V" {) Y
Dim n As Integer   . l: q# q8 p6 g5 r3 g
Part.InsertCurveFileBegin* W$ p% L: |* w* K2 ?
Open folder & f For Input As #1
0 W, h8 F5 s( {9 _' p' n7 ?% Z     n = 0
' W% a2 T# M; Y     Do While Not EOF(1)
; Z2 \/ G' q- \# e1 ~          Input #1, x; n" w& h8 r% p$ i" ?( e
          If EOF(1) Then
* J( V, t& {8 `: B4 T          Exit Sub
! F% p5 D4 h: M          End If. W# C* y8 W2 V& Q% b
          Input #1, y
, n3 \: U( }7 [  |$ G# x  I          If EOF(1) Then
- d  }0 J& I2 L. b% |          Exit Sub( `; v9 t  q- B6 @  M
          End If
5 a$ b* Z2 r" N4 y; t5 Z  l          Input #1, z
; v; ~7 Z( G* t% \/ s( s          n = n + 1
: X0 a3 f4 a( L( p( B5 `8 j; M        Part.InsertCurveFilePoint x, y, z2 ]8 R4 C2 K) b% l  t6 }( V
     Loop+ `+ k3 p: h/ x# m1 J" P# ]& J
    Part.InsertCurveFileEnd! |2 H7 [5 U  F1 Y* p8 ^: }5 {5 A& l
Close #1      u' m& T* ?. s; K! A
    f = Dir) a. f/ {& L# \4 I
Wend( v4 |9 i5 v1 F0 o# E& k$ l  Z) Q* ~
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/ y8 M% D; |: y* @' B8 q  z7 q: M+ v
还请高手指点啊,这个问题困扰我好久了

  W1 d4 s" y1 v- @. h- N1. TXT檔用連續不跳號之數字取名稱如 1.txt,2.txt ....,就可以配合  For Next 之 i 值,抓取全部的 TXT 檔.3 B9 [& R" D1 ~, O: a
2. 把 全部的 TXT 檔 置放在須要的文件路徑下.
6 }6 x2 w! B7 D6 ?) o3. 先開SW的零件檔,執行如下宏,會在零件檔新插入3D草圖作出全部的 TXT 放樣曲線圖.# A! e( z# d7 t1 M- p
4. 附檔是兩個測試檔 1.txt,2.txt 可以試看.
% a9 Y4 Y9 g5 i5 v+ }0 I0 Y; O* x! I0 n8 `; E6 c% w
測試圖
! j) y& c/ `# O1 i capture-29.gif 0 L% a0 V7 d5 s& l5 h2 \
Sub main()
# Y( A4 N' u: g, q) }  `+ J1 J; {Dim swApp As Object% Z: z; o) K" @! t; E0 v( ?- ^
Dim Part As Object
8 g9 {  X- f0 d4 ]7 LDim boolstatus As Boolean
* @2 [7 p& M( |+ D6 WDim longstatus As Long, longwarnings As Long
7 l7 W* c$ E2 m2 [4 b( `8 P* yDim SketchMgr                 As Object
7 Q: U  G$ u' b7 N- uDim pointArray As Variant
# T2 L9 t+ A/ |: ~, i6 V4 b# T( }Dim points() As Double3 v' q7 P( f; C1 Y9 D- {
On Error Resume Next
5 _- q0 c3 T5 y6 n9 O4 GSet swApp = Application.SldWorks
5 W" h3 p2 Z0 O: B$ O/ h: YSet Part = swApp.ActiveDoc! x5 ?: X: x+ v  E4 s4 p; j
For i = 1 To 2
$ L4 W4 R& }+ I4 G    Dim f As String, folder As String
$ K7 ?% [5 W' N6 Z. ]3 v3 a    folder = "E:\F\CU\Feb2014\5mm\01\"8 S; ?1 ?1 l$ \' Y. o( J. ^" a
    f = Dir(folder & i & "*.txt")! C5 ?* I/ l+ Z+ L& ]% @# }' I
    While f > ""
  M2 ~1 i" J  O" x# K% D    Dim x, y, z As Double+ H; P$ T* P& h0 l8 ?
    Dim s
2 j  y+ k9 k- \3 N    Dim n As Integer7 t4 K: J: p( Q: P4 [7 i
    Open folder & f For Input As #1  c$ m7 X0 D, |- f/ ?0 @% a
    n = 0; Q! T. f3 m: D! c1 I
    Do While Not EOF(1)
$ D& J  \. }- I: V/ x% F! E         Line Input #1, s! B3 P6 f5 n# R2 c8 u! Z
         n = n + 1
' ?1 W& E: @9 I; j4 {1 j    Loop4 C4 f( c3 \  [2 F: r
    Close #1
5 i" p! T3 N6 r3 Q# ]& k4 v    Open folder & f For Input As #1
) z+ ~9 r8 O" k5 ~7 o  F    Set SketchMgr = Part.SketchManager
: Y% r" F! M# w% k    SketchMgr.Insert3DSketch True* i' @# X7 T% [; v& L
    ReDim points(1 To n * 3) As Double0 b( `5 H2 m! S* w  w3 n* w2 [
    n = 0  }( b' ~( V( L; A  M
    Do While Not EOF(1). T% |6 H% f: s, m" `3 y# b0 o
         Input #1, x# T4 _, s% e9 j* l0 N0 L
         points(n + 1) = x / 1000
' a0 O% E. L! m, ?) G2 b         If EOF(1) Then
, J0 M3 R2 W2 d& G/ }         Exit Sub- }( B& w& Y: w* x2 m+ a
         End If$ w+ j% y- q+ h* n; @- Q
         Input #1, y
3 e0 |, u/ i" o. d         points(n + 2) = y / 1000( {1 @9 c0 G# T. K' |/ n
         If EOF(1) Then
1 u: k# @# X. Y, [$ l. q         Exit Sub
9 m$ a, G3 X! `+ O: L! f, Z3 r7 m, Z         End If4 N  d: B2 B* M0 C
         Input #1, z
/ q. D6 i, b  Y7 O# r         points(n + 3) = z / 1000/ g, c0 L4 K- O1 g8 g7 W9 s
         n = n + 3
3 o- |8 T" a5 v; f    Loop
3 V" C& N- a, K8 }0 v6 i    Close #1
* ?" ]1 n" G, U& X( V$ p    f = Dir3 ~$ ^) M8 f$ d$ p" K/ y9 Z
    Wend
2 e! f/ ^4 _5 O2 Z, O    pointArray = points
+ \$ f- K* g4 I    Set skSegment = Part.SketchManager.CreateSpline((pointArray))* i7 Y( g# h: {
    boolstatus = Part.EditRebuild3()
, o5 d# s: S/ m; gNext
' S  }: w7 v* x+ x  g! dEnd Sub
- x. j' e# ~# `6 v4 E. `
0 r8 k8 r- N/ c2 W* 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 编辑
& E2 ?/ o, f, j; O7 s* H0 I7 t7 U
% a' w6 X1 x' f3 Q- f) A/ K/ a沒試不知道
3 K) C5 K6 R, P! k2 l8 W試看再說了,有問題再讨论.  T/ L. M1 e0 M2 t
若有跳號要繼續執行就在  % ^! H9 `2 }% W( e$ V# Y
While f > "" 之上,插入 If f = "" Then GoTo aa
4 b: L" d/ z3 G& c& ~boolstatus = Part.EditRebuild3() 之上,插入 aa:
0 X  A+ y! W9 E* U+ y2 D) S9 I2 W& k

+ y  [  w/ ~  A0 ]: @2 [, Z  O3 F

评分

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

查看全部评分

 楼主| 发表于 2014-3-11 10:35:03 | 显示全部楼层 来自: 中国吉林长春
http://C:\\Users\\Alex Wang\\Desktop\\018 O# J" q& |. v
程序执行之后,显示的有草图,有3D草图,检查数据也没问题。
 楼主| 发表于 2014-3-11 10:36:34 | 显示全部楼层 来自: 中国吉林长春
贴图失败
发表于 2014-3-11 10:43:23 | 显示全部楼层 来自: 中国浙江嘉兴
本帖最后由 ryouss 于 2014-3-11 10:47 编辑
( o+ j/ `5 U, u! k' t8 H" E8 u
bj-alex 发表于 2014-3-11 10:35 static/image/common/back.gif- g' d/ z. a8 h0 ]) r* z$ R
程序执行之后,显示的有草图,有3D草图,检查数据也没问题。

7 C7 a4 f/ I( d9 ^5 G显示的有草图,是前3d草圖作完沒跳出3d草圖的編輯狀態,就繼續作第2個文件.
) N5 e' ~. U" Y2 Y! I正常是作完3d草圖用  boolstatus = Part.EditRebuild3() 重新計算 跳出3d草圖的編輯狀態.
. P# S. u$ f& W1 q$ n5 S是用3#附檔文件測試的嗎
- ]9 `0 e# W$ f$ |' u& ~  G+ t. v  M( F5 {/ S

评分

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

查看全部评分

 楼主| 发表于 2014-3-11 10:50:50 | 显示全部楼层 来自: 中国吉林长春
是用3#附件测试的。这么说,还是两次循环之间时间间隔太短。我可以把比一般文件大的多的挑出来,再试试。或者,加个延时。
发表于 2014-3-11 10:59:31 | 显示全部楼层 来自: 中国浙江嘉兴
本帖最后由 ryouss 于 2014-3-11 11:00 编辑
2 d$ d  g1 e, }% b
bj-alex 发表于 2014-3-11 10:50 static/image/common/back.gif% ~) ]& U4 [; F3 [' a2 Z. Y
是用3#附件测试的。这么说,还是两次循环之间时间间隔太短。我可以把比一般文件大的多的挑出来,再试试。或 ...
3#附件,我測試是正常3 t1 p# D1 t* u" L9 Y8 T
在 boolstatus = Part.EditRebuild3()  之下, 補上如下作緩沖看看
  [: k5 B2 U1 |Dim myModelView As Object' J, j0 f& c) s, k
Set myModelView = Part.ActiveView
: o6 x# |3 ?2 |; Z) n8 J9 v- XmyModelView.RotateAboutCenter 0, 0
  _: e0 n6 \2 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
5 P, r( R( z4 L9 f/ B: p, _还是不行,我用附件中的数据测试的。您试试?我一次之选了10个文件。

/ u7 C$ `3 b7 Z6 E如下有誤
9 r& }  w+ h9 c8 a% L6 k/ X0 _! qf = Dir(folder & i & "*.txt")9 J2 w- ?8 Y, q
把  *.txt  改為  .txt (拿掉  * )2 {# `: ^9 a. x( `
另來檔沒 5.txt- r9 @% b4 ]; L- h5 X

1 g! K9 E% u# U6 N( ^測試正常
1 |7 D; H9 ^, ]6 e  Q: \  a 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
' \# G$ `# w% y6 p" w) Y- [我故意把5拿掉的,是想测试下i值不连续的情况。
( D/ Y& z8 b, h) u7 b8 J: I3 y
有跳號處理就參考5#的解決方法
 楼主| 发表于 2014-3-11 12:02:48 | 显示全部楼层 来自: 中国吉林长春
程序运行正常!非常感谢ryouss的无私帮助!
, f. S+ [  Z) K# X6 N我在想,如果写个宏,一次只输入一条曲线。然后再用另一宏循环调用它,这样也许可以解决文件数太多时,容易死机的情况。下午有空试试。% J6 X; `8 |6 Y* e! L
另外,再试试使用InsertCurveFile函数。) i  Q' L. U' ?0 l
再次感谢ryouss!!
发表于 2014-3-11 14:30:38 | 显示全部楼层 来自: 中国浙江嘉兴
1~500 約跑12分鐘, A) Y% Q* T2 V! \

  s5 R1 {/ {2 d" ^, u capture_03112014_142755.jpg
 楼主| 发表于 2014-3-15 10:20:56 | 显示全部楼层 来自: 中国吉林长春
本帖最后由 bj-alex 于 2014-3-15 17:32 编辑
3 O2 ~/ j# R1 j0 g" j: T6 a3 S" |2 x
ryouss 发表于 2014-3-11 14:30 static/image/common/back.gif; J: N. ]; J2 H
1~500 約跑12分鐘
5 |+ F& E* a8 u5 H
我现在已经将数据都导入了,形成了曲线,非常感谢您的指导。
0 u3 v% N! {1 }: p9 u; 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分钟。但是,无法编辑曲线。9 f$ [5 E: s$ u9 i! k  M
用3D草图导入txt文档,虽然耗时,但是可以编辑曲线。
0 N) R, J7 ?9 u另:3D草图导入的曲线,无法使用放样曲面。5 q# q+ U! _" H- A3 _4 `# j
txt.jpg
发表于 2014-3-15 20:40:45 | 显示全部楼层 来自: 中国浙江嘉兴
本帖最后由 ryouss 于 2014-3-15 20:42 编辑 1 {0 ~2 |# ]* m. l% V" r% p6 I, T; w
bj-alex 发表于 2014-3-15 17:17 static/image/common/back.gif
  |4 Q% l9 h: g& Q. L* G7 ?在原来程序之上修改,用insertcurvefile函数导入800个txt文档,只需要3分钟。但是,无法编辑曲线。- e' ^( r- I8 n$ P
用3D草 ...
8 ?6 l" L. Z) K* f! j" J
生成的草圖是能夠做放樣曲面,
1 R5 G5 x3 }6 y( {) z應該是第一層和第二層的點沒對應吧
' s3 H- L7 P( `
* `3 l$ s4 _1 R6 W( m1 _ Clipboard01.jpg " D+ W2 H& s5 a! c* \

  m+ K" r( A% p* w+ `7 d) |0 E3 I3D草圖5是你提供的第6檔,3D草圖10是依據第6檔做對應點的放樣曲線,因點有對應就可以做出放樣拉伸曲面.
0 G' l2 h% ]: B8 f5 m capture-1.gif
 楼主| 发表于 2014-3-18 14:44:45 | 显示全部楼层 来自: 中国吉林长春
ryouss 发表于 2014-3-15 20:40 static/image/common/back.gif4 F& M5 j! d' i6 P- j
生成的草圖是能夠做放樣曲面,; ?3 @. K! X9 A/ }& R
應該是第一層和第二層的點沒對應吧

5 c% _$ {; R) l8 Y5 \) g如果是两个同心圆呢?只是一个大,一个小,却没有一个对应点,这样也做不了放样曲面?# G$ h) y9 l/ A: t7 t) ]7 \
除了这种办法,还有没有其他方法,生成曲面?
发表于 2019-10-20 19:21:57 | 显示全部楼层 来自: 中国福建福州
两位好强,解决了我遇到的问题
发表于 2020-7-8 22:47:10 | 显示全部楼层 来自: 中国四川成都
两位高手非常强,我非常佩服,在你们宏文件的指导下,我依葫芦画瓢做了“宏”,批量做出了31条沿齿高方向的齿面曲线(31条曲线曲面放样是面齿轮的齿面,齿高方向就是沿坐标的Z轴方向。31条曲线的坐标点是在Excel里用VBA"宏"算的)。见下面几张图
3 `; ?! E& P. h, N. q" F/ Y: k- ?8 Q

# o- a7 i% D$ @; E1 |' v6 K- X# D# {

# n/ Y9 ]3 _# S4 z面齿轮全貌
: e8 h* [* q6 v8 r) F% p% v+ u5 M3 n4 ^3 P" {
% y9 @6 E4 o% w
面齿轮与直齿啮合
2 S$ v9 T9 J. _- |
- |* L; V# ?) u" g" w5 ~: \: F: Q! Y4 q8 ]
现在,制造方采用数控机床按曲面加工面齿轮的齿面,要求有沿齿向的曲线坐标点,见下图7 ~- i1 Q3 K, s! D0 I* f
0 {" p+ w% a9 d( n
! Q" Q5 e3 Z! f' e

# K. G! A8 e8 j# s+ w
/ G5 W% l, Q4 |, z1 f* x& [2 d+ |; O! g5 ]* x1 a) e
发表于 2020-7-8 22:49:30 | 显示全部楼层 来自: 中国四川成都
怎么图片都没传上来?重新再传
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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