QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
10天前
查看: 2968|回复: 2
收起左侧

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

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

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

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

x
按照AUTOCAD VBA的学习资料,我把二维的改成三维的之后出现如图错误,哪位大大能帮忙指正一下 非常感谢/ t; z# Q) e$ @9 S( x
3 T! T% ~6 V" O/ D6 U" i
改过后程序为:# S% b  S3 O" n7 Q5 T3 F

! {5 v: Y" A* H; k. \/ I8 dPublic Sub move()
. u9 c$ p2 a' i8 n, w2 p% q- Z  ADim p0(2) As Variant       '起点坐标
8 Q5 H4 K2 U: }& b4 z1 I6 fDim p1(2) As Variant       '终点坐标; b/ s  d% v/ [8 a' D3 M5 a$ a
Dim pc(2) As Variant       '移动时起点坐标
9 Q1 \/ \; P. ~6 P1 EDim pe(2) As Variant       '移动时终点坐标
7 O' h7 S1 s( ?! q' M3 |" KDim movx As Variant     'x轴增量9 g8 {( A1 }" w) O+ g) O, y+ p
Dim movy As Variant     'y轴增量
; @$ N! A. ^) _2 wDim movz As Variant     'z轴增量
0 a; q8 I. k4 `& z6 Y4 O: HDim getobj As Object    '移动对象3 f1 w# J4 g  H8 d, R& Z8 _
Dim movtimes As Integer '移动次数1 H6 U& ~( @* ~# \6 Z$ u
ThisDrawing.Utility.GetEntity getobj, po, "请选择移动对象"5 b9 J, b# R2 g. `: w, [' E( P
p0(2) = ThisDrawing.Utility.GetPoint(, "起点:")
  A5 J: u. Q% S: np1(2) = ThisDrawing.Utility.GetPoint(p0, "终点:")! A  w) k4 |6 b
pe(2) = p0(2)
! H! c3 p% [# ^/ \4 e6 x# w8 `' kpc(2) = p0(2)
8 _6 P, W& [8 ]1 f: o) x, t4 A: @movtimes = 30
# b: D% p2 f* m% imovx = (p1(0) - p0(0)) / movtimes1 F; ?% i* N  P* v$ o
movy = (p1(1) - p0(1)) / movtimes
& |! y: O" Z/ J2 i" g( j. @$ Wmovz = (p1(2) - p0(2)) / movtimes
4 K0 H; ]0 H; i+ oFor i = 1 To movtimes
/ l- s6 w: w& {% H; a# [) h  pe(0) = pc(0) + movx/ L. Z) A! y+ K4 D' l5 x' D
  pe(1) = pc(1) + movy
' `8 L. u: I! @3 c" y3 X$ K  pe(2) = pc(2) + movz
& [' ?* ^8 w! c  getobj.move pc, pe    '移动一段
! g. E9 `5 _8 d4 h8 r4 ^0 W  getobj.Update         '更新对象
( y/ h/ w2 f- v1 nNext/ Q& s9 z% X! g4 q7 j( p" {" i
End Sub
9 q, Z; E% `* j: ]% I
* C4 a; {+ m( G! o1 Z$ m; x) f: t. C+ |# B( i6 H: L
程序编译执行都没有错误,但是在选择完移动对象,选择起点的时候就报错(如图)
9 R& p, ?0 c/ S7 P7 q1 B3 ?( r3 U8 n/ A9 h: ~& s
[ 本帖最后由 jasmine126 于 2008-10-31 15:17 编辑 ]
error.JPG
发表于 2008-10-31 13:47:11 | 显示全部楼层 来自: 中国辽宁营口
简单改写了你的程序,自己对照一下都有哪些部分不一样
# k" z! [  l! K/ p( B# [9 k
  1. Sub Move()
    & l5 o9 s- s7 f' j/ V7 t
  2.     Dim P0 As Variant       '起点坐标
    7 X$ f9 b4 Q  w
  3.     Dim P1 As Variant       '终点坐标
    : b$ N. w$ q2 C. ?: U. h# O$ @
  4.     Dim Pc(2) As Double     '移动时基点坐标  m- E  J4 y) W) r
  5.     Dim Pe(2) As Double     '移动时第二点坐标% s' D$ h6 _' O' U& T. l
  6.     Dim MovX As Double      'x轴增量8 k& b  |4 u. J8 u9 ^: z0 @, m
  7.     Dim MovY As Double      'y轴增量+ q; @$ Q7 ~: q7 J# I4 N# a
  8.     Dim MovZ As Double      'z轴增量
    ' e" H) r7 x" \$ {* ?  @
  9.     Dim GetObj As Object    '移动对象
    / S3 e& t  P6 z- D
  10.     Dim MovTimes As Integer '移动次数* w- ^7 w1 |% z! m
  11.     ThisDrawing.Utility.GetEntity GetObj, P0, "请选择移动对象"6 q$ i' t6 l: {1 _* Z
  12.     P0 = ThisDrawing.Utility.GetPoint(, "起点:" ) 6 q# h2 D1 i% I9 M/ Q7 n
  13.     P1 = ThisDrawing.Utility.GetPoint(P0, "终点:" )
    % E& H; D1 v0 Q
  14.     MovTimes = 30, v0 _: J) v: K
  15.     MovX = (P1(0) - P0(0)) / MovTimes6 e7 o7 M2 p7 u- t1 ?7 r0 j/ h' [+ }7 x
  16.     MovY = (P1(1) - P0(1)) / MovTimes, i* D! j9 k3 V' G0 `# S9 E8 L
  17.     MovZ = (P1(2) - P0(2)) / MovTimes7 a# N1 }( w# Q8 k3 U9 k0 K8 ^' Q
  18.     Pe(0) = Pc(0) + MovX
    & B! T" e! ~- r0 m6 A* }
  19.     Pe(1) = Pc(1) + MovY
    2 G9 O7 G) M- r. Y
  20.     Pe(2) = Pc(2) + MovZ4 D* K2 \7 s* i
  21.     For I = 1 To MovTimes2 n7 l4 F8 E- C3 k; D. j$ y
  22.       GetObj.Move Pc, Pe    '移动一段
    ) ]0 X- N, n3 ?1 y
  23.       GetObj.Update         '更新对象8 Q( O5 R2 o$ z4 \
  24.     Next
    ; v' p. E% P: ]/ 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 )

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