明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1467|回复: 2

求救:Pline的存储方式?

[复制链接]
发表于 2005-1-5 15:33:00 | 显示全部楼层 |阅读模式
小弟想变个程序,其中要利用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对象????

发表于 2005-1-5 16:21:00 | 显示全部楼层
1、通过其Coordinates属性可以得到各个点的坐标


2、Dim PLPoint() As Double


                                 Redim PLPoint(1 to 2*n) As Double
发表于 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 这个程序就解决你的问题了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-27 18:40 , Processed in 0.175890 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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