QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
9天前
查看: 2108|回复: 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;/ ^9 C6 Z; ]( e. ]: o9 C$ O  Y  v
Option Explicit# N. P1 t7 |# x4 C* p( a
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer- E+ z6 n8 ]' l, W, V" y0 o" ^
Public Const VK_ESCAPE = &H1B% q+ A3 q9 [1 E$ U; T; P7 v+ ~
Sub addcircle()2 n5 m% [6 [" \9 f
    Dim circleObj As AcadCircle
2 @" V; a- D3 W9 `5 z- m; p    Dim centerPoint(0 To 2) As Double( M' M* [4 R7 n0 ~: E% q
    Dim radius As Double: d  m! i8 c/ H( u
     centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#
; q  C* ^! Q" n/ }    radius = 10#
$ X; d+ l- f9 l: L" f9 a7 u    Do While GetAsyncKeyState(VK_ESCAPE) <> -327675 q7 ], x# c& [% I  R" x
    DoEvents5 W( `) O* r' D
    Set circleObj = ThisDrawing.ModelSpace.addcircle(centerPoint, radius)' m: A6 P" l" y, Q4 H
    radius = radius + 106 }6 N! o* c" I+ X1 Q
    ZoomAll2 H3 k" S8 O' R* t/ ^- I, {
    Loop
$ b. k5 M6 q7 a. ^: p) V$ L 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
# k0 n( m9 r" L1 u* b. W+ D8 s; eVBA中插入模块,输入以下代码,运行sub addcircle;: w' |- n8 ~# K6 c! Y+ x
Option Explicit
' O, U3 @5 H" @6 x; G- f- t% {' o8 YPublic Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer& b" }- w0 b2 \9 C0 w& @! d
Public Const VK_ESCAPE = &H1B
# K$ V0 F! [6 m  T- ~0 C) iSub addcircle()/ B' Y: i+ ]' p+ u, {7 w* c
...
: u3 a/ F" X9 k  l
谢谢这位
1 ]* b3 z+ G6 W4 ]' \9 C0 r!可惜我不是太懂
 楼主| 发表于 2009-3-28 14:41:30 | 显示全部楼层 来自: 中国江苏苏州
原帖由 TALKE 于 2009-3-28 12:58 发表 http://www.3dportal.cn/discuz/images/common/back.gif
( f( L# c5 O5 l什么叫“变量点”?

& v% t1 R- Q' [) i/ D/ y比如说我在画圆时,CAD要我输入半径值,当作R,我给CAD这个变量一个值比如R=10,而每操作一次,R的值增加10就是R=R+10的意思.
发表于 2009-3-28 15:14:16 | 显示全部楼层 来自: 中国江苏无锡
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。
0 y* M/ b% K% U+ F, B% ^5 h5 l1 c* h
在lisp中变量可以是点,比如:
" r) _0 `, n5 C- K3 A1 H(setq p1 (list 20 30))) I* \+ o: y6 {2 R( s4 z
(setq p2 (list 120 100))- P, |8 z; s% p0 W. B
那么就可以认为p1,p2分别是点:
( R2 v5 `) J& ?$ A  b函数(command "line" p1 p2 "")可以产生正确结果即在绘图空间中产生(20,30)-(120,100)的一段直线。4 X* {* l: e6 X( r8 n5 U2 }5 z
所以你一旦提到点,人们就很容易想到这样的点变量,这样的变量无所谓增量的,所以容易引起误会。" V: G$ c) s6 B" \3 H/ P
; X0 }9 [% c/ w- q! h7 k9 X
你的意思大概是在循环体中怎样使变量每循环一次增加一个常量吧?如果这个变量是r,增量是10,在lisp语言中赋值函数与+函数就可完成:" w4 P( v, k6 e3 v
(setq r (+ r 10)): Y; C" `) a( E2 a' z
在C语言、VB中都是普通的赋值语句。
# A( T+ }9 ~0 _& M5 F% n1 X+ B. {& O" b
[ 本帖最后由 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
" X' {1 U- c/ V- K+ ~* e8 \+ v你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。
3 G+ K0 p, V; K3 H7 [
9 I8 w5 ?  a% t在lisp中变量可以是点,比如:
; @5 l& ^6 g) G4 J0 L, ?! y(setq p1 (list 20 30))
5 }, ~4 s6 W5 P(setq p2 (list 120 100 ...

- ?2 s6 a& a* p谢谢这位,其实关于LISP也好VB也好,我都不是太懂,我想能否在CAD COMMAND状态下直接输入R,命令每操作一次,实现R+10有无办法?3 w; q1 e; L+ S1 \" H1 r
谢谢了。。
发表于 2009-3-31 12:53:58 | 显示全部楼层 来自: 中国江苏无锡
(setq r 10)
2 s( v5 d) e) |2 F% h; [% w(defun c:c ()0 J: L2 ]/ Z# D: Q
(command "_circle" pause r)
1 g( r" i. W8 z7 h% s" g& w5 i(setq r (+ r 10))4 k7 L9 l/ n! Z* M; |8 }# i
)) _, M$ x1 {/ s: [- @1 {
上面的语句可以满足加十的要求,但不用输入R,只要点选中心点,其半径自动加10,完成圆。% Q/ I- \- S$ c& M9 m
在LISP里加载,然后在命令里输c即可
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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