QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
7天前
查看: 3073|回复: 2
收起左侧

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

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

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

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

x
按照AUTOCAD VBA的学习资料,我把二维的改成三维的之后出现如图错误,哪位大大能帮忙指正一下 非常感谢
* y6 f* L1 z6 R- x( \3 d: T! x5 q) `, [  ]/ H
改过后程序为:
* @6 X" V" Z( U& V
: u, z- K7 K% g! bPublic Sub move()
, `$ r/ ^, i& @$ N  v3 c' k4 iDim p0(2) As Variant       '起点坐标
% ^& c6 B1 C" _5 t9 yDim p1(2) As Variant       '终点坐标; l9 y: o0 \/ D1 F  f* ?
Dim pc(2) As Variant       '移动时起点坐标
0 A; o' p! O! YDim pe(2) As Variant       '移动时终点坐标
# h; W5 x$ o0 PDim movx As Variant     'x轴增量
3 T6 I8 W! C  d6 E; i$ C& K. h* iDim movy As Variant     'y轴增量
9 _" G% l7 U) E" uDim movz As Variant     'z轴增量6 m& C. F2 z  x2 |5 r
Dim getobj As Object    '移动对象+ S; i3 K. m: j( W
Dim movtimes As Integer '移动次数
6 y! k, L& U- u$ m" WThisDrawing.Utility.GetEntity getobj, po, "请选择移动对象"( W3 E0 F1 B' P0 f3 b) m
p0(2) = ThisDrawing.Utility.GetPoint(, "起点:")
3 Z8 o. e; d$ Fp1(2) = ThisDrawing.Utility.GetPoint(p0, "终点:")
; }5 d/ Y) ^+ u% fpe(2) = p0(2)% @4 O5 H- k7 J! I# N8 G
pc(2) = p0(2)
" }% D( Z4 `) Emovtimes = 30) v) q/ k/ I6 ^7 {
movx = (p1(0) - p0(0)) / movtimes
3 G6 X  C9 i4 c9 S5 g# gmovy = (p1(1) - p0(1)) / movtimes0 ~' P7 p' t4 ]; x4 w
movz = (p1(2) - p0(2)) / movtimes
5 t+ u& m0 Z5 r% `( S2 ~For i = 1 To movtimes
, |$ t! `8 ~. `6 U3 |  pe(0) = pc(0) + movx
9 l' J$ `0 R, @3 K  v% P# `8 F  pe(1) = pc(1) + movy, V/ ~: P% r3 V) F! c) F
  pe(2) = pc(2) + movz
( Z, I$ x( K/ l( Y' u+ b; n  getobj.move pc, pe    '移动一段
6 i0 u, x: c6 X( ^# @  getobj.Update         '更新对象
6 A! K1 Z+ w6 d2 RNext, c2 Z& N  U5 q2 g$ l
End Sub% V5 E6 ~+ \$ M5 v
! M4 `; p+ V  n9 r& |" @! F

" k" M$ n7 x/ ~程序编译执行都没有错误,但是在选择完移动对象,选择起点的时候就报错(如图)
& E$ x: i* z9 t+ V5 S! g* r8 O7 ~5 p5 Z* W8 u8 j
[ 本帖最后由 jasmine126 于 2008-10-31 15:17 编辑 ]
error.JPG
发表于 2008-10-31 13:47:11 | 显示全部楼层 来自: 中国辽宁营口
简单改写了你的程序,自己对照一下都有哪些部分不一样
# }+ F* R' ^$ [2 B- o7 J
  1. Sub Move(): P: Q8 J7 H- x! C
  2.     Dim P0 As Variant       '起点坐标7 f- z/ x7 Y9 B" G
  3.     Dim P1 As Variant       '终点坐标
      i: i- n6 j& j5 x- A3 t/ I
  4.     Dim Pc(2) As Double     '移动时基点坐标
    8 B! M$ w; ?2 u" Q. j! N5 n9 Q: `
  5.     Dim Pe(2) As Double     '移动时第二点坐标
    ( v' e, C7 \. v" e) s; |$ d( J
  6.     Dim MovX As Double      'x轴增量
    3 g9 x/ ]& O: ?! E7 v
  7.     Dim MovY As Double      'y轴增量
    ; r: r" ?9 i8 r) Z% ?. w( G/ b6 c
  8.     Dim MovZ As Double      'z轴增量
    1 k1 g5 Q6 G. J) G+ u: r/ ~
  9.     Dim GetObj As Object    '移动对象
    0 _2 E* P+ k) a) l/ J# `8 s
  10.     Dim MovTimes As Integer '移动次数7 y) j/ U( P8 k4 a7 Q" X
  11.     ThisDrawing.Utility.GetEntity GetObj, P0, "请选择移动对象"$ r& L( N$ Z6 N+ h: ^
  12.     P0 = ThisDrawing.Utility.GetPoint(, "起点:" ) $ p* e0 W  `6 b3 ^
  13.     P1 = ThisDrawing.Utility.GetPoint(P0, "终点:" )
    / f! q% ]1 D- d
  14.     MovTimes = 30
    % z) W8 @) D/ ~4 p' G) O9 J
  15.     MovX = (P1(0) - P0(0)) / MovTimes$ Z& k, M" \7 N+ ^
  16.     MovY = (P1(1) - P0(1)) / MovTimes1 g8 E8 ]! h4 c  [+ v% @
  17.     MovZ = (P1(2) - P0(2)) / MovTimes7 e4 ]9 k1 B1 y1 c* r, e. u& ~
  18.     Pe(0) = Pc(0) + MovX4 P& w+ R1 f, \5 t1 y
  19.     Pe(1) = Pc(1) + MovY  d( q7 |# R" K$ f
  20.     Pe(2) = Pc(2) + MovZ
    ; \3 F7 ~- x, I
  21.     For I = 1 To MovTimes
      V+ V4 z; h: g: p
  22.       GetObj.Move Pc, Pe    '移动一段
    ' V5 G4 ^# B" C. U( N
  23.       GetObj.Update         '更新对象
    2 D. Q" b9 m/ j8 f2 V
  24.     Next
    5 b& b' A" y( n8 n+ y: w
  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 )

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