这可能会对您有所帮助。这最初是为了将旧标题栏更改为新标题块而编写的。
下面的部分创建了块参照的选择集。我使用一个块名称数组作为我的列表。这使我能够以不同的方式处理不同的块。找到要查找的块后,插入点、刻度和旋转角度将存储在变量中供以后使用。如果存在属性,则这些属性将存储在一个数组中,以便在删除块时不会破坏这些值。
- Set objAcadSSet = ThisDrawing.SelectionSets.Add("sSet2")
-
- intTextCodes(0) = 0 'set code for entities
- varCodeValues(0) = "INSERT" 'set entity type to filter
- objAcadSSet.Select acSelectionSetAll, , , intTextCodes, varCodeValues 'create set
- For Each objOldBlk In objAcadSSet
- BName = UCase(objOldBlk.Name)
- Select Case BName
-
- Case arOldBlkNames(0) 'ctml0011
- InsertPt(0) = objOldBlk.InsertionPoint(0)
- InsertPt(1) = objOldBlk.InsertionPoint(1)
- InsertPt(2) = objOldBlk.InsertionPoint(2)
- xScale = objOldBlk.XScaleFactor
- yScale = objOldBlk.YScaleFactor
- zScale = objOldBlk.ZScaleFactor
- Rot = objOldBlk.Rotation
- If objOldBlk.HasAttributes Then
- varOldAtt = objOldBlk.GetAttributes 'get block attributes
- End If
- For intOldCnt = LBound(varOldAtt) To UBound(varOldAtt)
- Set objOldAttRef = varOldAtt(intOldCnt)
- Next intOldCnt
- NewBlkName = "CTML0013.dwg"
- NewBlk
-
这块是带有反馈属性的新块
。
|