mikewolf2k 发表于 2004-2-11 19:13:00

如何获得线段的端点?

我需要获得选择线段的端点,首先在屏幕中选取线段(可能是line,也可能是polyline),简要代码如下:


dim returnobj as acadentity , basepnt as variant, pnt as variant , line1 as variant


ActiveDocument.Utility.GetEntity returnobj, basepnt, "选择第一根线段:"


select case returnobj.objectname


                                                                               case "line"


                                                                                                                                               set line1=returnobj


                                                                                                                                               pnt=line1.startpoint


                                                                               case "polyline"


                                                                                                                                               set line1=returnobj


                                                                                                                                       pnt=line1.coordinates()


end select


这样运行时,如果选取的是line,那么一切正常;如果是polyline,则不能读取line1.coordinates(),虽然在监视窗口可以看到line1.coordinates.如果将line1定义为polyline,则选择polyline可以读取line1.coordinates,但选择line时不能读取startpoint. 总之,二者不可得兼,各位有什么办法吗?不要各自分别定义一个line和polyline.

mccad 发表于 2004-2-11 21:03:00

你的问题在我这里没有出现:Sub GetLinePnt()
       Dim returnobj As AcadEntity, basepnt As Variant, pnt As Variant, line1 As Variant
       ActiveDocument.Utility.GetEntity returnobj, basepnt, "选择第一根线段:"
       Select Case returnobj.ObjectName
                     Case "AcDbLine"
                                     Set line1 = returnobj
                                     pnt = line1.StartPoint
                     Case "AcDbLWPolyline", "AcDbPolyline"
                                     Set line1 = returnobj
                                     pnt = line1.Coordinates()
       End Select
       Debug.Print pnt(0) & "   " & pnt(1) & "   " & pnt(2)
End Sub

mikewolf2k 发表于 2004-2-11 21:09:00

不会吧,我是acad2000,难道是版本的问题??

莫名 发表于 2004-2-11 21:29:00

注意objectname前面有"AcDb"前缀,且大小写不要错。

mikewolf2k 发表于 2004-2-11 21:36:00

莫名发表于2004-2-11 21:29:00static/image/common/back.gif注意objectname前面有\"AcDb\"前缀,且大小写不要错。

<BR>这些方面没问题,我只是将代码的主要意思写了些,并不是真正的代码.
页: [1]
查看完整版本: 如何获得线段的端点?