Set poly = elem 没有错,是没有必要
Dim ss As AcadSelectionSet ThisDrawing.SelectionSets("TT").Delete Set ss = ThisDrawing.SelectionSets.Add("TT") ss.Select acSelectionSetAll Dim poly As AcadPolyline For Each elem In ss '对每一条折线提取顶点坐标 If (elem.ObjectName = "AcDb3dPolyline") Then pnts = elem.Coordinates MsgBox pnts(0) End If
Next elem
这样可以吗?
Sub aa() On Error Resume Next Dim SSet As AcadSelectionSet If Not IsNull(ThisDrawing.SelectionSets.Item("Example")) Then Set SSet = ThisDrawing.SelectionSets.Item("Example") SSet.Delete '及时删除不用的选择集非常重要 End If Set SSet = ThisDrawing.SelectionSets.Add("Example")
SSet.SelectOnScreen
Dim ent As AcadEntity Dim objPline As AcadLWPolyline For Each ent In SSet If TypeOf ent Is AcadLWPolyline Then Set objPline = ent Debug.Print objPline.ObjectName End If Next ent
SSet.Delete End Sub
实际上,AutoCAD中使用PLINE命令绘制的是轻量多段线。
Dim elem As AcadEntity Dim ss As AcadSelectionSet ThisDrawing.SelectionSets("TT").Delete Set ss = ThisDrawing.SelectionSets.Add("TT")
ss.Select acSelectionSetAll Dim poly As AcadPolyline For Each elem In ss '对每一条折线提取顶点坐标 If (elem.ObjectName = "AcDbPolyline") Then Set poly = elem ' 就是如此啊 End If
Next elem
还是提示错
Dim elem As AcadEntity Dim ss As AcadSelectionSet ThisDrawing.SelectionSets("TT").Delete Set ss = ThisDrawing.SelectionSets.Add("TT") ss.Select acSelectionSetAll
Dim poly As AcadPolyline For Each elem In ss '对每一条折线提取顶点坐标 If (elem.ObjectName = "AcDbPolyline") Then Set poly = elem ' 就是如此啊 pnts = poly.Coordinates MsgBox pnts(0) End If Next elem
Dim poly As AcadPolyline,那elem.ObjectName应该要为AcDb2DPolyline吧,没有安装ACAD,先自己试试它的对象名称。