乐筑天下

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

求救:Pline的存储方式?

[复制链接]

12

主题

15

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
63
发表于 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对象????
回复

使用道具 举报

25

主题

134

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
234
发表于 2005-1-5 16:21:00 | 显示全部楼层
1、通过其Coordinates属性可以得到各个点的坐标
2、Dim PLPoint() As Double
                                 Redim PLPoint(1 to 2*n) As Double
回复

使用道具 举报

3

主题

17

帖子

1

银币

初来乍到

Rank: 1

铜币
29
发表于 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
这个程序就解决你的问题了
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-16 21:58 , Processed in 3.167760 second(s), 58 queries .

© 2020-2025 乐筑天下

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