明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1442|回复: 1

[求助]VBA如何计算曲线的长度

[复制链接]
发表于 2010-6-5 18:37:00 | 显示全部楼层 |阅读模式
VBA如何计算曲线的长度!样条曲线没有长度返回的值,怎么办????
发表于 2010-6-8 09:25:00 | 显示全部楼层

第一步:在VBAIDE里先定义 GetCurveLen宏

 

Public Sub GetCurveLen()
    '利用VLisp计算曲线长度
    Dim LispPath As String
    LispPath = "c:\Getlen.LSP" 'Lisp文件的路径
    Dim tempS As String, tempR As Double
    tempS = ThisDrawing.GetVariable("users5")
    tempR = ThisDrawing.GetVariable("userr5")
    Dim obj As AcadEntity, pt As Variant
    ThisDrawing.Utility.GetEntity obj, pt, "选择对象:"
    ThisDrawing.SetVariable "users5", obj.Handle  '将对象的句柄放在系统变量里
    ThisDrawing.SendCommand "(load " & Chr(34) & Replace(LispPath, "\", "/") & Chr(34) & ")" & vbCr
   
    MsgBox "曲线长度为:" & CStr(ThisDrawing.GetVariable("userr5")) '到userr5里取值
   
    ThisDrawing.SetVariable "users5", tempS '还原系统变量
    ThisDrawing.SetVariable "userR5", tempR '还原系统变量
End Sub

 

第二步:复制下面代码存为*.lsp文件,注意文件名、路径要与上面的lisppath变量相一致

      

       (defun GetLen( / obj len)
  ;;功能:计算曲线长度
  (vl-load-com)
  (setq obj (vlax-ename->vla-object (handent (getvar "users5"))));;把对对象的句柄放在users5
  (setq len (vlax-curve-getDistAtParam obj (vlax-curve-getendParam obj)))
  (setvar "userr5" len);;把对对象的长度放在userr5
  )
(GetLen)

 

 

 

 

 

然后运行 GetCurveLen宏

 

 

 

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 22:31 , Processed in 0.163834 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表