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


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