QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
9天前
查看: 2107|回复: 8
收起左侧

[求助] 关于一个变量

[复制链接]
发表于 2009-3-27 13:11:16 | 显示全部楼层 |阅读模式 来自: 中国江苏苏州

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

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

x
我在画图时要一个变量点,命令循坏一次变量增加10请问各位该如做最好?不胜感谢!比如画圆,第一次半径是10,第二次就是10+10=20,第三次是20+10=30,依次类推,只到ESC退出.谢谢了!
发表于 2009-3-27 21:03:31 | 显示全部楼层 来自: 中国浙江宁波
VBA中插入模块,输入以下代码,运行sub addcircle;
1 B2 k# U5 m. C6 Y1 SOption Explicit; j# r) l6 p8 b6 j- L2 i% f
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
, g, G8 U! J8 y; h6 `$ s5 q' o. IPublic Const VK_ESCAPE = &H1B
, u: C- Z7 q0 N2 F( s- O$ aSub addcircle()
7 b. Y: d$ M  Z0 N( c/ x; q1 n    Dim circleObj As AcadCircle
" N% k& Q+ t! g    Dim centerPoint(0 To 2) As Double
. x: m# _3 ^; Z- O$ [    Dim radius As Double
2 v* c+ b' W" C# m# e     centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#7 Y4 U8 Z8 `& p  A# t0 ~' p
    radius = 10#( E( P% e# g0 o' _: }0 l  m# |
    Do While GetAsyncKeyState(VK_ESCAPE) <> -32767
+ N/ |+ z- a. d    DoEvents% L& Z! F( n% V8 y* J
    Set circleObj = ThisDrawing.ModelSpace.addcircle(centerPoint, radius)
: x4 u* `- G( y) k4 d    radius = radius + 10! R% g1 V6 @2 z. C0 C: T. o
    ZoomAll
6 O  T% H  e4 C9 `- y    Loop
) D& ^) F' B0 T' k: \8 q End Sub

评分

参与人数 1三维币 +5 收起 理由
2005llnn + 5 应助

查看全部评分

发表于 2009-3-28 11:06:20 | 显示全部楼层 来自: 中国北京
不错,学习一下!!
发表于 2009-3-28 12:58:55 | 显示全部楼层 来自: 中国江苏无锡
什么叫“变量点”?
 楼主| 发表于 2009-3-28 14:36:41 | 显示全部楼层 来自: 中国江苏苏州
原帖由 sealive_leafage 于 2009-3-27 21:03 发表 http://www.3dportal.cn/discuz/images/common/back.gif
3 U: \+ p1 W5 B: L0 \, {' J( c8 dVBA中插入模块,输入以下代码,运行sub addcircle;0 z$ [" c5 \6 I1 j) n- d+ ~8 a
Option Explicit3 u2 N) S, H+ Q: }4 E. v7 X
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer( r& {4 b' z& v# h% S) \% Z
Public Const VK_ESCAPE = &H1B. ]$ Q6 K( k0 l  |4 [, [5 N
Sub addcircle()
5 x+ m  W. g) e6 |# S, ]0 L$ r4 p$ q...

  E8 n+ }. ]- N: k( C$ E谢谢这位9 i& I2 \4 |3 H, d1 [: g, |4 T7 S
!可惜我不是太懂
 楼主| 发表于 2009-3-28 14:41:30 | 显示全部楼层 来自: 中国江苏苏州
原帖由 TALKE 于 2009-3-28 12:58 发表 http://www.3dportal.cn/discuz/images/common/back.gif7 C- x' p  `! m; i9 S- N
什么叫“变量点”?

2 Y3 `4 d9 y* Y1 W! w2 U+ {比如说我在画圆时,CAD要我输入半径值,当作R,我给CAD这个变量一个值比如R=10,而每操作一次,R的值增加10就是R=R+10的意思.
发表于 2009-3-28 15:14:16 | 显示全部楼层 来自: 中国江苏无锡
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。
/ {; W2 L& U" l! }7 s' \# j- E  Y
! _9 _! G/ ?6 f1 ]) Z0 c在lisp中变量可以是点,比如:
& {0 n, p, x9 U) X(setq p1 (list 20 30))/ E7 b: O. Q. M2 i
(setq p2 (list 120 100))& Y6 o0 I4 Q& \
那么就可以认为p1,p2分别是点:( Q" C: r9 _& Q# v9 \- ]
函数(command "line" p1 p2 "")可以产生正确结果即在绘图空间中产生(20,30)-(120,100)的一段直线。
2 t) c* n; M8 h4 T# v$ y1 p所以你一旦提到点,人们就很容易想到这样的点变量,这样的变量无所谓增量的,所以容易引起误会。
$ d; C) D3 u6 c3 Z
! O  c( b' o( L# d# m( q- Z5 J9 M0 v你的意思大概是在循环体中怎样使变量每循环一次增加一个常量吧?如果这个变量是r,增量是10,在lisp语言中赋值函数与+函数就可完成:
# W( e6 z  e" l(setq r (+ r 10))$ s" S7 p+ `( ^4 h; K
在C语言、VB中都是普通的赋值语句。) q3 {( d5 g3 p; z7 o. r6 A) l  K

+ `, f+ A9 P7 q( ^+ G[ 本帖最后由 TALKE 于 2009-3-28 16:25 编辑 ]

评分

参与人数 1三维币 +5 收起 理由
2005llnn + 5 应助

查看全部评分

 楼主| 发表于 2009-3-31 11:57:49 | 显示全部楼层 来自: 中国江苏苏州
原帖由 TALKE 于 2009-3-28 15:14 发表 http://www.3dportal.cn/discuz/images/common/back.gif
6 m3 i8 v4 \- k/ b4 t; l* d* B& n你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。" x$ ?4 s# U7 q0 o! k

  e' r: z6 z0 D4 }& m/ e3 ^; r在lisp中变量可以是点,比如:# f# e4 V4 O8 F! \
(setq p1 (list 20 30))
$ ]% y( b1 U; ?& v+ N$ \(setq p2 (list 120 100 ...

% d% k( u! p9 F3 f% y  u谢谢这位,其实关于LISP也好VB也好,我都不是太懂,我想能否在CAD COMMAND状态下直接输入R,命令每操作一次,实现R+10有无办法?
+ ?9 x, m8 a* o谢谢了。。
发表于 2009-3-31 12:53:58 | 显示全部楼层 来自: 中国江苏无锡
(setq r 10)
- D4 D! l% X* C+ D(defun c:c ()
; e7 H/ {4 A2 Y9 M$ n8 Y(command "_circle" pause r)
8 V+ b, {* y, q" J" U" r0 I(setq r (+ r 10))
; a. Q8 M# t$ s! f)( \+ i$ b2 s% ?5 g6 b9 t
上面的语句可以满足加十的要求,但不用输入R,只要点选中心点,其半径自动加10,完成圆。( x9 z6 P, r8 `+ t6 W9 z% u
在LISP里加载,然后在命令里输c即可
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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