QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 2131|回复: 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;6 y# z' m5 k! _: }
Option Explicit
- z7 G, B2 e3 l3 ~& pPublic Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer$ b0 y6 p1 Y1 Q' ~
Public Const VK_ESCAPE = &H1B
& {" r/ A0 h( pSub addcircle()5 p, m* K* q! ~  g
    Dim circleObj As AcadCircle1 ^( l/ y. }7 q, t, q& U
    Dim centerPoint(0 To 2) As Double: Y+ t) Z# h/ ?; `
    Dim radius As Double1 C. H# W( z. j$ Q6 W
     centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#
, A2 o) D# R* \    radius = 10#5 I8 d! {8 n4 x6 S/ ~
    Do While GetAsyncKeyState(VK_ESCAPE) <> -32767" |" v9 r* y" z' |* k
    DoEvents: B" v3 ?, t! Y0 I+ o. }+ _7 H
    Set circleObj = ThisDrawing.ModelSpace.addcircle(centerPoint, radius)/ _( B% ~) q7 p9 D3 r- A
    radius = radius + 10$ |% k. e$ t" _9 B
    ZoomAll) ~8 h9 V  H1 b' T1 A
    Loop
8 `5 U( r) b; B0 ~ 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
0 Z( |$ j* u1 H) H) qVBA中插入模块,输入以下代码,运行sub addcircle;' S* E/ K, f, G9 d, k( ~* F
Option Explicit' ^- \+ y- J0 d4 H
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer' y9 ]9 B+ u" r2 ~
Public Const VK_ESCAPE = &H1B, a/ Q" o" {9 `7 G
Sub addcircle()
. R  X- Q1 x: Z4 L) ^/ e...

" \1 `3 t8 ~0 a谢谢这位
- w! V& T! w4 h!可惜我不是太懂
 楼主| 发表于 2009-3-28 14:41:30 | 显示全部楼层 来自: 中国江苏苏州
原帖由 TALKE 于 2009-3-28 12:58 发表 http://www.3dportal.cn/discuz/images/common/back.gif1 t; a4 o# I# z% z2 D; B/ q  I. S
什么叫“变量点”?
0 Q! ~0 b) e+ d+ @/ r
比如说我在画圆时,CAD要我输入半径值,当作R,我给CAD这个变量一个值比如R=10,而每操作一次,R的值增加10就是R=R+10的意思.
发表于 2009-3-28 15:14:16 | 显示全部楼层 来自: 中国江苏无锡
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。# j3 L$ l5 B; O& u. F
$ m* Y9 s' e3 Q) S
在lisp中变量可以是点,比如:, j9 x) `3 g1 f, G7 O1 U
(setq p1 (list 20 30))* j6 R) q+ |0 F6 A" A1 K8 [
(setq p2 (list 120 100))
: `. E& E" f0 H5 H9 W: S* q$ S3 b那么就可以认为p1,p2分别是点:5 ~' |" U' n9 G, S1 ^
函数(command "line" p1 p2 "")可以产生正确结果即在绘图空间中产生(20,30)-(120,100)的一段直线。
+ r! S- \4 B/ }. J4 o  I9 b所以你一旦提到点,人们就很容易想到这样的点变量,这样的变量无所谓增量的,所以容易引起误会。
: }4 A& E; ]# A
9 f/ q7 C+ {. b2 i4 z/ Y你的意思大概是在循环体中怎样使变量每循环一次增加一个常量吧?如果这个变量是r,增量是10,在lisp语言中赋值函数与+函数就可完成:
& E& N, `; \( j! o5 k5 H3 g* {/ }8 I(setq r (+ r 10))& ^* D( A" w9 I  R0 W
在C语言、VB中都是普通的赋值语句。2 L3 b) |4 O8 ?" {8 d! E

  |8 A9 a5 G. O3 r! 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
: H  m# }1 D  e! G* z你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。
3 }% Z1 S) [4 c, s. j7 p0 t
9 J  r- [& L" V: H& ~9 a$ `在lisp中变量可以是点,比如:
# G3 E2 ~3 ~; C(setq p1 (list 20 30))- o' g/ F- d5 I2 l
(setq p2 (list 120 100 ...
3 W& {3 B5 L- l2 y1 r
谢谢这位,其实关于LISP也好VB也好,我都不是太懂,我想能否在CAD COMMAND状态下直接输入R,命令每操作一次,实现R+10有无办法?& e5 _  e6 {( N; u. X% b8 @
谢谢了。。
发表于 2009-3-31 12:53:58 | 显示全部楼层 来自: 中国江苏无锡
(setq r 10)
' X( q- L& K1 R& ^# R' K$ y(defun c:c ()
- s) U" J" B5 p1 I2 k(command "_circle" pause r)
6 U$ D+ s/ g1 B(setq r (+ r 10))
/ K( P" z  `& r/ j)' H0 y8 L% V5 [1 ]  s: o- t
上面的语句可以满足加十的要求,但不用输入R,只要点选中心点,其半径自动加10,完成圆。
& l- [, e* p+ O& F" B( X9 I在LISP里加载,然后在命令里输c即可
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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