QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
9天前
查看: 3077|回复: 2
收起左侧

[已解决] AUTOCAD 运用VBA使三维运动的问题

[复制链接]
发表于 2008-10-31 13:13:39 | 显示全部楼层 |阅读模式 来自: 中国陕西西安

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
按照AUTOCAD VBA的学习资料,我把二维的改成三维的之后出现如图错误,哪位大大能帮忙指正一下 非常感谢
" y* t6 m2 e$ j& l! G" h3 ?, r! D6 p- ]/ C2 J2 b( @" {, s* j
改过后程序为:
* H& R7 Z* H& ?
0 S. {2 \4 f4 t7 qPublic Sub move()$ k" i( a  F8 M
Dim p0(2) As Variant       '起点坐标1 V& v, r' ?/ P/ k& y* t: M
Dim p1(2) As Variant       '终点坐标
) Y0 n. t! j3 J/ ADim pc(2) As Variant       '移动时起点坐标
6 T% c- P3 r+ A5 I! Q% SDim pe(2) As Variant       '移动时终点坐标. E+ Q8 F- W' }0 q7 k) m& n" j
Dim movx As Variant     'x轴增量9 [" d& W7 V3 H3 }
Dim movy As Variant     'y轴增量
: h# M& O3 _: Z3 Y& CDim movz As Variant     'z轴增量" {" g- p3 [' A& X( [! Q! O0 y
Dim getobj As Object    '移动对象. c5 w" C* M! Q9 {3 R1 [
Dim movtimes As Integer '移动次数
- |$ T4 z( j+ \" z6 u. WThisDrawing.Utility.GetEntity getobj, po, "请选择移动对象"
' w$ e" j# m# Q4 r9 up0(2) = ThisDrawing.Utility.GetPoint(, "起点:")8 d5 g6 b1 f: d6 I( U
p1(2) = ThisDrawing.Utility.GetPoint(p0, "终点:")! I4 n& m$ {* \2 ~
pe(2) = p0(2)
( K- g$ e+ j! r/ W$ ipc(2) = p0(2)
! N( D0 `( M. p0 K+ y7 C2 Rmovtimes = 30
0 t- _1 k" C) [) lmovx = (p1(0) - p0(0)) / movtimes  Y& O. h8 g. |5 b" _. J8 g
movy = (p1(1) - p0(1)) / movtimes" M5 }6 Z  {* E2 _2 @. h
movz = (p1(2) - p0(2)) / movtimes
  d* X& ~5 Y7 X" x" W6 [  GFor i = 1 To movtimes
3 V7 ?$ H6 I% b  y8 W- y. E  pe(0) = pc(0) + movx
, `8 Q  d- ^( l  pe(1) = pc(1) + movy3 t7 Y7 @, D( {# n; S. x. {. ^
  pe(2) = pc(2) + movz$ C$ D4 \/ L6 o! g1 t) O& C
  getobj.move pc, pe    '移动一段9 l, v* }4 J" T; E; m# S
  getobj.Update         '更新对象2 k- M7 r. I* j  T( R( t- ?, B) X, V
Next
) O: o4 j& ~4 \" w; _) uEnd Sub7 c( A) D" ?7 E' E0 P* k1 d4 g7 i" U
/ r% P6 p( l' E  \' M! \
+ n/ E+ @: I7 ]4 H5 R' p7 U" e
程序编译执行都没有错误,但是在选择完移动对象,选择起点的时候就报错(如图)
, ?3 W1 a9 E% w) Z( _3 s" A9 {0 D7 u& G. y. T( Y
[ 本帖最后由 jasmine126 于 2008-10-31 15:17 编辑 ]
error.JPG
发表于 2008-10-31 13:47:11 | 显示全部楼层 来自: 中国辽宁营口
简单改写了你的程序,自己对照一下都有哪些部分不一样
& Y* F) X, d, P. e, P
  1. Sub Move()3 o  m& T# f1 Y: f, y
  2.     Dim P0 As Variant       '起点坐标) l* i2 J' Z' c
  3.     Dim P1 As Variant       '终点坐标. H5 b. f0 K3 G# }3 L7 y
  4.     Dim Pc(2) As Double     '移动时基点坐标0 y" `4 d( C6 }
  5.     Dim Pe(2) As Double     '移动时第二点坐标
    * Y# W- z/ H5 ?! v. h
  6.     Dim MovX As Double      'x轴增量
    $ l7 I0 g* X. x
  7.     Dim MovY As Double      'y轴增量( C0 N- W: u5 s0 e4 E, x
  8.     Dim MovZ As Double      'z轴增量( ^$ G3 f0 W3 q0 t" q9 ?  t
  9.     Dim GetObj As Object    '移动对象: L, H7 @8 L. u& x
  10.     Dim MovTimes As Integer '移动次数
    9 J* R! @& g( T' C6 g% d- P
  11.     ThisDrawing.Utility.GetEntity GetObj, P0, "请选择移动对象"
    * o% z# h7 p8 q4 H% k* T
  12.     P0 = ThisDrawing.Utility.GetPoint(, "起点:" )
    . _# B2 ?0 z) b- i- l
  13.     P1 = ThisDrawing.Utility.GetPoint(P0, "终点:" )
    / o( O: X1 a, x" f
  14.     MovTimes = 30' |3 W3 T3 G8 V% n* u5 u. [) u
  15.     MovX = (P1(0) - P0(0)) / MovTimes: k/ m! {! V0 p. i$ t: n
  16.     MovY = (P1(1) - P0(1)) / MovTimes9 B" F* _: ?7 @; H! ^5 m
  17.     MovZ = (P1(2) - P0(2)) / MovTimes7 y' ^: M+ Y# X6 J
  18.     Pe(0) = Pc(0) + MovX
    8 U( G* z" ^3 A; q/ w
  19.     Pe(1) = Pc(1) + MovY
    " m2 H" U9 ]# o8 {  R% V, V
  20.     Pe(2) = Pc(2) + MovZ
    + z: E5 A3 Q/ B5 w8 A
  21.     For I = 1 To MovTimes  M; n+ B* P0 w7 @& F+ h
  22.       GetObj.Move Pc, Pe    '移动一段4 S8 |. w9 S( Y9 u8 u
  23.       GetObj.Update         '更新对象# S5 |' E; Y3 c9 K: m2 B* m7 x
  24.     Next2 E! ]7 b( t4 F/ s
  25. End Sub
复制代码

评分

参与人数 1三维币 +5 收起 理由
唐昕晨 + 5 应助

查看全部评分

发表于 2014-2-4 21:08:44 | 显示全部楼层 来自: 中国广西柳州
很有意思!!看懂一点了!!就是没能顺畅的写出来!!
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

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