QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 2048|回复: 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 ~; m" G( ?: w) J4 W. ^2 X
Option Explicit
4 L& ]# {  Z  g( jPublic Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer, i3 \% C9 E1 d* E  G
Public Const VK_ESCAPE = &H1B) m) X: Q" W2 _( o
Sub addcircle()8 o7 {" H8 V1 w( @
    Dim circleObj As AcadCircle; t  r3 R, g& m" g
    Dim centerPoint(0 To 2) As Double; U% g" J" F0 T4 R# y' I' e2 J0 Q
    Dim radius As Double
% O  z8 r8 B' W# E; P' r     centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#
6 Q% ]' O" d. h2 L# ^    radius = 10#
& e$ ~% m4 b% w7 C$ |    Do While GetAsyncKeyState(VK_ESCAPE) <> -32767
, b+ A- q7 a( N    DoEvents
5 `) B& F; q; O8 w    Set circleObj = ThisDrawing.ModelSpace.addcircle(centerPoint, radius)& `* f; G9 G! P( s
    radius = radius + 10
6 q8 D# d9 v8 }7 j2 T    ZoomAll
' H' h2 y' {9 O. p4 B1 I    Loop
6 z$ X6 j, {( M 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
. ]$ B/ P6 C, r+ x4 v8 UVBA中插入模块,输入以下代码,运行sub addcircle;! k5 ?3 U) ?9 U
Option Explicit
4 Q6 S# `: m; g" z$ W$ ^  m* [- TPublic Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer( W9 p3 J5 S. V4 E. J# }
Public Const VK_ESCAPE = &H1B0 ]" u" k/ [1 d4 h; X* k
Sub addcircle()
( X% x3 l% l+ Z* |# W! }...
9 f& [5 @; }3 A# K8 N
谢谢这位: s2 n+ D4 [4 }) Y
!可惜我不是太懂
 楼主| 发表于 2009-3-28 14:41:30 | 显示全部楼层 来自: 中国江苏苏州
原帖由 TALKE 于 2009-3-28 12:58 发表 http://www.3dportal.cn/discuz/images/common/back.gif
3 ?0 B  N7 L$ @/ d7 V- u9 u% v什么叫“变量点”?

8 o* m9 ?: J2 i比如说我在画圆时,CAD要我输入半径值,当作R,我给CAD这个变量一个值比如R=10,而每操作一次,R的值增加10就是R=R+10的意思.
发表于 2009-3-28 15:14:16 | 显示全部楼层 来自: 中国江苏无锡
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。3 b6 F% ^% k& d. R8 D  k' W  T
/ ]% C7 N6 @3 X$ s4 Q+ n5 R
在lisp中变量可以是点,比如:# P( k* ]' `+ v* f+ D1 n
(setq p1 (list 20 30))
# p0 a2 O$ N2 `6 m$ u5 {# r(setq p2 (list 120 100))5 g+ _9 [1 n1 W
那么就可以认为p1,p2分别是点:
6 U; K3 ?) O( \8 ]$ Y# L函数(command "line" p1 p2 "")可以产生正确结果即在绘图空间中产生(20,30)-(120,100)的一段直线。
4 v0 V. [( G* J1 A所以你一旦提到点,人们就很容易想到这样的点变量,这样的变量无所谓增量的,所以容易引起误会。6 L' j& ~; g  R8 Y

! P" t# S( o0 Q; s; \  X4 Q你的意思大概是在循环体中怎样使变量每循环一次增加一个常量吧?如果这个变量是r,增量是10,在lisp语言中赋值函数与+函数就可完成:
) Y% i: x/ K) c$ M- B2 q(setq r (+ r 10))
( I9 Y. r1 H: m7 u. J5 z8 D# e在C语言、VB中都是普通的赋值语句。% m$ f% ?3 G) q7 n! H& a% a

/ J- r# w' s$ Z( @2 v8 i+ W8 Q7 C% V[ 本帖最后由 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) e0 M( L* w# O
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。
/ b8 u( v' c/ S& C+ }& J! t9 ~/ a. s3 c9 W7 r
在lisp中变量可以是点,比如:4 Q' m. K) V& [
(setq p1 (list 20 30)). X9 K5 _: w  a) K- T" n) O
(setq p2 (list 120 100 ...

+ m$ T/ }6 ~" L$ Z+ ]谢谢这位,其实关于LISP也好VB也好,我都不是太懂,我想能否在CAD COMMAND状态下直接输入R,命令每操作一次,实现R+10有无办法?
9 k2 I: K8 A7 ~# |6 }1 l( ~0 Y谢谢了。。
发表于 2009-3-31 12:53:58 | 显示全部楼层 来自: 中国江苏无锡
(setq r 10)
) n7 j' p) ^' K* G* D(defun c:c ()
) C, B% U: N7 Q5 b(command "_circle" pause r)+ c: q% Y2 \5 i1 `! s( C% j
(setq r (+ r 10))# V' G' _  Q% U2 ~6 g: N; w# D
)
. X" D( g! q6 n) k4 x' N6 f/ i上面的语句可以满足加十的要求,但不用输入R,只要点选中心点,其半径自动加10,完成圆。
4 a6 |( j0 Y4 D  C! a; ^* l0 v在LISP里加载,然后在命令里输c即可
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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