注册 登录
编程论坛 VB6论坛

Excel VBA删除CAD文件中指定区域的对象

wxliuguangyu 发布于 2015-11-01 20:10, 1841 次点击
想通过Excel VBA宏工作自动删除CAD文件中指定区域中的对象,试了两天都没用成功。
Sub sel000()
Dim sel1 As AcadSelectionSet
Dim p1(0 To 2) As Double
Dim p2(0 To 2) As Double
p1(0) = 0: p1(1) = 0: p1(2) = 0
p2(0) = 300: p2(1) = 300: p2(2) = 0
Mode = acselectionsetcrossing
Set sel1 = ThisDrawing.SelectionSets.Add("sel3") '新建一个选择集
Call sel1.Select(Mode, p1, p2)
For Each E in Sel1
  E.delete
next
Sel.delete
End Sub
在主程序运行到该子程序时 提示“Object required”

本人是菜鸟不知道以上命名是CAD VBA的还是Excel VBA的,是否可以在EXCEL VBA中这样使用

跪求大神回复,

3 回复
#2
xiangyue05102015-11-02 09:37
你是在Excel中的话,需要先创建CAD对象,Set AcadApp = CreateObject("AutoCad.Application")。你报错估计是这个问题
直接出现Thisdrawing是不对的,除非你是全局变量,而且在其他地方赋值了。下面是一个例子(靠来的,我现在很少用CAD的二次开发)
程序代码:
Dim ACADAPP As AcadApplication

Function chkCAD() As Boolean
    '连接AutoACD,有就并入,无就开启一个
    On Error Resume Next
    Set ACADAPP = GetObject(, "AUTOCAD.APPLICATION")
    If Err Then
        Err.Clear
        Set ACADAPP = CreateObject("AUTOCAD.APPLICATION")
        If Err Then
            'MsgBox ("不能运行AutoCAD,请检查是否安装了AutoCAD 2000")
            chkCAD = False
            Exit Function
        End If
    End If
    ACADAPP.Visible = True
    chkCAD = True
End Function

Sub GetObjInSet()
   
    Dim ThisDrawing As Object
    Dim R As Object
    Dim A
    If Not chkCAD Then
        MsgBox ("不能运行AutoCAD,请检查是否安装了AutoCAD 2000")
        Exit Sub
    End If
    Set ThisDrawing = ACADAPP.ActiveDocument.ModelSpace
   
    For Each R In ThisDrawing
        A = R.StartPoint
    Next
End Sub
#3
wxliuguangyu2015-11-02 12:34
回复 2楼 xiangyue0510
非常感谢,我先试试。
#4
wxliuguangyu2015-11-03 13:32
For Each E in Sel1
   E.delete
 next
 Sel.delete     ''Sel1.delete 少敲了个1,
 End Sub
1