QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
10天前
查看: 2042|回复: 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;
, D% h5 s% f* S- E& n" {7 FOption Explicit$ G; |$ b/ T% i: f* g; F9 r3 b
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
, o# E9 Y9 R3 k  fPublic Const VK_ESCAPE = &H1B
1 ?# w; V1 ?1 D8 m/ TSub addcircle()  D5 R# L; g$ [7 o) g- @
    Dim circleObj As AcadCircle' F; T6 _/ t2 p) k7 D
    Dim centerPoint(0 To 2) As Double3 ?2 }7 i, _  p" a
    Dim radius As Double
+ q+ {2 q  W# I9 ^7 H1 d     centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#3 b/ s! e9 B6 n% J6 Q: ~0 ?; R
    radius = 10#; t4 Z. K/ Q: p# Z0 t1 l+ t% h
    Do While GetAsyncKeyState(VK_ESCAPE) <> -32767
& Y3 t, b+ d2 F& y    DoEvents
' e$ v" ?" f& X3 E. y    Set circleObj = ThisDrawing.ModelSpace.addcircle(centerPoint, radius)
- F5 b0 G0 Y- q* N) f6 \    radius = radius + 10
& l5 p  @9 }. B6 ]9 a. a+ E    ZoomAll/ y. r  ?: [4 m6 y
    Loop$ c* J; T' a+ z# r$ j: h0 w4 [
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.gif6 m7 x2 i" [( ^; I% b
VBA中插入模块,输入以下代码,运行sub addcircle;
$ d" o" O! o* I, n9 H- POption Explicit
2 @/ X. ~3 F/ L, l8 H! QPublic Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer' E" w, x  Z1 [" h2 b
Public Const VK_ESCAPE = &H1B$ h# u9 B/ b3 {% c  O
Sub addcircle(), J7 F) H' x% \  u5 i; |
...

: ^$ h( r9 x- Z. f2 h7 K' }" R8 m谢谢这位
8 f9 R  W: n" F# r!可惜我不是太懂
 楼主| 发表于 2009-3-28 14:41:30 | 显示全部楼层 来自: 中国江苏苏州
原帖由 TALKE 于 2009-3-28 12:58 发表 http://www.3dportal.cn/discuz/images/common/back.gif
* M# d# Y; q8 j! y什么叫“变量点”?
; @; N+ J  [2 V, F' R$ B* e: _
比如说我在画圆时,CAD要我输入半径值,当作R,我给CAD这个变量一个值比如R=10,而每操作一次,R的值增加10就是R=R+10的意思.
发表于 2009-3-28 15:14:16 | 显示全部楼层 来自: 中国江苏无锡
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。* l" u: c5 i; L( P. ]

6 v4 j6 H5 ]( Q1 ?1 t在lisp中变量可以是点,比如:
3 u8 X- v5 G" U3 h4 S0 u(setq p1 (list 20 30))6 F5 ^9 ~7 _* X
(setq p2 (list 120 100))
) }" r4 H5 C1 q: c) V; r那么就可以认为p1,p2分别是点:* q/ Z9 J8 t4 x- M% `6 b5 d
函数(command "line" p1 p2 "")可以产生正确结果即在绘图空间中产生(20,30)-(120,100)的一段直线。
  t) {6 V! v4 g: }' p9 g所以你一旦提到点,人们就很容易想到这样的点变量,这样的变量无所谓增量的,所以容易引起误会。6 _. B' Z1 Q1 @( j7 h
& h% C' b4 _8 @$ o; y* B
你的意思大概是在循环体中怎样使变量每循环一次增加一个常量吧?如果这个变量是r,增量是10,在lisp语言中赋值函数与+函数就可完成:
# \% Y+ B& O$ Q8 J(setq r (+ r 10))
2 S6 u* a8 b, X% ~( q在C语言、VB中都是普通的赋值语句。
9 u. w" m  c8 }. K; r. l; x4 p2 ^& c) H  B( b) O1 C! P0 |
[ 本帖最后由 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
0 S# u  o6 I9 J( r: _你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。# V$ m+ W& q6 T7 @. a  B) |: i
2 U: {9 T# u- X1 \
在lisp中变量可以是点,比如:
$ h8 o/ ~, @3 q; R2 W  H1 F(setq p1 (list 20 30))
* Z( t% C; u8 V, E: H1 R  v7 k/ _(setq p2 (list 120 100 ...
3 v, p1 R5 x: B* f7 P8 r, A
谢谢这位,其实关于LISP也好VB也好,我都不是太懂,我想能否在CAD COMMAND状态下直接输入R,命令每操作一次,实现R+10有无办法?# P) C# f1 e% s
谢谢了。。
发表于 2009-3-31 12:53:58 | 显示全部楼层 来自: 中国江苏无锡
(setq r 10)$ S# L% i6 m" C( h
(defun c:c ()- L# Y& k2 _; R' d/ J) x
(command "_circle" pause r)
* _# p( @1 B7 ~5 o(setq r (+ r 10))
. r0 h$ Z$ `- t)
; u# g, b0 _1 D' q! H上面的语句可以满足加十的要求,但不用输入R,只要点选中心点,其半径自动加10,完成圆。6 A5 V: ^* k4 s) a8 R
在LISP里加载,然后在命令里输c即可
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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