它的难度取决于你的设置
通常,当块在零旋转和原点零处提供信息时,您使用矩阵来确定独立实体在块参照或外部参照中的位置
如果外部参照的比例为1;原点为0,0,0,不旋转,法线为0,1,则不需要矩阵
下面的代码假设了所有这些(使用selset函数),并使用一个只有一个矩形的外部参照
- Sub SELFROMX()
- Dim x As AcadExternalReference
- Dim B As AcadBlock
- Dim SS As AcadSelectionSet
- Dim xname As String
- xname = "3"
- Set SS = SSet(2, xname)
- If SS.count 1 Then Exit Sub
- Set x = SS(0)
- SS.Delete
- Dim E As AcadEntity, P As AcadLWPolyline
- For Each E In ThisDrawing.Blocks(xname)
- If TypeOf E Is AcadLWPolyline Then
- Set P = E
- Exit For
- End If
- Next
- Dim P1(2) As Double, P2(2) As Double
- P1(0) = P.Coordinate(0)(0)
- P1(1) = P.Coordinate(0)(1)
- P1(2) = P.Elevation
- P2(0) = P.Coordinate(2)(0)
- P2(1) = P.Coordinate(2)(1)
- P2(2) = P.Elevation
- Set SS = ThisDrawing.SelectionSets.Add("SS")
- SS.Select acSelectionSetWindow, P1, P2
- Debug.Print SS.count
- End Sub
|