乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 104|回复: 13

[编程交流] VBA读取文件

[复制链接]

15

主题

41

帖子

26

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-6 14:45:54 | 显示全部楼层 |阅读模式
有人能帮我写这个代码吗。此代码在读取文件时停止。。。它认为这是一个逻辑错误,但我不能解决它。。。谢谢
  1. Public Sub Plot_Click()
  2. Me.Hide
  3. Dim strFileName As String
  4. Dim myFile As Integer
  5. Dim strTextLine As String
  6. Dim arrText As Variant
  7. Dim dblX As Variant
  8. Dim dblY As Variant
  9. Dim dblZ As Variant
  10. strFileName = mstrinpfile
  11.    
  12.    If Dir(strFileName) = "" Then
  13.    Call MsgBox(strFileName & " not found", vbExclamation, "Import XYZ Coordinates")
  14.    
  15.    End If
  16.    
  17. 'add parameter
  18. ThisDrawing.SendCommand "PDMODE" & vbCr
  19. ThisDrawing.SendCommand "0" & vbCr
  20. ThisDrawing.SendCommand "PDsize" & vbCr
  21. ThisDrawing.SendCommand "0" & vbCr
  22. ThisDrawing.SendCommand "CMDECHO" & vbCr
  23. ThisDrawing.SendCommand "0" & vbCr
  24. ThisDrawing.SendCommand "-Style" & vbCr
  25. ThisDrawing.SendCommand "WMH" & vbCr
  26. ThisDrawing.SendCommand "Romans" & vbCr
  27. ThisDrawing.SendCommand "0" & vbCr
  28. ThisDrawing.SendCommand "0.75" & vbCr
  29. ThisDrawing.SendCommand "15" & vbCr
  30. ThisDrawing.SendCommand "N" & vbCr
  31. ThisDrawing.SendCommand "N" & vbCr
  32. ThisDrawing.SendCommand "N" & vbCr
  33. ThisDrawing.SendCommand "-Units" & vbCr
  34. ThisDrawing.SendCommand "2" & vbCr
  35. ThisDrawing.SendCommand "3" & vbCr
  36. ThisDrawing.SendCommand "2" & vbCr
  37. ThisDrawing.SendCommand "4" & vbCr
  38. ThisDrawing.SendCommand "90" & vbCr
  39. ThisDrawing.SendCommand "Y" & vbCr
  40. ThisDrawing.SendCommand "-Layer" & vbCr
  41. ThisDrawing.SendCommand "Make" & vbCr
  42. ThisDrawing.SendCommand "WMH_PDEPTH" & vbCr
  43. myFile = FreeFile
  44. Open mstrinpfile For Input As #myFile
  45.    Do While Not EOF(myFile)
  46.    Line Input #myFile, strTextLine
  47.    arrText = Split(strTextLine, ",")
  48.    
  49.    dblX = arrText(0)
  50.    dblY = arrText(1)
  51.    dblZ = arrText(2)
  52.    
  53.             
  54. If (Val(dblZ) >= Val(mintlv1)) Then
  55. ThisDrawing.SendCommand "-color" & vbCr
  56. ThisDrawing.SendCommand "BYLAYER" & vbCr
  57. ThisDrawing.SendCommand "point" & vbCr
  58. ThisDrawing.SendCommand dblY & "," & dblX & "," & dblZ & vbCr
  59. ThisDrawing.SendCommand "-Layer" & vbCr
  60. ThisDrawing.SendCommand "Make" & vbCr
  61. ThisDrawing.SendCommand "WMH_BDEPTH" & vbCr
  62. ThisDrawing.SendCommand "" & vbCr
  63. ThisDrawing.SendCommand "-color" & vbCr
  64. ThisDrawing.SendCommand Val(cl1) & vbCr
  65. ThisDrawing.SendCommand "-Text" & vbCr
  66. ThisDrawing.SendCommand "R" & vbCr
  67. ThisDrawing.SendCommand dblY & "," & dblX & "," & dblZ & vbCr
  68. ThisDrawing.SendCommand "2.0" & vbCr
  69. ThisDrawing.SendCommand "90" & vbCr
  70. ThisDrawing.SendCommand Left(dblZ, 2) & vbCr
  71. ThisDrawing.SendCommand "-Layer" & vbCr
  72. ThisDrawing.SendCommand "Make" & vbCr
  73. ThisDrawing.SendCommand "WMH_SDEPTH" & vbCr
  74. ThisDrawing.SendCommand "" & vbCr
  75. ThisDrawing.SendCommand "-Text" & vbCr
  76. ThisDrawing.SendCommand "ML" & vbCr
  77. ThisDrawing.SendCommand dblY & "," & dblX & "," & dblZ & vbCr
  78. ThisDrawing.SendCommand "1.5" & vbCr
  79. ThisDrawing.SendCommand "90" & vbCr
  80. ThisDrawing.SendCommand Right(dblZ, 1) & vbCr
  81. ThisDrawing.SendCommand "zoom" & vbCr
  82. ThisDrawing.SendCommand "extents" & vbCr
  83. ElseIf (Val(dblZ) >= Val(mintlv2)) Then
  84. ThisDrawing.SendCommand "-color" & vbCr
  85. ThisDrawing.SendCommand "BYLAYER" & vbCr
  86. ThisDrawing.SendCommand "point" & vbCr
  87. ThisDrawing.SendCommand dblY & "," & dblX & "," & dblZ & vbCr
  88. ThisDrawing.SendCommand "-Layer" & vbCr
  89. ThisDrawing.SendCommand "Make" & vbCr
  90. ThisDrawing.SendCommand "WMH_BDEPTH" & vbCr
  91. ThisDrawing.SendCommand "" & vbCr
  92. ThisDrawing.SendCommand "-color" & vbCr
  93. ThisDrawing.SendCommand Val(cl1) & vbCr
  94. ThisDrawing.SendCommand "-Text" & vbCr
  95. ThisDrawing.SendCommand "R" & vbCr
  96. ThisDrawing.SendCommand dblY & "," & dblX & "," & dblZ & vbCr
  97. ThisDrawing.SendCommand "2.0" & vbCr
  98. ThisDrawing.SendCommand "90" & vbCr
  99. ThisDrawing.SendCommand Left(dblZ, 2) & vbCr
  100. ThisDrawing.SendCommand "-Layer" & vbCr
  101. ThisDrawing.SendCommand "Make" & vbCr
  102. ThisDrawing.SendCommand "WMH_SDEPTH" & vbCr
  103. ThisDrawing.SendCommand "" & vbCr
  104. ThisDrawing.SendCommand "-Text" & vbCr
  105. ThisDrawing.SendCommand "ML" & vbCr
  106. ThisDrawing.SendCommand dblY & "," & dblX & "," & dblZ & vbCr
  107. ThisDrawing.SendCommand "1.5" & vbCr
  108. ThisDrawing.SendCommand "90" & vbCr
  109. ThisDrawing.SendCommand Right(dblZ, 1) & vbCr
  110. ThisDrawing.SendCommand "zoom" & vbCr
  111. ThisDrawing.SendCommand "extents" & vbCr
  112. Else
  113. MsgBox "Error!!!!! Fail to Plot", 48, "HydroLab"
  114. End
  115. End If
  116. Loop
  117. ThisDrawing.SendCommand "zoom" & vbCr
  118. ThisDrawing.SendCommand "extents" & vbCr
  119. Close #myFile 'close file
  120. MsgBox "Plot Coordinates Completed"
  121. Me.Show
  122. End Sub
回复

使用道具 举报

0

主题

252

帖子

290

银币

限制会员

铜币
-8
发表于 2022-7-6 14:50:51 | 显示全部楼层
首先,我会去掉所有那些send命令,因为这可能就是问题所在。Send命令不会等到Autocad完成其操作后再继续下一步,因此您可能不同步
回复

使用道具 举报

15

主题

41

帖子

26

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-6 14:59:00 | 显示全部楼层
我已经试过了,但它不起作用。。。你能帮我做这个吗。。
回复

使用道具 举报

0

主题

252

帖子

290

银币

限制会员

铜币
-8
发表于 2022-7-6 15:02:41 | 显示全部楼层
从这张图开始。SetVariable设置变量
回复

使用道具 举报

15

主题

41

帖子

26

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-6 15:08:49 | 显示全部楼层
谢谢你。。。。
回复

使用道具 举报

0

主题

252

帖子

290

银币

限制会员

铜币
-8
发表于 2022-7-6 15:09:50 | 显示全部楼层
我看到的另一个错误是它看起来不像lilke,你在这里以外的地方声明了你的文件
  1. strFileName = mstrinpfile
回复

使用道具 举报

15

主题

41

帖子

26

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-6 15:16:20 | 显示全部楼层
我已经在下面声明了option explicit。。但它似乎不执行if。。。如果没有控制结构,我如何克服这个问题。。谢谢
回复

使用道具 举报

10

主题

973

帖子

909

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 15:19:48 | 显示全部楼层
这是一种使用VBA与图形数据库直接交互的方法。
 
警告:该示例进行了修改,仅处理您的一部分流程需求。您必须将例程修改为所需的规格。
 
如CmdrDuh所述,调查该图纸。SetVariable,
 
如果您对这些修改有任何问题,请与我们联系。
 
[code]选项明确约束pi为Double=3.14159265子命令按钮20\u Click()Dim strFileName为StringDim myFile为IntegerDim outfile为StringDim strTextLine为StringDim arrText为VariantDim point为AcadPointDim cllyr为AcadLayerDim strName为StringDim acText为AcadTextDim dblPt(2)为DoubleDim mintlv1为DoubleDim mintlv2为DoubleDim strTemp为Stringmintlv1=-8#'tempassignmentmintlv2=-10#'临时assignmentSet cllyr=ThisDrawing。层。添加(“WMH_PDEPTH”)cllyr。color=acGreenSet cllyr=ThisDrawing。层。添加(“WMH_BDEPTH”)cllyr。color=acBlueSet cllyr=ThisDrawing。层。添加(“WMH_SDEPTH”)cllyr。颜色=与此图纸一致。实用程序strFileName=“C:\Hydro.txt”'temp assignment'On Error GoTo ErrorHandlerPoint If Dir(strFileName)=“”,然后调用MsgBox(strFileName&“not found”,vb惊叹,“Import XYZ Coordinates”)退出Sub'GoTo TidyUpAndExit End If myFile=FreeFile打开strFileName作为输入#myFile Do,而不是EOF(myFile)行输入#myFile,strTextLine arrText=Split(strTextLine,“,”)dblPt(0)=。DistanceToReal(arrText(0),acDecimal)dblPt(1)=。DistanceToReal(arrText(1),acDecimal)dblPt(2)=。DistanceToReal(arrText(2),acDecimal)选择Case dblPt(2)Case Is mintlv2 Set point=此图形。模型空间。添加点(dblPt)点。Layer=“WMH\u PDEPTH”strTemp=Left(arrText(2),2)设置acText=ThisDrawing。模型空间。AddText(左(arrText(2),2),dblPt,2#)acText。对齐=acAlignmentRight acText。旋转=pi/2 acText。Layer=“WMH\u BDEPTH”acText。text对齐点=dblPt acText。更新strTemp=Right(arrText(2),2)设置acText=ThisDrawing。模型空间。AddText(右(arrText(2),2),dblPt,1.5)acText。对齐=ACAlignmentMiddleft acText。旋转=pi/2 acText。Layer=“WMH\U SDEPTH”acText。text对齐点=dblPt acText。更新案例为
回复

使用道具 举报

15

主题

41

帖子

26

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-6 15:26:51 | 显示全部楼层
我试着根据颜色对图层进行分类。。。我做了修改,但不起作用。
[code]公共子图_单击()我。HideDim strFileName As StringDim myFile As IntegerDim strTextLine As StringDim dblX As DoubleDim dblY As DoubleDim dblZ As DoubleDim arrText As VariantDim point As AcadPointDim cllyr As AcadLayerDim strName As StringDim acText As AcadTextDim dblPt(0到2)As DoubleDim strTemp As StringWith this drawing。UtilitystrFileName=mstrinpfile“On Error GoTo ErrorHandlerPoint If Dir(strFileName)=”然后调用MsgBox(strFileName&“not found”,vb惊叹,“Import XYZ Coordinates”)'GoTo TidyUpAndExit End IfmyFile=freefile打开strFileName作为输入#myFile Do,而不是EOF(myFile)行输入#myFile,strextline arrText=Split(strextline,“,”)dblPt(0)=。DistanceToReal(arrText(0),acDecimal)dblPt(1)=。DistanceToReal(arrText(1),acDecimal)dblPt(2)=。DistanceToReal(arrText(2),acDecimal)选择Case dblPt(2)Case Is
回复

使用道具 举报

1

主题

3

帖子

2

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 15:28:01 | 显示全部楼层
在哪里可以学习VB
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-4 22:30 , Processed in 0.708175 second(s), 83 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表