QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
同一台电脑运行,别人写的程序也没有专门写地址语句、文件保存类型,但是别人的宏能直接生成dxf文件。我写的程序结果保存在我的文档里,而且生成的是不带后缀的文件,手动加后缀或者写成Open "新建文本文档.dxf" For Output As #1。- w! B  H2 N/ r: I; u1 e
PS:生成的文件是没有问题的。结果老是存在我的文档里这个还没解决。
发表于 2020-1-30 09:03:11 | 显示全部楼层 来自: 中国北京
本帖最后由 woaishuijia 于 2020-1-31 04:24 编辑 # s1 w  n+ u/ e) Y
& X1 N) }( M, g# c
结合你另外一个帖子“”,我好像明白你的意思了。2 w( m, f; P# e  P
那个帖子里的Print #语句后面的文件号用的是1,这是有问题的。按照VB的语法规则,这个文件号是一个1~511的正整数,应该是由电脑自动生成。你这个直接使用1的情况,除非电脑只打开了一个文档,否则文件号1被其它文档占用,就出错了。只能先手动创建文档,再执行程序,我在那个帖子里的回复就是这样子的(那个回复为了简短,没有讨论编程技巧),为了保证程序顺利运行,要求先创建文档。
: x$ P9 L+ W8 X: K- S8 i把那个主程序和子程序的代码改一下
" s, C1 M6 P+ D
  1. Dim FileNumber As Integer, r" d0 b! n1 V5 e% f. g- J+ y

  2. " T0 h+ f4 D, {( z7 q; J9 U
  3. Sub A()$ J' O) v  H8 E; g6 v6 n& `% ]7 l5 Z
  4.     FileNumber = FreeFile()
      h/ ~0 U9 Z# _- {. @9 @# R
  5.     Open "c:\1.dxf" For Output As #FileNumber- A5 G7 F5 F" Y- ^4 H7 m
  6.     Print #FileNumber, 0
    9 ~4 F% `  c* w9 E4 V' ?
  7.     Print #FileNumber, "SECTION"
    ) a9 t6 T0 u3 J
  8.     Print #FileNumber, 2
    ; g- T7 _" f# V  w% s, N# J
  9.     Print #FileNumber, "ENTITIES"# {$ M! @9 u5 n! m6 m
  10.     Print #FileNumber, 0
    ) R2 D4 J$ O! B1 X
  11.     DxfLine 0, 0, 100, 100, 1, "Continuous"" |  d, c* ^8 @5 {% z
  12.     Print #FileNumber, "ENDSEC"
    7 _2 t% g1 L# m: j
  13.     Print #FileNumber, 08 S7 B+ _  K( a, \9 w
  14.     Print #FileNumber, "EOF"
    9 M6 m. y( c  y4 f4 z" L
  15.     Close #FileNumber1 p! G2 h" S4 t+ }/ g
  16. End Sub
    - ]5 ~) `/ V, r9 Z7 y6 [2 G1 R

  17. 2 N% r( S4 b8 X; X8 f2 L) f
  18. Sub DxfLine(xs#, ys#, xe#, ye#, cl%, Optional Typ$)9 ^4 C0 @, @' s  r. h' N: {; s
  19.     Print #FileNumber, "LINE"
    ; w4 T) j7 K4 j5 q4 M; Q
  20.     Print #FileNumber, 8
    " l- R. V; ~5 k2 R0 J! X
  21.     Print #FileNumber, "0"
    & L9 J; M9 ?) M9 l4 ^
  22.     If Typ <> "" Then: U1 E6 z2 a+ o
  23.        Print #FileNumber, 6+ m" u6 c/ r, I- h
  24.        Print #FileNumber, Typ5 C, N# d% X4 F2 B
  25.     End If5 p; I" H0 x$ r1 ?
  26.     Print #FileNumber, 62
    + d/ @$ I& j5 q3 D, F
  27.     Print #FileNumber, cl9 f5 N. n# Q  o* P2 n% N. v
  28.     Print #FileNumber, 10
    0 B" D, `; c+ ?1 _3 L2 m9 E# A
  29.     Print #FileNumber, xs
    5 W9 h! j# |3 D# T
  30.     Print #FileNumber, 203 l7 F5 i5 a" }7 j* r9 u
  31.     Print #FileNumber, ys
    : Z- Q, {0 c# ~& Q7 `
  32.     Print #FileNumber, 30
    & B1 c' _( r5 p. n
  33.     Print #FileNumber, 0#+ g% Q, A! T3 d/ a* P) F$ n
  34.     Print #FileNumber, 117 C: M1 {2 W6 q
  35.     Print #FileNumber, xe
    3 W: t6 ^4 D$ P' d8 A8 e
  36.     Print #FileNumber, 21
    5 g. D, j6 U5 N$ {! \7 `8 H: g: \
  37.     Print #FileNumber, ye8 L/ a/ J% T: m5 ?# Q
  38.     Print #FileNumber, 319 P/ T+ N# W4 X) t
  39.     Print #FileNumber, 0#: N% E1 o' ?3 V3 T
  40.     Print #FileNumber, 0
    $ n2 w7 a: |7 O& c1 P' l5 D
  41. End Sub
    , ^# _: O. W7 J! ?/ G4 z
复制代码
代码中第一行是在通用声明区声明一个名为 FileNumber 的整型全局变量,用于保存文件号1 U4 ]  H- ]1 v5 x: D
第四行用 FreeFile 函数获得可用的文件号,后面的代码都使用这个文件号,包括子程序中的Print #语句,这也是使用全局变量的原因
7 n2 M& q( S, G第十八行,子程序的参数中的前四个都使用了显式类型声明字符“#”,表明这是Double 数据类型;第六个参数使用了Optional 关键字,表明这后面的参数是可选的:在调用子程序时,如果线形是“BYLAYER”,则不必带这个参数。如果不用这个关键字,在调用子程序时,就必须有这个参数,尽管它可能是空字符串。3 |0 y8 z$ e/ h* L$ B2 B9 B
第二十、二十三、二十六、二十八、三十、三十二、三十四、三十六、三十八和四十行,都去掉了双引号和空格,这里没必要使用字符串类型,用整型就可以2 M3 S% Y8 G+ O
第二十二、二十四行去掉了变量后面的显式类型声明字符“$”,没必要(已经在在第十八行的参数列表中声明了)。同理,第二十七行去掉了双引号及其内部空格及逗号,去掉了变量后面的显式类型声明字符“%”,没必要" \9 Z! j0 `* i" H4 G$ Y( i9 w
第三十三、三十九行把"0.00"改成了0#
& H4 F" V( h* G7 C6 i4 l7 T: h去掉了原子程序中的
  1. Label:
    1 h' e( [) O1 {: o; j
  2.      Exit Sub
复制代码

评分

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

查看全部评分

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

本版积分规则


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

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

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