怎样计算曲线长度
怎样用vba计算一条曲线(直线,圆弧,pline线等)的长度,我想知道是怎样的算法和函数 使用VL的接口,它提供了所有曲线的操作函数,具体可以参照置顶的VLAX类介绍。 写了一个简单的例子。可以参考一下。VLAX类函数是完整的处理曲线的函数,现只提取出求曲线长度的算法。
Private Function GetLength(ByVal EntObj As AcadEntity) As Variant
Dim VL As Object
Dim VLF As Object
Dim sym As Object
Dim ret As Variant
ThisDrawing.SendCommand "(vl-load-com)" & vbCr ‘首先要加载VL接口,因为后面的函数是基于它的。
Set VL = Application.GetInterfaceObject("VL.Application.16") '这是用于R2004版的,R2000或者R2002的应该使用VL.Application.1。
Set VLF = VL.ActiveDocument.Functions
Set sym = VLF.Item("read").funcall("handle") '传入句柄
ret = VLF.Item("set").funcall(sym, EntObj.Handle)
Set sym = VLF.Item("read").funcall("(setq curve (handent handle))") '根据句柄得到实体名称(Lisp中的实体名称,这和EntityName是不一样的。)
Set ret = VLF.Item("eval").funcall(sym)
Set sym = VLF.Item("read").funcall("(vlax-curve-getDistAtParam curve (vlax-curve-getEndParam curve))") '计算终点参数,然后计算距离。
ret = VLF.Item("eval").funcall(sym) '返回长度
GetLength = ret
End Function
Sub test()
Dim l As Double
l = GetLength(ThisDrawing.ModelSpace(0))
Debug.Print "曲线长度: " & l
End Sub
谢谢版主,这中方法可以在2000以上的cad中使用,可是我的工作环境是r14,请问有没有什么办法 1. R14版本的VL没有集成到AutoCAD中,所以没有带vl 的函数。
2.R14中也没有什么vl.tlb 文件,也就无法调用vl库了。
页:
[1]