乐筑天下

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

实体不重复排序

[复制链接]

120

主题

326

帖子

7

银币

中流砥柱

Rank: 25

铜币
806
发表于 2007-12-18 16:38:00 | 显示全部楼层 |阅读模式
  1. Sub ls()
  2.   Dim xm1(), abc(), Gggg()
  3.   Dim Ent As AcadEntity
  4.   Dim AllEntityArray, AllEntityCount As Integer
  5.   AllEntityCount = ThisDrawing.ModelSpace.Count
  6.   ReDim AllEntityArray(AllEntityCount - 1)
  7.   For ii = 0 To AllEntityCount - 1
  8.     With ThisDrawing.ModelSpace.Item(ii)
  9.       AllEntityArray(ii) = .ObjectName
  10.     End With
  11.   Next ii
  12.   abc = NoRepeatArray(AllEntityArray) '不重复数组处理
  13.   Gggg = Bubble_Sort(abc)
  14.   For ii = 1 To UBound(Gggg) - 1
  15.     Debug.Print Gggg(ii)
  16.   Next ii
  17.   Debug.Print
  18. End Sub
  19. Function Bubble_Sort(Ary)
  20.    Dim aryUBound, i, j
  21.    aryUBound = UBound(Ary)
  22.    For i = 1 To aryUBound
  23.      For j = i + 1 To aryUBound
  24.        If Ary(i) > Ary(j) Then
  25.          Swap Ary(i), Ary(j)
  26.        End If
  27.      Next
  28.    Next
  29.    Bubble_Sort = Ary
  30. End Function
  31. Function Swap(a, b)
  32.    Dim tmp
  33.    tmp = a
  34.    a = b
  35.    b = tmp
  36. End FunctionFunction NoRepeatArray(xm)
  37.     Dim Arr(), Temp() As String '声明变量
  38.     Dim s%, r% '声明单值变量
  39.     On Error Resume Next '启动一个错误处理程序
  40.    
  41.     r = 0 '初值
  42.     s = UBound(xm) '最大下标
  43.     For i = 0 To s '循环
  44.         Temp = Filter(Arr, xm(i)) '搜索数组
  45.         If UBound(Temp) = -1 Then '如果未找到
  46.             r = r + 1 '序号,自增1
  47.             ReDim Preserve Arr(1 To r) '定义动态数组大小
  48.             Arr(r) = xm(i) '把姓名复制到数组Arr()中。
  49.         End If
  50.     Next
  51.     NoRepeatArray = Arr
  52. End Function

回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2007-12-18 18:19:00 | 显示全部楼层
这好象只是名称排序,而不是位置排序。
回复

使用道具 举报

120

主题

326

帖子

7

银币

中流砥柱

Rank: 25

铜币
806
发表于 2007-12-18 21:11:00 | 显示全部楼层

数千个实体数据经过归纳合并数据处理后,得出以下结果。
AcDbHatch
AcDbLine
AcDbMText
AcDbPolyline
AcDbSolid
读上述实体属性数据,传送数据到数据库中,进行后续处理。

回复

使用道具 举报

120

主题

326

帖子

7

银币

中流砥柱

Rank: 25

铜币
806
发表于 2007-12-19 11:12:00 | 显示全部楼层
Function xlApp() As Object
'  Dim xlApp As Object    ' This Line ,Not set Excel , run Excel
     'Dim xlsheet As Object
     
     ' 发生错误时跳到下一个语句继续执行
     On Error Resume Next
     ' 连接Excel应用程序
     Set xlApp = GetObject(, "Excel.Application")
     
     If Err.Number  0 Then
         Set xlApp = CreateObject("Excel.Application")
         xlApp.Visible = True
         xlApp.Workbooks.Add
     End If
     ' 返回当前活动的工作表
End Function
Sub labc()
  Dim xlSheet
  Set ArcXlsheet = xlApp.sheets(1)
  ArcXlsheet.Name = "Arc"
  Set CircleXlSheet = xlApp.sheets(2)
  CircleXlSheet.Name = "Circle"
  Set PolylineXlSheet = xlApp.sheets(3)
  PolylineXlSheet.Name = "Polyline"
  Set LineXlSheet = xlApp.sheets.Add
  LineXlSheet.Name = "Line"
  Set MTextXlSheet = xlApp.sheets.Add
  MTextXlSheet.Name = "MText"
  Set TextXlSheet = xlApp.sheets.Add
  TextXlSheet.Name = "Text"
' Dim Set
  Dim DbArc As AcadArc, DbCircle As AcadCircle
  Dim DbDiametricDimension As AcadDimDiametric, DbLeader As AcadLeader
  Dim DbLine As AcadLine, DbMText As AcadMText
  Dim DbPolyline As AcadPolyline, DbRotatedDimension As AcadDimRotated
  Dim DbSolid As AcadSolid, Ent As AcadEntity
  iiArc = 1
  For Each Ent In ThisDrawing.ModelSpace
    Select Case Ent.ObjectName
      Case "AcDbArc"
       Set DbArc = Ent
       ArcXlsheet.Cells(iiArc, 1) = DbArc.Center(0): ArcXlsheet.Cells(iiArc, 2) = DbArc.Center(1)
       iiArc = iiArc + 1
    End Select
  Next Ent
  ArcXlsheet.Select
End Sub
回复

使用道具 举报

6

主题

13

帖子

4

银币

初来乍到

Rank: 1

铜币
37
发表于 2008-1-3 17:40:00 | 显示全部楼层
我有桩排序 呵呵。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-5 14:06 , Processed in 0.277813 second(s), 63 queries .

© 2020-2025 乐筑天下

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