QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 2135|回复: 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;8 I  Y0 D0 v1 p$ O# [& d& _5 f! Q
Option Explicit+ V( x8 C9 k3 b$ U3 J% p, R
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer' X  y3 d6 F6 g4 B
Public Const VK_ESCAPE = &H1B- o) y, e5 }! E! L- k# n- ]
Sub addcircle()
2 d/ ]) K2 i9 y% F# e7 ?3 L0 z+ B    Dim circleObj As AcadCircle
- @  ?( m  P7 D9 Q/ `    Dim centerPoint(0 To 2) As Double
1 O" R8 y& e1 A% c5 |. Z2 X- O    Dim radius As Double
, C9 Q8 _# Y) O     centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#
- S+ y% @/ w0 W9 f6 W* N* m  I- h    radius = 10#6 x  q  l1 R3 T8 x
    Do While GetAsyncKeyState(VK_ESCAPE) <> -327670 V: _) U+ O$ V/ e* f
    DoEvents7 D5 C3 S: v# B' z+ V
    Set circleObj = ThisDrawing.ModelSpace.addcircle(centerPoint, radius)' O4 {( w* G+ A4 ~5 a
    radius = radius + 101 o& ]6 r) v% f3 W9 \3 }
    ZoomAll
# }1 h7 _% r- s2 p    Loop( I, n3 ~& g$ Z6 S3 a& \( 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
' g1 u4 {; J+ w8 M  @  q# l6 BVBA中插入模块,输入以下代码,运行sub addcircle;
1 O/ p, X+ o: Y, E' G5 [! DOption Explicit
2 Z8 X$ N* [& J: g* UPublic Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
* m. D  q8 V* a6 N' Q$ e0 X6 T" ~- ]Public Const VK_ESCAPE = &H1B, K- T8 M/ Y3 X3 n' @
Sub addcircle()
  z/ l; y& T. b! ^; i...
$ y) S& H& i% ^, g) U% B- r
谢谢这位0 A! k3 a% u4 S8 W3 X9 w
!可惜我不是太懂
 楼主| 发表于 2009-3-28 14:41:30 | 显示全部楼层 来自: 中国江苏苏州
原帖由 TALKE 于 2009-3-28 12:58 发表 http://www.3dportal.cn/discuz/images/common/back.gif7 ^: f2 {- A$ c, h5 X! B7 @
什么叫“变量点”?

. c* j2 ~0 c$ d$ D% Z比如说我在画圆时,CAD要我输入半径值,当作R,我给CAD这个变量一个值比如R=10,而每操作一次,R的值增加10就是R=R+10的意思.
发表于 2009-3-28 15:14:16 | 显示全部楼层 来自: 中国江苏无锡
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。9 ?. y/ X9 v/ h5 ]$ I

0 }0 Y+ y/ t/ n6 x5 j/ M在lisp中变量可以是点,比如:. z7 K( _+ @, m4 d
(setq p1 (list 20 30))
: T1 a; g# A: {5 Y7 |8 @7 ]. r(setq p2 (list 120 100))
4 A) L4 ^- N/ i2 Q# Q那么就可以认为p1,p2分别是点:
& }/ U, L6 q5 v7 q函数(command "line" p1 p2 "")可以产生正确结果即在绘图空间中产生(20,30)-(120,100)的一段直线。) k+ b& u6 J$ `! {
所以你一旦提到点,人们就很容易想到这样的点变量,这样的变量无所谓增量的,所以容易引起误会。
) ~" a( ~8 x1 H' s; \$ @" M3 y# b, a: l5 N: l' ^
你的意思大概是在循环体中怎样使变量每循环一次增加一个常量吧?如果这个变量是r,增量是10,在lisp语言中赋值函数与+函数就可完成:( C- t6 \3 ?. \; \; W
(setq r (+ r 10)); d7 ^, M( ]' h4 N( l- Z
在C语言、VB中都是普通的赋值语句。
! e6 j# d! f: f5 K& w- ~" @
! i3 ~  [4 W2 z! M9 [$ {  n# X$ e[ 本帖最后由 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
( t" \: \9 j" Y! j  \你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。
7 x6 r# x8 [6 E% }+ L# C- Q7 l, i. K% d; ?* S0 A5 A. L
在lisp中变量可以是点,比如:8 ]% t3 y* D, j
(setq p1 (list 20 30))
, `, K9 \4 `4 b- t7 t2 o; K: a(setq p2 (list 120 100 ...
% E) ~# W& M9 `, T
谢谢这位,其实关于LISP也好VB也好,我都不是太懂,我想能否在CAD COMMAND状态下直接输入R,命令每操作一次,实现R+10有无办法?
! H, Z1 X  S3 ~# p4 T( l3 W  l谢谢了。。
发表于 2009-3-31 12:53:58 | 显示全部楼层 来自: 中国江苏无锡
(setq r 10)
0 p: D1 i7 T7 ?: l+ i: v(defun c:c (), j( Q  Q3 b( p) A: t
(command "_circle" pause r)
  N& G# \/ t/ P1 r6 A7 E) x(setq r (+ r 10))
+ C3 p+ Q0 L% P1 X)4 n3 S" x- u- F# d
上面的语句可以满足加十的要求,但不用输入R,只要点选中心点,其半径自动加10,完成圆。' V: l& }( R; j: x6 F6 |; a9 L
在LISP里加载,然后在命令里输c即可
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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