QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 3084|回复: 2
收起左侧

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

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

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

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

x
按照AUTOCAD VBA的学习资料,我把二维的改成三维的之后出现如图错误,哪位大大能帮忙指正一下 非常感谢1 z' W) K2 r7 X9 B3 ], @8 q
0 J4 _& Q" ?3 {/ n! }. {
改过后程序为:
, s- l& [& x' A. d3 r: v3 D  h) z( k. D1 N* k
Public Sub move()
7 z% b; x0 f* e- hDim p0(2) As Variant       '起点坐标
* I% m3 h- F( y: l5 RDim p1(2) As Variant       '终点坐标
; ^* o( A1 ~/ F% ?8 \! RDim pc(2) As Variant       '移动时起点坐标+ e/ O8 V7 z4 V; w6 a2 v; p
Dim pe(2) As Variant       '移动时终点坐标: Z9 `: H5 H; T% q
Dim movx As Variant     'x轴增量; m: m2 b# M, s+ r6 K7 E( R, n
Dim movy As Variant     'y轴增量: _$ x$ l' U" o4 B4 a7 o
Dim movz As Variant     'z轴增量
( p$ H0 d5 K; G& QDim getobj As Object    '移动对象  z) J5 t7 q6 D- H" m" X! {
Dim movtimes As Integer '移动次数; c* t' j2 i$ t
ThisDrawing.Utility.GetEntity getobj, po, "请选择移动对象": `4 w) [$ w6 _
p0(2) = ThisDrawing.Utility.GetPoint(, "起点:")
! v' X+ Z  y- m( v+ B+ F+ O, |4 ap1(2) = ThisDrawing.Utility.GetPoint(p0, "终点:")
/ ^2 Y0 u. k' ]7 V/ Ype(2) = p0(2)% d" D2 Y4 N) t
pc(2) = p0(2)
& L1 m( H# ^# D* e7 @movtimes = 30
  W( p6 \5 d  v" b9 [# J, Nmovx = (p1(0) - p0(0)) / movtimes* \. l2 F/ i1 ^9 z+ D: w
movy = (p1(1) - p0(1)) / movtimes
- `' [, U$ q9 e1 K, }movz = (p1(2) - p0(2)) / movtimes6 l5 Y5 j9 C1 {+ h5 D6 K( k
For i = 1 To movtimes
0 C8 E) w% n$ ^) P  pe(0) = pc(0) + movx
0 h" l. a. c* S# Y( p  pe(1) = pc(1) + movy
" p1 t/ w; y6 M" h' [  pe(2) = pc(2) + movz6 V& D2 J: Z  T4 b9 V
  getobj.move pc, pe    '移动一段( [0 d3 P- B9 O/ I  e3 A. R
  getobj.Update         '更新对象
% R8 d, R, q7 |: c1 SNext% Y7 m, g1 g& r0 \
End Sub
* }$ I9 N9 E4 ?( Z( K/ K9 v- T  s" M( ^- Q

3 v2 A4 [% I1 o* W; t3 @3 B) e8 q% c程序编译执行都没有错误,但是在选择完移动对象,选择起点的时候就报错(如图)
# Y. ?5 t8 l8 \2 P# s( q# S
" V* \. Z$ K+ u1 R! u0 ?4 h[ 本帖最后由 jasmine126 于 2008-10-31 15:17 编辑 ]
error.JPG
发表于 2008-10-31 13:47:11 | 显示全部楼层 来自: 中国辽宁营口
简单改写了你的程序,自己对照一下都有哪些部分不一样
# _) M9 s0 ]! j, o1 w7 I7 [
  1. Sub Move()
    6 D+ t! W' Z* p; p4 D5 \( q
  2.     Dim P0 As Variant       '起点坐标# b4 {) |3 `+ d0 s: E1 j5 ^
  3.     Dim P1 As Variant       '终点坐标9 H% z/ L& d6 `9 s2 [
  4.     Dim Pc(2) As Double     '移动时基点坐标
    * C8 {) D3 J" H$ `+ g; W% t8 [* X8 y
  5.     Dim Pe(2) As Double     '移动时第二点坐标
    , E4 [9 U' L- K
  6.     Dim MovX As Double      'x轴增量$ d; f3 e- H  W' |
  7.     Dim MovY As Double      'y轴增量) \9 E" W0 w  N( G
  8.     Dim MovZ As Double      'z轴增量
    ! I# O8 s: p! y& D9 h8 L+ S
  9.     Dim GetObj As Object    '移动对象9 m/ O3 W" {- N. W4 e4 H
  10.     Dim MovTimes As Integer '移动次数
    + |3 w4 I# U6 l# w! ^/ R# |. ^% [
  11.     ThisDrawing.Utility.GetEntity GetObj, P0, "请选择移动对象"0 }7 x9 K# b5 Q# l, E% S# D5 r
  12.     P0 = ThisDrawing.Utility.GetPoint(, "起点:" ) , M$ f) X( G- d7 e
  13.     P1 = ThisDrawing.Utility.GetPoint(P0, "终点:" )
    7 E$ S+ o2 ?. [6 _) M
  14.     MovTimes = 30" U' l# [$ z4 v) |, y
  15.     MovX = (P1(0) - P0(0)) / MovTimes( F% y" }1 R$ ~: A1 z$ k
  16.     MovY = (P1(1) - P0(1)) / MovTimes
    5 F# K& @% j4 G% W5 F* _* v
  17.     MovZ = (P1(2) - P0(2)) / MovTimes5 Z2 b2 I: e; V: @5 Y8 ?7 ~
  18.     Pe(0) = Pc(0) + MovX
    . I2 Z0 Q7 K! S9 o6 k" @
  19.     Pe(1) = Pc(1) + MovY+ U3 q# s3 L8 G
  20.     Pe(2) = Pc(2) + MovZ
    ; a$ y9 A) _* m6 ]* G
  21.     For I = 1 To MovTimes1 c% o# `3 Q1 M) G
  22.       GetObj.Move Pc, Pe    '移动一段
    . l% h/ N- @7 _) k" u
  23.       GetObj.Update         '更新对象
    ' E3 |9 Z+ S* c/ o" f# ~- q. a# O' V
  24.     Next. l) J# b2 f, M
  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 )

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