乐筑天下

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

打断程序问题:有时候可以运行,有时候不能

[复制链接]

19

主题

45

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
121
发表于 2008-11-14 10:33:00 | 显示全部楼层 |阅读模式
源程序如下:
Sub r4()                          '打断
    Dim returnObj As AcadEntity
    Dim x(2), y(2) As Double
    Dim ss(100000) As Variant
    Dim det As String
    Dim det1 As String
    Dim lspPnt As String
    Dim minp, maxp As Variant
    Dim ssetobj, ssetobj2 As AcadSelectionSet
    Dim ent As AcadEntity
    'ScreenUpdating = False
   
    On Error Resume Next
    SsetName = "au100"
    On Error Resume Next
    For i = 0 To ThisDrawing.SelectionSets.Count - 1
        Set ssetobj = ThisDrawing.SelectionSets.Item(i)
       If ssetobj.Name = "au100" Then ssetobj.Delete
    Next i
       Set ssetobj = ThisDrawing.SelectionSets.Add(SsetName)
       ssetobj.SelectOnScreen
      
       k = 0
  
       j = ssetobj.Count
     For i = 0 To j - 1
        For ii = 0 To j - 1
          If Abs(ssetobj.Item(i).Angle - ssetobj.Item(ii).Angle) > 0.5 Then
            ss(k) = ssetobj.Item(i).IntersectWith(ssetobj.Item(ii), acExtendBoth)
            det = GetDoubleEntTable(ssetobj.Item(i), ss(k))
            det1 = GetDoubleEntTable(ssetobj.Item(ii), ss(k))
            lspPnt = axPoint2lspPoint(ss(k))
            ThisDrawing.SendCommand "_break" & vbCr & det & vbCr & lspPnt & vbCr
            ThisDrawing.SendCommand "_break" & vbCr & det1 & vbCr & lspPnt & vbCr
            k = k + 1
          End If
        Next
     Next
     
    SsetName = "au101"
    On Error Resume Next
    For i = 0 To ThisDrawing.SelectionSets.Count - 1
        Set ssetobj2 = ThisDrawing.SelectionSets.Item(i)
       If ssetobj2.Name = "au101" Then ssetobj2.Delete
    Next i
       Set ssetobj2 = ThisDrawing.SelectionSets.Add(SsetName)
                        
          ssetobj2.SelectOnScreen          '删除打断中产生的小雨1000的直线
      For Each returnObj In ssetobj2
      If returnObj.Length
'转换双元表的函数
Public Function GetDoubleEntTable(entObj As AcadEntity, Pnt As Variant) As String
    Dim entHandle As String
    entHandle = entObj.Handle
    GetDoubleEntTable = "(list(handent " & Chr(34) & entHandle & Chr(34) & _
                     ")(list " & Str(Pnt(0)) & Str(Pnt(1)) & Str(Pnt(2)) & "))"
End Function
'转换点的函数
Public Function axPoint2lspPoint(Pnt As Variant) As String
    axPoint2lspPoint = Pnt(0) & "," & Pnt(1) & "," & Pnt(2)
End Function
'转换图元函数
Public Function axEnt2lspEnt(entObj As AcadEntity) As String
    Dim entHandle As String
    entHandle = entObj.Handle
    axEnt2lspEnt = "(handent " & Chr(34) & entHandle & Chr(34) & ")"
End Function
回复

使用道具 举报

19

主题

45

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
121
发表于 2008-11-20 12:24:00 | 显示全部楼层
高手请指教阿
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2008-11-22 12:45:00 | 显示全部楼层

关闭对象捕捉试试。另外屏幕外的对象是无法操作的。
回复

使用道具 举报

19

主题

45

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
121
发表于 2008-11-25 09:55:00 | 显示全部楼层
还是不行啊,如果不建立第二个选择集,打断可以实现,建立第二个选择集之后,连打断都不能实现啊?请问楼上的,是否是选择集相冲突呢?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-3 17:26 , Processed in 0.657434 second(s), 61 queries .

© 2020-2025 乐筑天下

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