QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
按照AUTOCAD VBA的学习资料,我把二维的改成三维的之后出现如图错误,哪位大大能帮忙指正一下 非常感谢
- _% k) B  m" ^% v+ }5 m8 x( i3 D1 C, T
改过后程序为:
5 r0 |6 c* A! o3 k' h. {. f* n
, y- h( F1 }" F* HPublic Sub move()
: O7 z6 P5 W# @% X% |( ~9 cDim p0(2) As Variant       '起点坐标
% h/ W7 ^4 I+ k3 w+ WDim p1(2) As Variant       '终点坐标: p. s  P, E& j# d' u& ^; ]
Dim pc(2) As Variant       '移动时起点坐标
) Q9 k& ~% ]* U) p! cDim pe(2) As Variant       '移动时终点坐标
5 L' G. K. ^  E9 F. YDim movx As Variant     'x轴增量
( J/ T' S7 {& Q7 `1 N. N. sDim movy As Variant     'y轴增量- O9 F% |; V+ M
Dim movz As Variant     'z轴增量
8 s' U+ I; E# l$ ]( B( e2 hDim getobj As Object    '移动对象
( G4 \9 k3 }; B  h% D# s$ u% bDim movtimes As Integer '移动次数
1 m3 h  T3 Q0 c& ]ThisDrawing.Utility.GetEntity getobj, po, "请选择移动对象"
4 E, y+ M# Q) i' L% h! G; C: z0 Mp0(2) = ThisDrawing.Utility.GetPoint(, "起点:")+ j+ _2 z9 m& S' ~, H8 H+ i0 T% K
p1(2) = ThisDrawing.Utility.GetPoint(p0, "终点:")
1 Z; ~, r& T" b. ]* j. Ype(2) = p0(2)
4 t$ i  W/ ~: |% P4 xpc(2) = p0(2)# Z9 ~( I7 W( p% w5 ?
movtimes = 30% z  O) C' m( v, B. {: B, z% b5 V
movx = (p1(0) - p0(0)) / movtimes- h2 p1 T' o% z
movy = (p1(1) - p0(1)) / movtimes- X1 `$ k0 a, O$ m, p( y0 [
movz = (p1(2) - p0(2)) / movtimes  S( u: d( V. S+ q
For i = 1 To movtimes
1 a+ T' V9 f# T  pe(0) = pc(0) + movx  r- S+ t! J; H2 p
  pe(1) = pc(1) + movy
! F! \1 P1 o7 F, ]4 }1 v% S  pe(2) = pc(2) + movz; B6 S6 {0 E% f( \! a5 E
  getobj.move pc, pe    '移动一段3 \3 s  t. I2 o
  getobj.Update         '更新对象. W5 w( _7 C4 b6 @4 n& d
Next
0 R% @$ z" ?7 V/ e# J0 B) ?/ TEnd Sub
/ w; o: j$ ]4 V7 l
- A+ Y: t8 T/ C5 _3 N6 b9 J' o; F- e& m; m/ x$ Z
程序编译执行都没有错误,但是在选择完移动对象,选择起点的时候就报错(如图)
- K' _$ l% ~# t0 z2 }1 P6 f" l5 }$ U& }2 e
[ 本帖最后由 jasmine126 于 2008-10-31 15:17 编辑 ]
error.JPG
发表于 2008-10-31 13:47:11 | 显示全部楼层 来自: 中国辽宁营口
简单改写了你的程序,自己对照一下都有哪些部分不一样. U8 M. |& \9 m. i
  1. Sub Move()
    5 k  T* }1 b2 l* a# c9 C- y
  2.     Dim P0 As Variant       '起点坐标3 R5 ]  O% K6 o* u0 ^3 L4 A' ?
  3.     Dim P1 As Variant       '终点坐标# t5 q9 D  b- O+ F; f) D
  4.     Dim Pc(2) As Double     '移动时基点坐标# k& O9 ^9 T$ [' A9 ]
  5.     Dim Pe(2) As Double     '移动时第二点坐标- e8 m: w7 [, B6 N3 g4 x  `
  6.     Dim MovX As Double      'x轴增量
      s( L0 X4 i7 t# |" W% Q  I
  7.     Dim MovY As Double      'y轴增量
    1 j7 N9 O  D! H7 a* T8 s
  8.     Dim MovZ As Double      'z轴增量6 c' D0 x2 I+ t0 A& Z* ]; E
  9.     Dim GetObj As Object    '移动对象; n) ?6 ^! Q+ c1 ]
  10.     Dim MovTimes As Integer '移动次数9 M$ V$ B8 ?) d% k$ O% l
  11.     ThisDrawing.Utility.GetEntity GetObj, P0, "请选择移动对象"
    $ P7 u8 b# C  u" p5 N* s7 Z
  12.     P0 = ThisDrawing.Utility.GetPoint(, "起点:" )
    ' R* T$ T+ Z9 v, V. J9 d
  13.     P1 = ThisDrawing.Utility.GetPoint(P0, "终点:" )
    5 f5 k; P4 s6 R6 h  ~* W
  14.     MovTimes = 30
    & R' c% ~4 r4 }. P: O# `
  15.     MovX = (P1(0) - P0(0)) / MovTimes2 O1 U' F$ P1 F  J
  16.     MovY = (P1(1) - P0(1)) / MovTimes
    - L$ c+ X; v# A
  17.     MovZ = (P1(2) - P0(2)) / MovTimes
    9 Y& I/ W$ b$ R$ m3 e  `! A
  18.     Pe(0) = Pc(0) + MovX
    1 I& G- q, p& S0 o  x" J; T
  19.     Pe(1) = Pc(1) + MovY+ F) M, Z! T( v8 z9 ]/ Q. H. y
  20.     Pe(2) = Pc(2) + MovZ! v2 `* d$ r6 m! h. v" K2 Q1 ?
  21.     For I = 1 To MovTimes
    8 D) d6 W+ G3 d/ W
  22.       GetObj.Move Pc, Pe    '移动一段
    - t4 n! f$ c! \, D# J+ F
  23.       GetObj.Update         '更新对象
      a9 F9 B5 C/ f) @5 Q0 S
  24.     Next
    2 Y  A) b) I$ f- ?: G
  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 )

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