mikewolf2k 发表于 2016-4-27 09:32:44

画线部分呢?这段是从txt文件中读数据,跟图毫无关系。

馨馨 发表于 2016-4-27 09:36:35

mikewolf2k 发表于 2016-4-27 09:32 static/image/common/back.gif
画线部分呢?这段是从txt文件中读数据,跟图毫无关系。

这是划线部分Sub aa()
    Dim plineObj As AcadLWPolyline
    Dim points(0 To 11) As Double
    'dim M as integer'行数
    'dim N as integer   '列数
    ' 定义多段线的点
    points(0) = Xmin: points(1) = Ymin: points(2) = 0
    points(3) = Xmin: points(4) = Ymax: points(5) = 0
    points(6) = Xmax: points(7) = Ymax: points(8) = 0
    points(9) = Xmax: points(10) = Ymin: points(11) = 0
    '在模型空间中创建一个多段线对象
    Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)
    ZoomAll
End Sub

mikewolf2k 发表于 2016-4-27 10:58:16

馨馨 发表于 2016-4-27 09:36 static/image/common/back.gif
这是划线部分

这是划线,但是是在0,0,0位置上画了一个框。这个跟前面取点程序毫不相关。

馨馨 发表于 2016-4-27 14:04:41

mikewolf2k 发表于 2016-4-27 10:58 static/image/common/back.gif
这是划线,但是是在0,0,0位置上画了一个框。这个跟前面取点程序毫不相关。

对啊,我画出的框确实从从起点画的,那怎么改才行呢,求大神帮忙改正

mikewolf2k 发表于 2016-4-27 14:51:10

把aa里面的代码放到取点程序最后面。

馨馨 发表于 2016-4-27 15:51:29

mikewolf2k 发表于 2016-4-27 14:51 static/image/common/back.gif
把aa里面的代码放到取点程序最后面。

这是我重新写的,就是想用这些点的最大最小值做一个方格网,但还是不对,不知道错在哪里Dim L As Integer
Dim H(10000) As Double, X(10000) As Double, Y(10000) As Double, Z(10000) As Double
Dim Xmax As Double, Xmin As Double, Ymax As Double, Ymin As Double
Sub txt_read()
Dim txtname As String
Dim L As Integer
Dim plineObj As AcadLWPolyline
Dim points(0 To 11) As Double
Dim M As Integer'行数
Dim N As Integer'列数
Dim Dx As Double'每个网格x值
Dim Dy As Double'每个网格y值
' 定义多段线的点
   
    L = 0 '初始值
    Open "E:\demdata.txt" For Input As #1'打开文件
    Xmax = X(0): Xmin = X(0)
    Ymax = Y(0): Ymin = Y(0)
    Do While Not EOF(1) '文件读取循环
    If X(L) >= Xmax Then
    Xmax = X(L)
    End If
    If Y(L) >= Ymax Then
    Ymax = Y(L)
    End If
    If X(L) <= Xmin Then
    Xmin = X(L)
    End If
    If Y(L) <= Ymin Then
    Ymin = Y(L)
    End If
    L = L + 1 '个数加1
    Input #1, H(L), X(L), Y(L), Z(L) '读取文件数据, H贮存点序号,XYZ为坐标
    Loop '文件读取循环
    Close #1 '关闭文件
   
    Dx = 14.5
    Dy = 15.6
    M = (Xmax - Xmin) / Dx '求出行数
    N = (Ymax - Ymin) / Dy '求出列数
    points(0) = Xmin: points(1) = Ymin: points(2) = 0
    points(3) = Xmin: points(4) = Ymax: points(5) = 0
    points(6) = Xmax: points(7) = Ymax: points(8) = 0
    points(9) = Xmax: points(10) = Ymin: points(11) = 0
    '在模型空间中创建一个多段线对象
    Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)
    ZoomAll
End Sub

mikewolf2k 发表于 2016-4-27 16:08:51

楼主还是从基本功开始学吧,抄来的代码都不会调试。

馨馨 发表于 2016-4-27 18:36:58

我虽然是刚学,但是这是自己写的,还有一部分照老师说的改的,为什么说我抄的,你有能力帮我你可以说,不想帮我我也不会强求,为什么把话说的那么难听呢

馨馨 发表于 2016-4-27 18:42:52

bbkcylh 发表于 2016-4-27 06:09 static/image/common/back.gif
说的不清楚,是画一个外框,还是规则格网?

这是我自己写的代码,想要做一个规则格网,不知道怎么才能画出方格,求指导Dim L As Integer
Dim H(10000) As Double, X(10000) As Double, Y(10000) As Double, Z(10000) As Double
Dim Xmax As Double, Xmin As Double, Ymax As Double, Ymin As Double
Sub txt_read()
Dim txtname As String
Dim L As Integer
Dim plineObj As AcadLWPolyline
Dim points(0 To 11) As Double
Dim M As Integer'行数
Dim N As Integer'列数
Dim Dx As Double'每个网格x值
Dim Dy As Double'每个网格y值
' 定义多段线的点
   
    L = 0 '初始值
    Open "E:\demdata.txt" For Input As #1'打开文件
    Xmax = X(0): Xmin = X(0)
    Ymax = Y(0): Ymin = Y(0)
    Do While Not EOF(1) '文件读取循环
    If X(L) >= Xmax Then
    Xmax = X(L)
    End If
    If Y(L) >= Ymax Then
    Ymax = Y(L)
    End If
    If X(L) <= Xmin Then
    Xmin = X(L)
    End If
    If Y(L) <= Ymin Then
    Ymin = Y(L)
    End If
    L = L + 1 '个数加1
    Input #1, H(L), X(L), Y(L), Z(L) '读取文件数据, H贮存点序号,XYZ为坐标
    Loop '文件读取循环
    Close #1 '关闭文件
   
    Dx = 14.5
    Dy = 15.6
    M = (Xmax - Xmin) / Dx '求出行数
    N = (Ymax - Ymin) / Dy '求出列数
    points(0) = Xmin: points(1) = Ymin: points(2) = 0
    points(3) = Xmin: points(4) = Ymax: points(5) = 0
    points(6) = Xmax: points(7) = Ymax: points(8) = 0
    points(9) = Xmax: points(10) = Ymin: points(11) = 0
    '在模型空间中创建一个多段线对象
    Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)
    ZoomAll
End Sub

vbcad 发表于 2016-4-27 21:38:30

多段线坐标是二维的,不是三维。
p(0)=x1
P(1)=y1
p(2)=x2
p(3)=y2
.....

我想,你的代码也许不能得到正确结果。
页: 1 [2] 3
查看完整版本: VBA编程