ebigsong 发表于 2005-1-5 15:33:00

求救:Pline的存储方式?

小弟想变个程序,其中要利用PLine线,想了解一下:
CAD中PLine是怎么存储的?是利用数组记录各点的坐标么?比如PL(x1,y1,x2,y2……xn,yn)?如果我想把CAD中的PL线导入到VB中,如何读取CAD中PL的各点坐标信息?
另外,我在VB中自建立一种类型变量,想用一个n(整型)作为PL线所包含的点数,数组PLPoint(1 to 2*n)记录各点坐标,可是在定义类型时,好象不允许用变长数组,所以想求教一下!!
      其实就是如何在VB中自建立一个变量类型,可以存储CAD中的PLine对象????

yulijin608 发表于 2005-1-5 16:21:00

1、通过其Coordinates属性可以得到各个点的坐标
2、Dim PLPoint() As Double
                                 Redim PLPoint(1 to 2*n) As Double

chman 发表于 2005-4-2 17:13:00

Sub tt()                '本程序的作用是选择一个pline线。然后用mline线重新绘制(原pline保留)
               'mline 对正样式是“无”都设置好了,直接调用即可                       
                       Dim px(200) As Double                                                                                                        '处理N个点(不定)
                       Dim py(200) As Double
                       'Dim center(211) As Double
                       Dim ent As Object
                       ' let the user select a block.
                       '
                       If (flgPickNested = True) Then
                                                       Debug.Print "错误"
                                                       Exit Sub
                       Else
                                                       Dim pt As Variant
                                                       ThisDrawing.Utility.GetEntity ent, pt
                       End If
       
                       var = ent.Coordinates
                                               retCoord = ent.Coordinates
                                               k = (UBound(retCoord) + 1) / 2                                                                                                                                                                       '记录pline顶点个数
                                                       For i = 0 To UBound(retCoord) Step 2
                                                                                       px(i / 2) = retCoord(i)
                                                                                       py(i / 2) = retCoord(i)
                                                       Next i
                                                       ReDim center(2 * (k - 1) + 1) As Double
                                                       
                                                       For i = 0 To k - 1
                                                                                       center(i) = px(i)
                                                                                       center(i + 1) = py(i)
                                                                                       'center(i + 2) = 0
                                                                                       MsgBox center(i) & " =" & center(i + 1)
                                                       Next i
                                                       Dim lll As AcadMLine
                                                       
                                               Set lll = ThisDrawing.ModelSpace.AddMLine(center)
                                               ZoomAll
                       
End Sub
这个程序就解决你的问题了
页: [1]
查看完整版本: 求救:Pline的存储方式?