请教老师:如何在屏幕上选择一条多义线后得到它的长度?
我是一个新人,初次来这里感觉受益非浅。不过我有一些疑问,希望大家指导
1。如何在屏幕上选择一条多义线后得到它的长度?
我看了你网站上的资料,但具体不会用,一个要用到alvx库,能告诉我怎么定义吗?最好能有一个例子。还有一个函数,也不知道如何传递参数。
2。能用sendcommand发送命令后,紧接着执行一个宏吗?
3。怎么加密vba。
先谢谢大家了。
VLAX类可以在下载中心下载到
http://www.mjtd.com/mcdown/list.asp?id=85你可将类下载后解压。
在VBA的IDE中使用输入类的功能将该类导入,这样这个VLAX类就可以用了。
在实用函数中有一个有关VBA求曲线长度的函数:
http://www.mjtd.com/function/vba/018.htm
Public Function GetCurveLength(curve As AcadEntity) As Double
Dim obj As VLAX, retVal
Set obj = New VLAX
obj.EvalLispExpression "(setq curve (handent " & Chr(34) & curve.Handle & Chr(34) & "))"
obj.EvalLispExpression "(setq curvelength (vlax-curve-getDistAtParam curve " & _
"(vlax-curve-getEndParam curve)))"
retVal = obj.GetLispSymbol("curvelength")
obj.NullifySymbol "curve", "curvelength"
Set obj = Nothing
GetCurveLength = CDbl(retVal)
End Function
只有你将对象提供给这个函数做为参数,就可以直接求出曲线的长度(注意这个函数就使用到VLAX类了)。
2.使用SendCommand方法执行的命令,后面的参数必须是在命令行下可以识别的参数,也就是说不能使用属于VBA自身的数据类型(如变体数组、AX对象等),你可以提供VBA的函数(包括自定义函数)传递给它,但不能是宏。只要它传递的数据适合SendCommand的数据格式就行。
3.加密VBA比较简单,工程属性中有保护项,你可以使用密码来保护你的VBA源代码(可是这种方法不安全,因为这种密码有专门的软件可以破,幸好这种工具还算没有流行起来)。
下载中心有一个工具也可以对VBA程序进行调整,它可将VBA程序中的注释全部去掉并去掉程序中每语句前的空格,这样可以增加阅读的难度,人家就是解开了也很难看懂。地址:http://www.mjtd.com/mcdown/list.asp?id=231
谢谢,没想到这么快就恢复了
还是有问题!
“http://www.mjtd.com/mcdown/list.asp?id=85 ;”下载不了。我在别处下载了。在vba ide中用文件-导入-选vlax.cls
程序为:
Sub try()
Dim pickObj As AcadEntity '保存被选择图元的对象变量
Dim pickPnt As Variant '选择图元时的拾取点变量
Dim length As Double
ThisDrawing.Utility.GetEntity pickObj, pickPnt, "选择图元对象:"
length = GetCurveLength(pickObj)
MsgBox length
End Sub
Public Function GetCurveLength(curve As AcadEntity) As Double
Dim obj As VLAX, retVal
Set obj = New VLAX
obj.EvalLispExpression "(setq curve (handent " & Chr(34) & curve.Handle & Chr(34) & "))"
obj.EvalLispExpression "(setq curvelength (vlax-curve-getDistAtParam curve " & _
"(vlax-curve-getEndParam curve)))"
retVal = obj.GetLispSymbol("curvelength")
obj.NullifySymbol "curve", "curvelength"
Set obj = Nothing
GetCurveLength = CDbl(retVal)
End Function
运行后在图形中选择了一个pline,报错“实时错误-2147221005 (800401f3)”选择调试后停在类库:
Private Sub Class_Initialize()
Set VL = ThisDrawing.Application.GetInterfaceObject("VL.Application.1")
Set VLF = VL.ActiveDocument.Functions
End Sub
的第一行。
到底是怎么回事呢,我觉得没那错啊。请受累看看
好了,搞定了,没有初始化
如何初始化,我笨
在内
注意程序中以下两行是必须的:Dim objVLAX As vlax
Set objVLAX = New vlax
这样才能调用其所定义的一些函数,调用方法:
objVLAX.EvalLispExpression 为执行LISP表达式
其它的一些函数自己看看应该能明白
另外,下载了VLAX后使用导入类功能来导入
[求助]请教版主,在VBA中的“IDE”在哪呀,能不能具体的教教,如何用VLAX类?谢谢了
本帖最后由 作者 于 2003-1-9 17:08:03 编辑[求助]请教版主,在VBA中的“IDE”在哪呀,能不能具体的教教,如何用VLAX类?谢谢了
出现如下错误 :
“实时错误-2147221005 (800401f3)”选择调试后停在类库:
Private Sub Class_Initialize()
Set VL = ThisDrawing.Application.GetInterfaceObject("VL.Application.1")
Set VLF = VL.ActiveDocument.Functions
End Sub
的第一行。请问如何解决,麻烦了!
要先加载VL才行
能不能在详细一点说明,我第一次用VLAX!!
能不能在详细一点说明,我第一次用VLAX!!
页:
[1]
2