乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 69|回复: 4

如何获得线段的端点?

[复制链接]

85

主题

1175

帖子

11

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1518
发表于 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.
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2004-2-11 21:03:00 | 显示全部楼层
你的问题在我这里没有出现:
  1. Sub GetLinePnt()
  2.        Dim returnobj As AcadEntity, basepnt As Variant, pnt As Variant, line1 As Variant
  3.        ActiveDocument.Utility.GetEntity returnobj, basepnt, "选择第一根线段:"
  4.        Select Case returnobj.ObjectName
  5.                      Case "AcDbLine"
  6.                                      Set line1 = returnobj
  7.                                      pnt = line1.StartPoint
  8.                      Case "AcDbLWPolyline", "AcDbPolyline"
  9.                                      Set line1 = returnobj
  10.                                      pnt = line1.Coordinates()
  11.        End Select
  12.        Debug.Print pnt(0) & "   " & pnt(1) & "   " & pnt(2)
  13. End Sub
回复

使用道具 举报

85

主题

1175

帖子

11

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1518
发表于 2004-2-11 21:09:00 | 显示全部楼层
不会吧,我是acad2000,难道是版本的问题??
回复

使用道具 举报

21

主题

166

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
250
发表于 2004-2-11 21:29:00 | 显示全部楼层
注意objectname前面有"AcDb"前缀,且大小写不要错。
回复

使用道具 举报

85

主题

1175

帖子

11

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1518
发表于 2004-2-11 21:36:00 | 显示全部楼层

这些方面没问题,我只是将代码的主要意思写了些,并不是真正的代码.
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-15 13:58 , Processed in 0.344071 second(s), 62 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表