三维网
标题:
AUTOCAD 运用VBA使三维运动的问题
[打印本页]
作者:
jasmine126
时间:
2008-10-31 13:13
标题:
AUTOCAD 运用VBA使三维运动的问题
按照AUTOCAD VBA的学习资料,我把二维的改成三维的之后出现如图错误,哪位大大能帮忙指正一下 非常感谢
& u/ X3 d' k1 L$ Y& V% O
6 z# @: u5 N7 c( G
改过后程序为:
+ b3 `- N# X/ D7 _, R' q
9 c0 Y. D- }+ k) W2 P& k3 j
Public Sub move()
- Z) B, }4 b6 |$ |2 L6 d+ N
Dim p0(2) As Variant '起点坐标
8 a3 v6 t1 Z) N$ N. t
Dim p1(2) As Variant '终点坐标
, _+ d# S( `- Y. N& \, Y
Dim pc(2) As Variant '移动时起点坐标
- R8 o+ F% @) Y1 M$ E" a: a
Dim pe(2) As Variant '移动时终点坐标
3 R( W; d2 p2 {& E
Dim movx As Variant 'x轴增量
% F, \' m% M U) |1 i6 Z% E, Z
Dim movy As Variant 'y轴增量
2 `: U3 o' ]/ P9 A" {- G( s6 W
Dim movz As Variant 'z轴增量
, W! s/ I$ `6 ?8 B
Dim getobj As Object '移动对象
# H5 j a$ Y+ P0 Z9 Y, ^
Dim movtimes As Integer '移动次数
$ p: E' I4 P O; G
ThisDrawing.Utility.GetEntity getobj, po, "请选择移动对象"
% T! M$ }) e' V
p0(2) = ThisDrawing.Utility.GetPoint(, "起点:")
. I8 {4 H- [5 v0 U0 O& \
p1(2) = ThisDrawing.Utility.GetPoint(p0, "终点:")
! X9 b2 q& r! G3 s* u
pe(2) = p0(2)
; h& G S4 S8 |5 R1 M
pc(2) = p0(2)
% Q' [( H! B: h& s6 G
movtimes = 30
/ O: Z( r, C. f( T: B
movx = (p1(0) - p0(0)) / movtimes
0 x5 z! L9 t: s" r8 V3 g1 i
movy = (p1(1) - p0(1)) / movtimes
; c9 _ I, O( }9 P! |
movz = (p1(2) - p0(2)) / movtimes
+ W# B' j( {* c3 e& l
For i = 1 To movtimes
* c, ^1 k/ L1 M W+ G7 M
pe(0) = pc(0) + movx
9 a# v ?% @3 _6 ?6 B# [' @5 S
pe(1) = pc(1) + movy
( a' I* {+ |2 n1 t# e5 F
pe(2) = pc(2) + movz
( d: O! r! K: w8 j+ W
getobj.move pc, pe '移动一段
- @ K% M% e$ l# E( h* P
getobj.Update '更新对象
& }1 s. j6 i3 W2 ~3 |4 g% W
Next
7 a9 d% G: s/ ^1 g' l2 N# R
End Sub
! U" y: q$ E3 P& {1 U& P: r
* s+ H6 j$ F2 e7 K
, r* G$ C+ n6 B3 l) o: L
程序编译执行都没有错误,但是在选择完移动对象,选择起点的时候就报错(如图)
% ~( J: {2 U6 X6 e) d# [$ w
& G+ o, V' V/ w. @! t& w6 O/ r" ]
[
本帖最后由 jasmine126 于 2008-10-31 15:17 编辑
]
作者:
woaishuijia
时间:
2008-10-31 13:47
简单改写了你的程序,自己对照一下都有哪些部分不一样
. E' ]! z' p: n, c
Sub Move()
* o; P/ x5 J _. L- }8 g
Dim P0 As Variant '起点坐标
s7 S9 _; M, O# T* z& D+ B4 b a
Dim P1 As Variant '终点坐标
. H; Q6 s) ?: d/ T" v
Dim Pc(2) As Double '移动时基点坐标
/ v7 ?, T0 R- m' e
Dim Pe(2) As Double '移动时第二点坐标
' y+ @ Y @& e, V+ N b L. m
Dim MovX As Double 'x轴增量
( r+ Y2 k1 F2 F0 B) d
Dim MovY As Double 'y轴增量
5 N+ \# R4 q7 b5 M" L
Dim MovZ As Double 'z轴增量
- s) [4 N& m$ O
Dim GetObj As Object '移动对象
- t T4 I- C3 }2 @" E3 F
Dim MovTimes As Integer '移动次数
7 d" `' x* ^2 }9 s5 N; Q P
ThisDrawing.Utility.GetEntity GetObj, P0, "请选择移动对象"
/ P" F" C. @ |. x+ S
P0 = ThisDrawing.Utility.GetPoint(, "起点:" )
& C7 x }. k- ^3 Q, v
P1 = ThisDrawing.Utility.GetPoint(P0, "终点:" )
* ^# B2 x' P; v" l8 L
MovTimes = 30
, k( z' g Q0 Q" L6 o! y
MovX = (P1(0) - P0(0)) / MovTimes
4 u" E$ E2 [! V/ t
MovY = (P1(1) - P0(1)) / MovTimes
2 ?. W6 D8 \5 }$ F
MovZ = (P1(2) - P0(2)) / MovTimes
% L0 l: p, P/ g# r
Pe(0) = Pc(0) + MovX
# B5 Z( v8 m* W
Pe(1) = Pc(1) + MovY
2 e4 `+ {% X# h
Pe(2) = Pc(2) + MovZ
( o5 A o9 B7 }4 _: x' U5 s
For I = 1 To MovTimes
2 y7 C5 \. b+ a/ d4 j- T
GetObj.Move Pc, Pe '移动一段
2 Z3 S: _- _$ b( l: y; x2 F
GetObj.Update '更新对象
$ ~" y2 B' M6 M, v5 d$ \
Next
' Y' P4 g/ I8 a( L1 _3 _
End Sub
复制代码
作者:
qinrongshan
时间:
2014-2-4 21:08
很有意思!!看懂一点了!!就是没能顺畅的写出来!!
欢迎光临 三维网 (http://www.3dportal.cn/discuz/)
Powered by Discuz! X3.4