乐筑天下

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

如何计算指定线加总长度?

[复制链接]

5

主题

11

帖子

2

银币

初来乍到

Rank: 1

铜币
31
发表于 2004-9-23 11:29:00 | 显示全部楼层 |阅读模式
如何计算指定线加总长度? 可以选定N条线(直线、曲线、多线段、圆弧......),然后计算它们的长度和。
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2004-9-23 11:33:00 | 显示全部楼层
看看置顶的Vlax类
回复

使用道具 举报

o_o

0

主题

3

帖子

1

银币

初来乍到

Rank: 1

铜币
3
发表于 2004-9-23 17:32:00 | 显示全部楼层
工具-查询-列表显示
可以显示每条线的长度
回复

使用道具 举报

1

主题

7

帖子

2

银币

初来乍到

Rank: 1

铜币
11
发表于 2004-10-29 21:33:00 | 显示全部楼层
顶一下,VBA怎么实现?
回复

使用道具 举报

25

主题

77

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
177
发表于 2004-10-30 09:49:00 | 显示全部楼层
直线可以用length取得,其它通过取得坐标计算线长,累加就行了
回复

使用道具 举报

1

主题

7

帖子

2

银币

初来乍到

Rank: 1

铜币
11
发表于 2004-10-30 11:03:00 | 显示全部楼层
这样是不是对spline的精度偏差较大?
length只能对Line和Arc有效。
回复

使用道具 举报

1

主题

7

帖子

2

银币

初来乍到

Rank: 1

铜币
11
发表于 2004-10-30 17:13:00 | 显示全部楼层
急,我再顶!
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2004-10-30 20:59:00 | 显示全部楼层
  1. Sub GetSelectCurveLength()
  2.        Dim SS As AcadSelectionSet
  3.        Set SS = CreateSelectionSet
  4.        Dim varType As Variant
  5.        Dim varData As Variant
  6.        BuildFilter varType, varData, 0, _
  7.                              "ARC,CIRCLE,ELLIPSE,LINE,LWPOLYLINE,POLYLINE,SPLINE"
  8.        SS.SelectOnScreen varType, varData
  9.        Dim objEntity As AcadEntity
  10.        Dim dblLength As Double
  11.        For Each objEntity In SS
  12.                dblLength = dblLength + GetCurveLength(objEntity)
  13.        Next
  14.        MsgBox "所选曲线的总长度为 " & dblLength, , "乐筑天下VBA示例"
  15. End Sub
  16. Public Function GetCurveLength(curve As AcadEntity) As Double
  17.        Dim obj As VLAX, retVal
  18.       
  19.        Set obj = New VLAX
  20.       
  21.        obj.EvalLispExpression "(setq curve (handent " & Chr(34) & curve.Handle & Chr(34) & "))"
  22.        obj.EvalLispExpression "(setq curvelength (vlax-curve-getDistAtParam curve " & _
  23.                                                      "(vlax-curve-getEndParam curve)))"
  24.        retVal = obj.GetLispSymbol("curvelength")
  25.        obj.NullifySymbol "curve", "curvelength"
  26.       
  27.        '释放内存,函数返回
  28.        Set obj = Nothing
  29.        GetCurveLength = CDbl(retVal)
  30. End Function
  31. Public Sub BuildFilter(typeArray, dataArray, ParamArray gCodes())
  32.        Dim fType() As Integer, fData()
  33.        Dim index As Long, i As Long
  34.       
  35.        index = LBound(gCodes) - 1
  36.                
  37.        For i = LBound(gCodes) To UBound(gCodes) Step 2
  38.                index = index + 1
  39.                ReDim Preserve fType(0 To index)
  40.                ReDim Preserve fData(0 To index)
  41.                fType(index) = CInt(gCodes(i))
  42.                fData(index) = gCodes(i + 1)
  43.        Next
  44.        typeArray = fType: dataArray = fData
  45. End Sub
  46. Function CreateSelectionSet(Optional SSetName As String = "mjtd") As AcadSelectionSet
  47.        On Error Resume Next
  48.        ThisDrawing.SelectionSets(SSetName).Delete
  49.        Set CreateSelectionSet = ThisDrawing.SelectionSets.Add(SSetName)
  50. End Function
回复

使用道具 举报

1

主题

7

帖子

2

银币

初来乍到

Rank: 1

铜币
11
发表于 2004-10-31 11:56:00 | 显示全部楼层
Dim obj As VLAX, retVal
                         
                         Set obj = New VLAX
????????????是不是少东西?
我不太懂,请多指教。谢谢!!
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2004-10-31 12:12:00 | 显示全部楼层
二楼不是已经说过了,用VLAX类,请查看置顶贴子。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-16 06:40 , Processed in 4.651097 second(s), 73 queries .

© 2020-2025 乐筑天下

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