You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AutoCAD VBA报错:删除指定图层未闭合多段线代码失效

问题原因

你遇到的类型错误是因为ModelSpace中包含多种类型的AutoCAD对象(比如直线、圆、文字等),而你直接用AcadLWPolyline类型的变量遍历所有对象,当循环到非多段线对象时,无法将其赋值给LWobj,从而触发类型不匹配错误。

修正后的代码
Sub clean()
    Dim obj As AcadObject
    Dim LWobj As AcadLWPolyline
    
    For Each obj In ThisDrawing.ModelSpace
        ' 先判断对象是否为多段线类型
        If TypeOf obj Is AcadLWPolyline Then
            Set LWobj = obj
            ' 再判断闭合状态和所属图层
            If Not LWobj.Closed And LWobj.Layer = "0_String" Then
                LWobj.Delete
            End If
        End If
    Next
    
    ' 所有对象处理完成后统一重生成视图,提升效率
    ThisDrawing.Regen acActiveViewport
End Sub
关键优化点
  • 先通过TypeOf obj Is AcadLWPolyline过滤出仅多段线对象,避免类型不匹配
  • 将Regen操作移到循环外,避免每次删除都刷新视图,大幅提升运行效率
  • 用Not LWobj.Closed替代LWobj.Closed = False,写法更简洁规范

内容的提问来源于stack exchange,提问作者Wessel1991

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 11:44:53