QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 5335|回复: 1
收起左侧

[求助] 请教件事,Open "新建文本文档" For Output As #1成果输出位置怎么固定?

[复制链接]
发表于 2020-1-23 23:02:26 | 显示全部楼层 |阅读模式 来自: 中国江苏镇江
安装
主题分类用于问题归类:

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

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

x
同一台电脑运行,别人写的程序也没有专门写地址语句、文件保存类型,但是别人的宏能直接生成dxf文件。我写的程序结果保存在我的文档里,而且生成的是不带后缀的文件,手动加后缀或者写成Open "新建文本文档.dxf" For Output As #1。" p: Q( c2 T6 P  ~
PS:生成的文件是没有问题的。结果老是存在我的文档里这个还没解决。
发表于 2020-1-30 09:03:11 | 显示全部楼层 来自: 中国北京
本帖最后由 woaishuijia 于 2020-1-31 04:24 编辑
9 z  k# p/ G- ]: F
/ G' P% g. Q# X; N) f5 c# V结合你另外一个帖子“”,我好像明白你的意思了。
6 y. X! P1 R! S8 K: x: g) C# z& y那个帖子里的Print #语句后面的文件号用的是1,这是有问题的。按照VB的语法规则,这个文件号是一个1~511的正整数,应该是由电脑自动生成。你这个直接使用1的情况,除非电脑只打开了一个文档,否则文件号1被其它文档占用,就出错了。只能先手动创建文档,再执行程序,我在那个帖子里的回复就是这样子的(那个回复为了简短,没有讨论编程技巧),为了保证程序顺利运行,要求先创建文档。6 s5 p+ W1 L4 G, V
把那个主程序和子程序的代码改一下7 v5 A" E% h( P
  1. Dim FileNumber As Integer6 e  t9 Z2 q& ^% O8 b  _
  2. - c0 o) X* S6 K4 x4 }" }1 y
  3. Sub A()
    : M5 H) m& c' `8 i
  4.     FileNumber = FreeFile()5 k; G; G: {: v9 y5 e# c
  5.     Open "c:\1.dxf" For Output As #FileNumber0 [( v* P% `) T* t9 Z
  6.     Print #FileNumber, 0
    % g5 Q- i( P( l, T4 J
  7.     Print #FileNumber, "SECTION"
    7 C3 A/ ~4 @3 O' t( l
  8.     Print #FileNumber, 2
    4 G, e1 P% f  T4 D. c
  9.     Print #FileNumber, "ENTITIES"
    0 y0 E6 [8 v( E7 [; J
  10.     Print #FileNumber, 0
    ) c0 i, l2 j! c* r
  11.     DxfLine 0, 0, 100, 100, 1, "Continuous"6 @* b& J; x* r: m5 i
  12.     Print #FileNumber, "ENDSEC"- ]. X3 L: G: s
  13.     Print #FileNumber, 05 K& G) P2 z  U1 s
  14.     Print #FileNumber, "EOF") H' f* O4 w6 z* l0 q
  15.     Close #FileNumber( r% i$ `  x4 Z/ O7 S
  16. End Sub6 \# {( }2 n2 Q9 c. e( F. D
  17. * ~+ l% P5 }3 R' H- |- X& t3 J4 l
  18. Sub DxfLine(xs#, ys#, xe#, ye#, cl%, Optional Typ$)
    ' Y# y8 A' A# }, ?. Q- u3 W. {4 ]
  19.     Print #FileNumber, "LINE"! h  ]% {6 J6 V; n" n4 N
  20.     Print #FileNumber, 8
    6 b* D& a- E* \, m- Y1 R3 m
  21.     Print #FileNumber, "0"$ i6 a5 X: z$ i* K: P
  22.     If Typ <> "" Then, e% A6 |" G* ?. R
  23.        Print #FileNumber, 6  B- A9 X" K" @# m* X
  24.        Print #FileNumber, Typ
    9 C% L0 U- o9 A( R6 n
  25.     End If
    ! Y2 h1 w+ C# h' G$ G+ z- D
  26.     Print #FileNumber, 62
    ( F; H9 c5 y) |' q
  27.     Print #FileNumber, cl
    4 i6 L  n$ }% V6 y# e
  28.     Print #FileNumber, 10! z* d, p9 k+ o# u. S6 b, Q
  29.     Print #FileNumber, xs% _9 ?" m# B* Z2 F  }  C3 ]3 d
  30.     Print #FileNumber, 20
    ! {: ^! m1 a% m( x' j  S6 q
  31.     Print #FileNumber, ys
    ( |7 u3 p/ x2 n
  32.     Print #FileNumber, 30
    2 v% z5 N4 t" A" k
  33.     Print #FileNumber, 0#0 k5 E6 O7 Y  t: K1 K( l
  34.     Print #FileNumber, 115 X# S& B; q% A7 K+ i7 M
  35.     Print #FileNumber, xe0 e! P( i1 Y6 D! r
  36.     Print #FileNumber, 21+ i& u6 F( W3 J2 c
  37.     Print #FileNumber, ye
    ' @' E# f  |& g$ d. T% k3 S
  38.     Print #FileNumber, 31
    6 ?2 v" ?- U+ a
  39.     Print #FileNumber, 0#6 Z& u) U+ v9 e
  40.     Print #FileNumber, 0
    ) w4 ?) T) H& G" w+ n
  41. End Sub- R2 F, `: U* ~% X: o9 {8 z4 \; J
复制代码
代码中第一行是在通用声明区声明一个名为 FileNumber 的整型全局变量,用于保存文件号
+ X2 c1 v. W) A3 n- f3 K第四行用 FreeFile 函数获得可用的文件号,后面的代码都使用这个文件号,包括子程序中的Print #语句,这也是使用全局变量的原因
' O& @9 E- t- j4 ]( g0 |第十八行,子程序的参数中的前四个都使用了显式类型声明字符“#”,表明这是Double 数据类型;第六个参数使用了Optional 关键字,表明这后面的参数是可选的:在调用子程序时,如果线形是“BYLAYER”,则不必带这个参数。如果不用这个关键字,在调用子程序时,就必须有这个参数,尽管它可能是空字符串。
0 m! C5 \6 o/ P第二十、二十三、二十六、二十八、三十、三十二、三十四、三十六、三十八和四十行,都去掉了双引号和空格,这里没必要使用字符串类型,用整型就可以8 {# a0 D- h# Y$ X! w
第二十二、二十四行去掉了变量后面的显式类型声明字符“$”,没必要(已经在在第十八行的参数列表中声明了)。同理,第二十七行去掉了双引号及其内部空格及逗号,去掉了变量后面的显式类型声明字符“%”,没必要, y3 O' T! |" O
第三十三、三十九行把"0.00"改成了0#
1 X  n$ [! c1 v3 l0 o# N* b去掉了原子程序中的
  1. Label:# P! P# w# ~( d! M) k
  2.      Exit Sub
复制代码

评分

参与人数 1三维币 +20 收起 理由
kuangben8 + 20 感谢您解答了求助的问题。

查看全部评分

发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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