乐筑天下

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

怎样计算曲线长度

[复制链接]

4

主题

5

帖子

1

银币

初来乍到

Rank: 1

铜币
21
发表于 2003-9-30 19:47:00 | 显示全部楼层 |阅读模式
怎样用vba计算一条曲线(直线,圆弧,pline线等)的长度,我想知道是怎样的算法和函数
回复

使用道具 举报

26

主题

589

帖子

10

银币

中流砥柱

Rank: 25

铜币
693
发表于 2003-9-30 19:50:00 | 显示全部楼层
使用VL的接口,它提供了所有曲线的操作函数,具体可以参照置顶的VLAX类介绍。
回复

使用道具 举报

26

主题

589

帖子

10

银币

中流砥柱

Rank: 25

铜币
693
发表于 2003-9-30 20:10:00 | 显示全部楼层
写了一个简单的例子。可以参考一下。
VLAX类函数是完整的处理曲线的函数,现只提取出求曲线长度的算法。
  1. Private Function GetLength(ByVal EntObj As AcadEntity) As Variant
  2.     Dim VL As Object
  3.     Dim VLF As Object
  4.    
  5.     Dim sym As Object
  6.     Dim ret As Variant
  7.    
  8.     ThisDrawing.SendCommand "(vl-load-com)" & vbCr ‘首先要加载VL接口,因为后面的函数是基于它的。
  9.    
  10.     Set VL = Application.GetInterfaceObject("VL.Application.16") '这是用于R2004版的,R2000或者R2002的应该使用VL.Application.1。
  11.     Set VLF = VL.ActiveDocument.Functions
  12.     Set sym = VLF.Item("read").funcall("handle") '传入句柄
  13.     ret = VLF.Item("set").funcall(sym, EntObj.Handle)
  14.     Set sym = VLF.Item("read").funcall("(setq curve (handent handle))") '根据句柄得到实体名称(Lisp中的实体名称,这和EntityName是不一样的。)
  15.     Set ret = VLF.Item("eval").funcall(sym)
  16.     Set sym = VLF.Item("read").funcall("(vlax-curve-getDistAtParam curve (vlax-curve-getEndParam curve))") '计算终点参数,然后计算距离。
  17.     ret = VLF.Item("eval").funcall(sym) '返回长度
  18.     GetLength = ret
  19. End Function
  20. Sub test()
  21.     Dim l As Double
  22.     l = GetLength(ThisDrawing.ModelSpace(0))
  23.     Debug.Print "曲线长度: " & l
  24. End Sub
回复

使用道具 举报

4

主题

5

帖子

1

银币

初来乍到

Rank: 1

铜币
21
发表于 2003-10-1 18:20:00 | 显示全部楼层
谢谢版主,这中方法可以在2000以上的cad中使用,可是我的工作环境是r14,请问有没有什么办法
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2003-10-1 21:08:00 | 显示全部楼层
1. R14版本的VL没有集成到AutoCAD中,所以没有带vl 的函数。
2.R14中也没有什么vl.tlb 文件,也就无法调用vl库了。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 16:36 , Processed in 2.004027 second(s), 62 queries .

© 2020-2025 乐筑天下

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