明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2208|回复: 7

从EXCELL提取CAD文字和坐标,坐标出错

[复制链接]
发表于 2020-7-24 15:07:08 | 显示全部楼层 |阅读模式
今天把,上一个贴子的源码改到EXCELL里了,但是运行到坐标的时候,提示错误了。改了好几遍了,都不行。还是请前辈们帮忙看看,问题出在哪里吧。运行到“arrText(lngCount, 2) = Format(.InsertionPoint(0), "0.000000")  'Y值坐标'”,这里提示错误。
property let过程未定义,property get过程未返回对象”
一下是代码

Public Sub Com_Button1_Click()
On Error Resume Next
Set acadApp = GetObject(, "AutoCAD.APPLICATION")
acadApp.Visible = True
Set acadDoc = acadApp.ActiveDocument
Set Thisdrawing = acadApp.ActiveDocument
If Err Then
Err.Clear
acadApp.WindowState = acMin
Application.WindowState = xlMaximized
MsgBox "此插件只能提取AutoCAD2016版的数据内容" & vbCrLf & "为防止获取CAD对象错误,请将其它版本CAD关闭" & vbCrLf & "请打开要提取的AutoCAD2016进行尝试"
Exit Sub
End If
On Error GoTo 0
Dim SSet As Object
Set SSet = createSSet(Thisdrawing, "AA")
SSet.SelectOnScreen
    Dim lngCount As Long
    Dim arrText() As String
    Dim txtCount As Long

    Dim objEntity As Object

    txtCount = SSet.count
    ReDim arrText(1 To txtCount, 1 To 4)

    Dim objText  As Object

     For Each objEntity In SSet
        lngCount = lngCount + 1
        Set objText = objEntity

        arrText(lngCount, 1) = objEntity.TextString     '文本字符串值

        With objText
            arrText(lngCount, 2) = Format(.InsertionPoint(0), "0.000000")  'Y值坐标'
            arrText(lngCount, 3) = Format(.InsertionPoint(1), "0.000000")   'X值坐标'
            arrText(lngCount, 4) = Format(.InsertionPoint(2), "0.00")       '高程'
        End With
     Next objEntity

     GetTextInsertCoord = arrText


  Range("A1").Resize(UBound(arrText), 4) = arrText

    Range("B1:C" & UBound(arrText)).NumberFormatLocal = "0.000000"
   Range("D1:D" & UBound(arrText)).NumberFormatLocal = "0.00"
    Range("A:D").EntireColumn.AutoFit



发表于 2020-7-24 23:31:15 | 显示全部楼层
Dim objText  As Object
改成
Dim objText  As AcadText
或者
arrText(lngCount, 2) = Format(.InsertionPoint(0), "0.000000")
改成
Dim Point() As Double
Point = objText.InsertionPoint
arrText(lngCount, 2) = Format(Point(0), "0.000000")
另外如果文字对齐方式不同,定位点也不一样,不能全用InsertionPoint
发表于 2020-7-26 19:57:11 | 显示全部楼层
支持一下,excel vba的帖子少见
 楼主| 发表于 2020-8-9 10:08:32 | 显示全部楼层
sgwsssxm 发表于 2020-7-24 23:31
Dim objText  As Object
改成
Dim objText  As AcadText

非常感谢,下面这个更改好用

arrText(lngCount, 2) = Format(.InsertionPoint(0), "0.000000")
改成
Dim Point() As Double
Point = objText.InsertionPoint
arrText(lngCount, 2) = Format(Point(0), "0.000000")
 楼主| 发表于 2020-8-9 14:28:02 | 显示全部楼层
sgwsssxm 发表于 2020-7-24 23:31
Dim objText  As Object
改成
Dim objText  As AcadText

哥,我想把单行文字的旋转特征导出来,我猜着写了个.TextRotate,好像不对,能告诉我用哪个吗?
发表于 2020-8-9 23:09:16 | 显示全部楼层
用.Rotation
 楼主| 发表于 2020-8-10 16:35:14 | 显示全部楼层

写好了,感谢
 楼主| 发表于 2020-12-18 18:16:12 | 显示全部楼层
最近想吧这些文字的图层信息一起提取出来,不知道能不能实现。因为不带图层信息提取,写回去的时候文字颜色比较单调。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 04:49 , Processed in 0.188444 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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