VB调用LISP程序
请教各位高手,首先当我们打开CAD之后,然后运行一个VB程序来调用一个LISP程序如何实现!!! 伪代码set cad = getobject()
cad.ActiveDocument.sendcommond "lisp命令"
楼上的朋友能否具体一点啊,VB我不熟 第一步:在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宏
这是一个VBA的例子,VB操作与此类似
对VBA不熟,看不明白,不过还是谢谢你的热心帮助。。。 楼主有点搞笑,VB不熟,VBA也不熟,那还谈什么VB调用lisp啊??
以前一直用VB编写其它东东。。。并不是完全不会VB。。。
我以前没有用过VB编写CAD,但会一点LISP,所以有了此想法。。。
页:
[1]