QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
9天前
查看: 2041|回复: 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;
% I/ E% t* A9 \6 xOption Explicit' P' W3 ]7 |9 Q7 g  T
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer: U8 A3 C9 s9 k/ U2 m& ]* R
Public Const VK_ESCAPE = &H1B% x) A4 f$ D& E8 X: H: a) r
Sub addcircle()
5 w3 k2 @8 u: o% i- {  o    Dim circleObj As AcadCircle
1 R0 Q* j3 i3 O, n3 s; Y& g    Dim centerPoint(0 To 2) As Double. V9 K& T" v- v
    Dim radius As Double  L8 ~, ~3 f. T% o# X  G6 r% ]! z1 e
     centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#
1 F+ @' \" _) ?    radius = 10#* w+ m$ ~; J& Q
    Do While GetAsyncKeyState(VK_ESCAPE) <> -32767
9 v- Z. e; m7 m5 n3 N5 U$ ?5 X# b    DoEvents+ z5 b  D. o2 |
    Set circleObj = ThisDrawing.ModelSpace.addcircle(centerPoint, radius)
2 [. [1 O2 t& v/ H/ S9 |    radius = radius + 104 U: S) k: R( y3 s! C: e
    ZoomAll
/ O' n( A; A2 H, |    Loop
$ z0 ^0 u6 x5 @1 g7 g7 r% |" } 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.gif7 `1 y) L3 o6 c$ `2 d
VBA中插入模块,输入以下代码,运行sub addcircle;! P8 p0 i( N7 F: E  p
Option Explicit$ L' d3 M* Y; I
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer+ J: B8 t* {2 ~% Z
Public Const VK_ESCAPE = &H1B
+ U4 A4 d, u) r5 a/ Q- q, [Sub addcircle()( t) p. i" P  `! W: x
...

3 u* L- M3 i6 C谢谢这位
# b& i: V# N5 T!可惜我不是太懂
 楼主| 发表于 2009-3-28 14:41:30 | 显示全部楼层 来自: 中国江苏苏州
原帖由 TALKE 于 2009-3-28 12:58 发表 http://www.3dportal.cn/discuz/images/common/back.gif4 b; `  _& A3 m* G0 m& y
什么叫“变量点”?
4 Y, n$ F6 |/ t' B6 n3 X! c
比如说我在画圆时,CAD要我输入半径值,当作R,我给CAD这个变量一个值比如R=10,而每操作一次,R的值增加10就是R=R+10的意思.
发表于 2009-3-28 15:14:16 | 显示全部楼层 来自: 中国江苏无锡
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。( Q" I9 B  e1 ?9 [7 O

( i) X( G$ g( O# N; X在lisp中变量可以是点,比如:
! _7 c3 C8 U0 Z/ @& K(setq p1 (list 20 30))
( i% I; L- f( H% l' |- L4 }(setq p2 (list 120 100))
; s4 B/ v5 m$ H2 V- x% \- P3 [那么就可以认为p1,p2分别是点:
/ S! @) B" _+ e& a5 u/ z$ [+ E- w函数(command "line" p1 p2 "")可以产生正确结果即在绘图空间中产生(20,30)-(120,100)的一段直线。* J+ o  s, F, ]6 i. K8 w
所以你一旦提到点,人们就很容易想到这样的点变量,这样的变量无所谓增量的,所以容易引起误会。- @7 c- S( G1 b2 Z1 f4 o
1 Y* @( v; k" H7 {1 s# x! S
你的意思大概是在循环体中怎样使变量每循环一次增加一个常量吧?如果这个变量是r,增量是10,在lisp语言中赋值函数与+函数就可完成:7 E/ q; h8 u* [
(setq r (+ r 10))
; {- T  e8 F; C2 [在C语言、VB中都是普通的赋值语句。
( _: y) D3 `; r
* t! A# O2 J. R$ }6 d/ M[ 本帖最后由 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
" n$ |- {; c5 [0 h你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。
4 F4 k+ [: Y1 h* l- L! }/ ?: C. L% a  q' d- x
在lisp中变量可以是点,比如:  J0 ~" S0 g% g' V& b' }7 f
(setq p1 (list 20 30))) p, k0 o9 _4 ?* K! ?
(setq p2 (list 120 100 ...

( T, \+ Y7 r2 a: P# ?; D谢谢这位,其实关于LISP也好VB也好,我都不是太懂,我想能否在CAD COMMAND状态下直接输入R,命令每操作一次,实现R+10有无办法?
. A1 Z* S4 ]6 W& n& g谢谢了。。
发表于 2009-3-31 12:53:58 | 显示全部楼层 来自: 中国江苏无锡
(setq r 10)
0 j4 G8 m/ @) X  P(defun c:c ()9 t- @& ~$ q- R
(command "_circle" pause r)
* l+ L5 `' v& Q" w(setq r (+ r 10))1 G, B" d5 u: o0 \% Z
)0 W; Q: ]) C/ i6 U' T: S4 n/ \
上面的语句可以满足加十的要求,但不用输入R,只要点选中心点,其半径自动加10,完成圆。! B/ i9 m8 N& x' U; w
在LISP里加载,然后在命令里输c即可
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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