乐筑天下

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

[原创]尺寸线块有多少个子块统计?

[复制链接]

120

主题

326

帖子

7

银币

中流砥柱

Rank: 25

铜币
806
发表于 2008-7-29 14:09:00 | 显示全部楼层 |阅读模式
尺寸实体名(块)尺寸块内的子实体个数AcDb2LineAngularDimension15AcDb2LineAngularDimension15AcDb2LineAngularDimension14AcDbRotatedDimension14AcDb2LineAngularDimension13AcDbRotatedDimension11AcDb2LineAngularDimension11AcDbAlignedDimension11AcDbRotatedDimension10AcDb2LineAngularDimension10AcDbRotatedDimension9AcDb2LineAngularDimension9AcDbDiametricDimension8AcDbRotatedDimension7AcDbRadialDimension6AcDbDiametricDimension6AcDbRadialDimension5
原程序是在二次开发p127页基础上改动的。
  1. Function FixDimText(Dimension As AcadDimension) As String
  2.     '在复制标注对象前先保存当前图形中的块数量
  3.     Dim xlSheet As Worksheet
  4.     Set xlSheet = ReturnxlSheet
  5.     Dim ii As Integer
  6.    
  7.     Dim BlockCount As Long
  8. ''
  9. ''
  10.     BlockCount = ThisDrawing.Blocks.Count
  11.     With xlSheet
  12.       ii = .Range("A65536").End(xlUp).Row + 2
  13.     End With    '复制需要锁定文字内容的标注对象
  14.    
  15.     '检查块数量是否增加,而且新增加的块名前缀是否为"*D"
  16.     Dim NewBlockCount As Long
  17.     Dim CopyDimension As AcadDimension
  18.     Set CopyDimension = Dimension.Copy
  19.    
  20.     NewBlockCount = ThisDrawing.Blocks.Count
  21.    
  22.    
  23.    
  24.     If NewBlockCount = BlockCount + 1 And Left(ThisDrawing.Blocks(BlockCount).Name, 2) = "*D" Then
  25.    
  26.         '遍历块中的对象,取得文字内容
  27.         Dim EntityInBlock As AcadEntity
  28.         For Each EntityInBlock In ThisDrawing.Blocks(BlockCount)
  29.     With EntityInBlock
  30.       
  31. '
  32.       xlSheet.Cells(ii, 1) = Dimension.ObjectName
  33.       xlSheet.Cells(ii, 2) = Dimension.Handle
  34.       xlSheet.Cells(ii, 3) = Dimension.TextOverride
  35.       xlSheet.Cells(ii, 4) = BlockCount
  36.       xlSheet.Cells(ii, 5) = CopyDimension.ObjectName
  37.       xlSheet.Cells(ii, 6) = CopyDimension.Handle
  38.       xlSheet.Cells(ii, 7) = Dimension.TextOverride
  39.       xlSheet.Cells(ii, 8) = NewBlockCount
  40. '
  41.       xlSheet.Cells(ii, 9) = .ObjectName
  42.       xlSheet.Cells(ii, 10) = .Handle
  43.       xlSheet.Cells(ii, 11) = ThisDrawing.Blocks(BlockCount).Name
  44.       xlSheet.Cells(ii, 12) = ThisDrawing.Blocks(BlockCount).Count
  45.       ii = ii + 1
  46.    
  47.       'Debug.Print .ObjectName, .Handle, BlockCount,
  48.     End With
  49.             If EntityInBlock.ObjectName = "AcDbMText" Then
  50.                 '将文字内容替换掉标注对象的文字内容
  51.                 Dimension.TextOverride = EntityInBlock.TextString
  52.                 'Exit For
  53.             End If
  54.         Next
  55.     End If
  56.     '删除复制的标注对象
  57.     CopyDimension.Delete
  58.     FixDimText = Dimension.TextOverride
  59. End Function'将图形中所有的标注对象锁定文字内容
  60. Sub FixAllDim()
  61. '
  62.     Dim xlSheet As Worksheet
  63.     Set xlSheet = ReturnxlSheet
  64.     xlSheet.Range("a:z").ClearContents
  65. '
  66.    
  67.     Dim SSet As AcadSelectionSet
  68.     On Error Resume Next
  69.     '建立选择集
  70.     ThisDrawing.SelectionSets("mccad").Delete
  71.     Set SSet = ThisDrawing.SelectionSets.Add("mccad")
  72.     '建立过滤器
  73.     Dim fType(0) As Integer
  74.     Dim fData(0) As Variant
  75.     fType(0) = 0
  76.     fData(0) = "DIMENSION"
  77.     '选择过滤出图形中所有的标注对象
  78.     SSet.Select acSelectionSetAll, , , fType, fData
  79.     Dim i As Long
  80.     For i = 0 To SSet.Count - 1
  81.         '锁定标注的文字内容
  82.         FixDimText SSet(i)
  83.     Next
  84. End Sub
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-4 06:54 , Processed in 0.505309 second(s), 55 queries .

© 2020-2025 乐筑天下

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