三维网
标题:
无效的过程调用或参数
[打印本页]
作者:
feitianyiliu
时间:
2011-7-20 21:57
标题:
无效的过程调用或参数
本帖最后由 woaishuijia 于 2011-7-21 05:43 编辑
- @8 d3 z: {( ?) F8 s" C
* b# I1 z2 v0 J" V2 f2 |
用VBa做了个简单的小程序,居然提示“无效的过程调用或参数”
3 B1 g2 u: [8 H
程序:
* H2 @( S3 y( I5 n
Public Sub HTT()
& X1 l8 q6 u5 _! K# k
Dim Pt0, PT00 As Variant
) Q6 E8 F0 m% ?8 e+ D
Dim PT1(0 To 2), PT2(0 To 2), PT3(0 To 2) As Double
# Q6 M$ ?7 b1 F6 `+ J
Dim L0, L1 As Double
) L2 M9 f2 X; f ?% a) |* `
Dim i, m, n As Integer
) r- G J0 }: p0 q4 P* n& s/ p- h
Dim ALine As AcadLine
+ G0 I8 i7 Y O; T( j
Pt0 = ThisDrawing.Utility.GetPoint(, "基点:")
0 f, o$ B5 a% @, H+ s3 W2 l9 e
X1 = Pt0(0)
9 U- N& L& U: {6 V
Y1 = Pt0(1)
+ X/ L; o/ K; ], \) _& f
L0 = ThisDrawing.Utility.GetDistance(, "单节筒节宽度:")
- ~5 v0 Z- p7 ^* _* v# x8 j5 C
L1 = ThisDrawing.Utility.GetDistance(, "筒节直径:")
( \/ O7 G- Q+ f! `- d9 k
PT1(0) = Pt0(0) + L1
. R0 W! h3 p6 K5 z3 r, K
PT1(1) = Pt0(1)
: V6 T. o# _" \* e, A, h! W6 V
PT1(2) = Pt0(2)
: g" [! w' i. e; E0 d- m, Z
PT2(0) = Pt0(0) + L1
9 ~* n$ s% v+ R; k0 e. s
PT2(1) = Pt0(1) - l2
! j+ e* }9 H" e) Q [4 C- h
PT2(2) = Pt0(2)
& G5 l' W% w& \5 _
PT3(0) = Pt0(0)
2 i/ S* S+ I& E! T9 ^
PT3(1) = Pt0(1) - l2
! \2 e# U& ^; n7 [
PT3(2) = Pt0(2)
) ]3 O" z) @1 [' d
) G2 Y; U$ h# W: C2 N0 V) u; N
Set ALine = ThisDrawing.ModelSpace.AddLine(Pt0, PT1)
( q1 x' G/ A. F$ n3 e* q) @0 k
Set ALine = ThisDrawing.ModelSpace.AddLine(PT1, PT2)
5 J* ?0 w& t* N
Set ALine = ThisDrawing.ModelSpace.AddLine(PT2, PT3)
' S0 H7 g _! f* a7 K3 _
Set ALine = ThisDrawing.ModelSpace.AddLine(PT3, Pt0)
Y# j% ]& Y r( s0 p
ZoomAll
+ y3 b s1 ^; ?% h
End Sub
复制代码
3 {+ B. d9 Q* _! ^
错误提示:
& a# i/ u2 C. G9 G
[attach]1921292[/attach]
! n# X# A! l1 r9 n1 ^) V
有知道如何解决的吗?
作者:
feitianyiliu
时间:
2011-7-20 21:58
问题补充:
u1 `3 x2 X& j
一开始能画出一条直线,后来调试了几次,一个都画不出了
作者:
woaishuijia
时间:
2011-7-21 06:04
变量声明错误.所声明的每个变量都要一个单独的 As type 子句.如果不指定数据类型或对象类型,且在模块中没有 Deftype 语句,则该变量按缺省设置是 Variant 类型.
: s8 `, P6 `& I
以第3行为例:
Dim PT1(0 To 2), PT2(0 To 2), PT3(0 To 2) As Double
复制代码
相当于
Dim PT1(0 To 2) As Variant, PT2(0 To 2) As Variant, PT3(0 To 2) As Double
复制代码
而点坐标数组要求是 Double 类型,所以第22行以后会出错.
- z- T' ~, U0 G
正确的写法应该是
Dim PT1(0 To 2) As Double, PT2(0 To 2) As Double, PT3(0 To 2) As Double
复制代码
其它几行 Dim 也是如此
7 g- E8 M% H% D' w
7 p2 o F( O. E7 m" O
另外,12到20行计算点坐标时使用的 L1 和 l2 与 10 和 11 行 不符,错了吧?
作者:
feitianyiliu
时间:
2011-7-22 20:26
谢谢了
欢迎光临 三维网 (http://www.3dportal.cn/discuz/)
Powered by Discuz! X3.4