雪山飞狐_lzh 发表于 2004-10-9 14:54:00

<b>Set poly = elem </b>


<b>没有错,是没有必要</b>


Dim ss As AcadSelectionSet<BR>                       ThisDrawing.SelectionSets("TT").Delete<BR>                       Set ss = ThisDrawing.SelectionSets.Add("TT")<BR>                       ss.Select acSelectionSetAll<BR>                       Dim poly As AcadPolyline<BR>                       For Each elem In ss                                                                                                       '对每一条折线提取顶点坐标<BR>                                                                                                                       If (elem.ObjectName = "AcDb3dPolyline") Then<BR>                                                                                                                                                                               pnts = elem.Coordinates<BR>                                                                                                                                                                               MsgBox pnts(0)<BR>                                                                                                                       End If


                               Next elem<BR>

zfbj 发表于 2004-10-9 15:44:00

这样可以吗?


Sub aa()<BR>                       On Error Resume Next<BR>                       Dim SSet As AcadSelectionSet<BR>                       If Not IsNull(ThisDrawing.SelectionSets.Item("Example")) Then<BR>                                                       Set SSet = ThisDrawing.SelectionSets.Item("Example")<BR>                                                       SSet.Delete                               '及时删除不用的选择集非常重要<BR>                       End If<BR>                       Set SSet = ThisDrawing.SelectionSets.Add("Example")


                       SSet.SelectOnScreen<BR>                       <BR>                       Dim ent As AcadEntity<BR>                       Dim objPline As AcadLWPolyline<BR>                       For Each ent In SSet<BR>                                                       If TypeOf ent Is AcadLWPolyline Then<BR>                                                                                       Set objPline = ent<BR>                                                                                       Debug.Print objPline.ObjectName<BR>                                                       End If<BR>                       Next ent


                       SSet.Delete<BR>End Sub<BR>


实际上,AutoCAD中使用PLINE命令绘制的是轻量多段线。

wyj7485 发表于 2004-10-9 15:44:00

如果有<b>Set poly = elem 语句则会提示:</b>


《类型不匹配》


没有该语句则不会,那是怎么回事呢?

efan2000 发表于 2004-10-9 15:47:00

If (elem.ObjectName = "AcDb3dPolyline") Then<BR>先判断elem的类型是不是polyline,然后才能使用        <b>Set poly = elem。</b>

wyj7485 发表于 2004-10-9 16:24:00

Dim elem As AcadEntity<BR>Dim ss As AcadSelectionSet<BR>                       ThisDrawing.SelectionSets("TT").Delete<BR>                       Set ss = ThisDrawing.SelectionSets.Add("TT")<BR>                       <BR>                       ss.Select acSelectionSetAll<BR>                       Dim poly As AcadPolyline<BR>                       For Each elem In ss                                                                                                       '对每一条折线提取顶点坐标<BR>                                                                                                                       If (elem.ObjectName = "AcDbPolyline") Then<BR>                                                                                                                                                                               Set poly = elem               ' 就是如此啊<BR>                                                                                                                       End If


                               Next elem


还是提示错

efan2000 发表于 2004-10-9 16:48:00

Dim elem As AcadEntity<BR>                       Dim ss As AcadSelectionSet<BR>                       ThisDrawing.SelectionSets("TT").Delete<BR>                       Set ss = ThisDrawing.SelectionSets.Add("TT")<BR>                       ss.Select acSelectionSetAll<BR>                       <BR>                       Dim poly As AcadPolyline<BR>                       For Each elem In ss                                                                                                       '对每一条折线提取顶点坐标<BR>                                                       If (elem.ObjectName = "AcDbPolyline") Then<BR>                                                                                       Set poly = elem               ' 就是如此啊<BR>                                                                                       pnts = poly.Coordinates<BR>                                                                                       MsgBox pnts(0)<BR>                                                       End If<BR>                       Next elem


Dim poly As AcadPolyline,那elem.ObjectName应该要为AcDb2DPolyline吧,没有安装ACAD,先自己试试它的对象名称。

jsliuyun 发表于 2004-10-9 19:43:00

我怎么不能访问elem.Coordinates,好象没有这个属性,我试了2000,2002,2004都没有,你们的怎么有这个属性呢,奇怪?

mary_99w 发表于 2009-2-16 16:13:00

Set poly = elem ,这句不对吧,老是提示类型不匹配。如何解决

wubohan84 发表于 2009-2-23 16:03:00

12楼正解

spursand 发表于 2010-7-1 11:16:00

转为相应的实体就有相应的属性咯
页: 1 [2]
查看完整版本: 如何将AcadEntity转换成Polyline之类的实体(