明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 馨馨

VBA编程

[复制链接]
发表于 2016-4-27 09:32 | 显示全部楼层
画线部分呢?这段是从txt文件中读数据,跟图毫无关系。
 楼主| 发表于 2016-4-27 09:36 | 显示全部楼层
mikewolf2k 发表于 2016-4-27 09:32
画线部分呢?这段是从txt文件中读数据,跟图毫无关系。

这是划线部分
  1. Sub aa()
  2.     Dim plineObj As AcadLWPolyline
  3.     Dim points(0 To 11) As Double
  4.     'dim M as integer  '行数
  5.     'dim N as integer   '列数
  6.     ' 定义多段线的点
  7.     points(0) = Xmin: points(1) = Ymin: points(2) = 0
  8.     points(3) = Xmin: points(4) = Ymax: points(5) = 0
  9.     points(6) = Xmax: points(7) = Ymax: points(8) = 0
  10.     points(9) = Xmax: points(10) = Ymin: points(11) = 0
  11.     '在模型空间中创建一个多段线对象
  12.     Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)
  13.     ZoomAll
  14. End Sub
发表于 2016-4-27 10:58 | 显示全部楼层
馨馨 发表于 2016-4-27 09:36
这是划线部分

这是划线,但是是在0,0,0位置上画了一个框。这个跟前面取点程序毫不相关。
 楼主| 发表于 2016-4-27 14:04 | 显示全部楼层
mikewolf2k 发表于 2016-4-27 10:58
这是划线,但是是在0,0,0位置上画了一个框。这个跟前面取点程序毫不相关。

对啊,我画出的框确实从从起点画的,那怎么改才行呢,求大神帮忙改正
发表于 2016-4-27 14:51 | 显示全部楼层
把aa里面的代码放到取点程序最后面。
 楼主| 发表于 2016-4-27 15:51 | 显示全部楼层
mikewolf2k 发表于 2016-4-27 14:51
把aa里面的代码放到取点程序最后面。

这是我重新写的,就是想用这些点的最大最小值做一个方格网,但还是不对,不知道错在哪里
  1. Dim L As Integer
  2. Dim H(10000) As Double, X(10000) As Double, Y(10000) As Double, Z(10000) As Double
  3. Dim Xmax As Double, Xmin As Double, Ymax As Double, Ymin As Double
  4. Sub txt_read()
  5. Dim txtname As String
  6. Dim L As Integer
  7. Dim plineObj As AcadLWPolyline
  8. Dim points(0 To 11) As Double
  9. Dim M As Integer  '行数
  10. Dim N As Integer  '列数
  11. Dim Dx As Double  '每个网格x值
  12. Dim Dy As Double  '每个网格y值
  13. ' 定义多段线的点
  14.    
  15.     L = 0 '初始值
  16.     Open "E:\demdata.txt" For Input As #1  '打开文件
  17.     Xmax = X(0): Xmin = X(0)
  18.     Ymax = Y(0): Ymin = Y(0)
  19.     Do While Not EOF(1) '文件读取循环
  20.     If X(L) >= Xmax Then
  21.     Xmax = X(L)
  22.     End If
  23.     If Y(L) >= Ymax Then
  24.     Ymax = Y(L)
  25.     End If
  26.     If X(L) <= Xmin Then
  27.     Xmin = X(L)
  28.     End If
  29.     If Y(L) <= Ymin Then
  30.     Ymin = Y(L)
  31.     End If
  32.     L = L + 1 '个数加1
  33.     Input #1, H(L), X(L), Y(L), Z(L) '读取文件数据, H贮存点序号,XYZ为坐标
  34.     Loop '文件读取循环
  35.     Close #1 '关闭文件
  36.    
  37.     Dx = 14.5
  38.     Dy = 15.6
  39.     M = (Xmax - Xmin) / Dx '求出行数
  40.     N = (Ymax - Ymin) / Dy '求出列数
  41.     points(0) = Xmin: points(1) = Ymin: points(2) = 0
  42.     points(3) = Xmin: points(4) = Ymax: points(5) = 0
  43.     points(6) = Xmax: points(7) = Ymax: points(8) = 0
  44.     points(9) = Xmax: points(10) = Ymin: points(11) = 0
  45.     '在模型空间中创建一个多段线对象
  46.     Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)
  47.     ZoomAll
  48. End Sub
发表于 2016-4-27 16:08 | 显示全部楼层
楼主还是从基本功开始学吧,抄来的代码都不会调试。
 楼主| 发表于 2016-4-27 18:36 | 显示全部楼层
我虽然是刚学,但是这是自己写的,还有一部分照老师说的改的,为什么说我抄的,你有能力帮我你可以说,不想帮我我也不会强求,为什么把话说的那么难听呢
 楼主| 发表于 2016-4-27 18:42 | 显示全部楼层
bbkcylh 发表于 2016-4-27 06:09
说的不清楚,是画一个外框,还是规则格网?

这是我自己写的代码,想要做一个规则格网,不知道怎么才能画出方格,求指导
  1. Dim L As Integer
  2. Dim H(10000) As Double, X(10000) As Double, Y(10000) As Double, Z(10000) As Double
  3. Dim Xmax As Double, Xmin As Double, Ymax As Double, Ymin As Double
  4. Sub txt_read()
  5. Dim txtname As String
  6. Dim L As Integer
  7. Dim plineObj As AcadLWPolyline
  8. Dim points(0 To 11) As Double
  9. Dim M As Integer  '行数
  10. Dim N As Integer  '列数
  11. Dim Dx As Double  '每个网格x值
  12. Dim Dy As Double  '每个网格y值
  13. ' 定义多段线的点
  14.    
  15.     L = 0 '初始值
  16.     Open "E:\demdata.txt" For Input As #1  '打开文件
  17.     Xmax = X(0): Xmin = X(0)
  18.     Ymax = Y(0): Ymin = Y(0)
  19.     Do While Not EOF(1) '文件读取循环
  20.     If X(L) >= Xmax Then
  21.     Xmax = X(L)
  22.     End If
  23.     If Y(L) >= Ymax Then
  24.     Ymax = Y(L)
  25.     End If
  26.     If X(L) <= Xmin Then
  27.     Xmin = X(L)
  28.     End If
  29.     If Y(L) <= Ymin Then
  30.     Ymin = Y(L)
  31.     End If
  32.     L = L + 1 '个数加1
  33.     Input #1, H(L), X(L), Y(L), Z(L) '读取文件数据, H贮存点序号,XYZ为坐标
  34.     Loop '文件读取循环
  35.     Close #1 '关闭文件
  36.    
  37.     Dx = 14.5
  38.     Dy = 15.6
  39.     M = (Xmax - Xmin) / Dx '求出行数
  40.     N = (Ymax - Ymin) / Dy '求出列数
  41.     points(0) = Xmin: points(1) = Ymin: points(2) = 0
  42.     points(3) = Xmin: points(4) = Ymax: points(5) = 0
  43.     points(6) = Xmax: points(7) = Ymax: points(8) = 0
  44.     points(9) = Xmax: points(10) = Ymin: points(11) = 0
  45.     '在模型空间中创建一个多段线对象
  46.     Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)
  47.     ZoomAll
  48. End Sub
发表于 2016-4-27 21:38 | 显示全部楼层
多段线坐标是二维的,不是三维。
p(0)=x1
P(1)=y1
p(2)=x2
p(3)=y2
.....

我想,你的代码也许不能得到正确结果。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-26 21:44 , Processed in 0.195856 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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