明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 450|回复: 3

求助!如何在选择集中得到单行文本对象插入点坐标?

[复制链接]
发表于 2022-2-24 10:00 | 显示全部楼层 |阅读模式
我初学VBA,在cad2014的vba编辑器中编了一个过程,计划实现的功能是从屏幕中选择单文本对象和多线段对象到选择集中,再在选择集中遍历所有对象,找到多线段对象和单文本对象,在单文本对象中提取文字内容和坐标,但出现问题如下:

明明看到ent.InsertionPoint有三个坐标值,但使用ent.InsertionPoint(0)为什么不能取到X坐标值?
代码如下:

Public Sub GetAreaAndName()
'得到多线段的面积和文本对象内部的文字和坐标
'新建选择集
Dim ssetObj As AcadSelectionSet
Set ssetObj = ThisDrawing.SelectionSets.Add("aaz")

'从屏幕中选择文本对象和多线段对象
Dim ftype(0 To 3) As Integer
Dim fdata(0 To 3) As Variant
ftype(0) = -4: fdata(0) = "<OR"
ftype(1) = 0: fdata(1) = "TEXT" '"text" '
ftype(2) = 0: fdata(2) = "LWPOLYLINE" ' "polyline" '
ftype(3) = -4: fdata(3) = "OR>"

Dim nPolylineCount As Integer   '多线段的数量
Dim nTextCount As Integer       '文本对象的数量
Dim filtertype, filterdata As Variant
filtertype = ftype: filterdata = fdata

ssetObj.SelectOnScreen filtertype, filterdata

'统计多线段对象和文本对象的数量
nPolylineCount = 0: nTextCount = 0
For Each opickedobjs In ssetObj
    If opickedobjs.ObjectName = "AcDbText" Then nTextCount = nTextCount + 1                '得到文本对象的数量
    If opickedobjs.ObjectName = "AcDbPolyline" Then nPolylineCount = nPolylineCount + 1    '得到多线段对象的数量
Next
'分别得到多线段的对象ID、面积和文本对象的ID、内容和坐标
Dim GetPoly() As Variant           '多线段对象ID,面积,文字1,文字2,文字3
Dim GetText() As Variant           '文本对象ID,内容,X座标,y座标
ReDim GetPoly(0 To nPolylineCount - 1, 0 To 4)
ReDim GetText(0 To nTextCount - 1, 0 To 3)

nP = 0: nT = 0
For Each ent In ssetObj
   If ent.ObjectName = "AcDbPolyline" Then
       GetPoly(nP, 0) = pickedobjs.ObjectID          '得到对象ID
       GetPoly(nP, 1) = pickedobjs.Area              '得到对象面积
       nP = nP + 1
   End If
   If ent.ObjectName = "AcDbText" Then
       GetText(nT, 0) = ent.ObjectID                  '得到对象ID
       GetText(nT, 1) = ent.TextString                '得到对象的文本内容
       GetText(nT, 2) = ent.InsertionPoint(0)         '得到X坐标
       GetText(nT, 3) = ent.InsertionPoint(1)         '得到Y坐标
       nT = nT + 1
   End If
Next
ssetObj.Delete
End Sub

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2022-2-24 10:44 | 显示全部楼层
要把InsertionPoint赋值给一个数组,然后去那个数组获取(0), 不能直接insertionPoint(0)
 楼主| 发表于 2022-2-24 11:28 | 显示全部楼层
谢谢,我试一下
 楼主| 发表于 2022-2-24 14:22 | 显示全部楼层
这个问题已解决!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-6 02:59 , Processed in 0.188169 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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