- 积分
- 73912
- 明经币
- 个
- 注册时间
- 2001-6-7
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
发表于 2004-3-16 21:22:00
|
显示全部楼层
 - Sub CircleToBlock()
- On Error Resume Next
- Dim ss As AcadSelectionSet
- Set ss = CreateSelectionSet
- Dim typeArray As Variant
- Dim dataArray As Variant
- BuildFilter typeArray, dataArray, 0, "Circle"
- ss.Select acSelectionSetAll, , , typeArray, dataArray
- If ss.Count > 0 Then
- Dim EntCircle As AcadCircle
- Dim CS As AcadSelectionSet
- Dim tArray As Variant
- Dim dArray As Variant
- Dim Center As Variant
- Dim Blk As AcadBlock
- Dim BlkRef As AcadBlockReference
- Dim Ents As Variant
- Dim i As Integer
- For i = 0 To ss.Count - 1
- Set CS = CreateSelectionSet("circle")
- Set EntCircle = ss(i)
- Center = EntCircle.Center
- BuildFilter tArray, dArray, 0, "Circle", 10, Center
- CS.Select acSelectionSetAll, , , tArray, dArray
- Debug.Print CS.Count
- Set Blk = ThisDrawing.Blocks.Add(Center, "*U")
- Ents = ssArray(CS)
- ThisDrawing.CopyObjects Ents, Blk
- ThisDrawing.ModelSpace.InsertBlock Center, Blk.Name, 1, 1, 1, 0
- CS.Erase
- Next
- End If
- End Sub
- Public Sub BuildFilter(typeArray, dataArray, ParamArray gCodes())
- Dim fType() As Integer, fData()
- Dim index As Long, i As Long
- index = LBound(gCodes) - 1
- For i = LBound(gCodes) To UBound(gCodes) Step 2
- index = index + 1
- ReDim Preserve fType(0 To index)
- ReDim Preserve fData(0 To index)
- fType(index) = CInt(gCodes(i))
- fData(index) = gCodes(i + 1)
- Next
- typeArray = fType: dataArray = fData
- End SubPublic Function CreateSelectionSet(Optional ssName As String = "ss") As AcadSelectionSet
- On Error Resume Next
- ThisDrawing.SelectionSets(ssName).Delete
- Set CreateSelectionSet = ThisDrawing.SelectionSets.Add(ssName)
- End Function
- Public Function ssArray(ss As AcadSelectionSet)
- Dim retVal() As AcadEntity, i As Long
- ReDim retVal(0 To ss.Count - 1)
- For i = 0 To ss.Count - 1
- Set retVal(i) = ss.Item(i)
- Next
- ssArray = retVal
- End Function
|
|