QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 2049|回复: 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;
: [8 ^% k4 P3 ~4 _, G- N% KOption Explicit
; R1 L  e# ^  N6 I- g( O+ ^Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer4 G! W; r& b9 I1 M4 K( Q# o1 Z( m
Public Const VK_ESCAPE = &H1B
0 v1 u* @+ I& z7 E4 i0 ZSub addcircle()4 R& p1 k2 [* l/ o' Q# k& U6 g
    Dim circleObj As AcadCircle; Z5 P. o9 X; v, t; u! V8 c
    Dim centerPoint(0 To 2) As Double
4 e; j. |6 ?. K  H7 z    Dim radius As Double  e  I- @  F) Q3 I1 r4 |
     centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#. G: |, i; M5 f0 C5 F, M- ]
    radius = 10#1 A7 \1 k2 m! S5 K
    Do While GetAsyncKeyState(VK_ESCAPE) <> -32767
9 W4 L. s4 M) f/ u: x/ L/ U8 ?- `/ E6 }    DoEvents9 B; h( G) r. k) a1 e1 h3 b
    Set circleObj = ThisDrawing.ModelSpace.addcircle(centerPoint, radius). w8 F4 S, x$ s
    radius = radius + 10
8 i  n  H3 L5 }3 g    ZoomAll
2 I, J' F2 ~& b- M" l, c# d: d    Loop7 v$ T: z% J. 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.gif' l' [; d9 _5 q- P7 w, G
VBA中插入模块,输入以下代码,运行sub addcircle;
/ g- Q) W7 P0 x* D1 V: ~0 q+ J- tOption Explicit
* ^( Q0 |( {  F3 B/ S9 nPublic Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
8 {) _6 Z" S+ N2 F2 c' IPublic Const VK_ESCAPE = &H1B
7 Z$ U) W4 X8 X- {, Z- p  OSub addcircle()
7 |5 i% s. d* M$ n...
, K7 D9 Z5 u0 y' ]; c7 d/ Z
谢谢这位
/ `: |( S$ _' \$ [4 W!可惜我不是太懂
 楼主| 发表于 2009-3-28 14:41:30 | 显示全部楼层 来自: 中国江苏苏州
原帖由 TALKE 于 2009-3-28 12:58 发表 http://www.3dportal.cn/discuz/images/common/back.gif
7 [6 b0 G3 y. ]6 |: T什么叫“变量点”?

& x) E( U( o! z' i3 t# S2 I' d比如说我在画圆时,CAD要我输入半径值,当作R,我给CAD这个变量一个值比如R=10,而每操作一次,R的值增加10就是R=R+10的意思.
发表于 2009-3-28 15:14:16 | 显示全部楼层 来自: 中国江苏无锡
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。7 x0 f: v5 B- {6 z+ v
8 o: }! ]3 _- ]# _; t, H2 G* a
在lisp中变量可以是点,比如:
4 \* T3 H* e9 |(setq p1 (list 20 30))4 g5 f$ z* O# c
(setq p2 (list 120 100))
- \; m# h3 ^( P- m那么就可以认为p1,p2分别是点:$ u) `% A# W; M. G. D( P- R
函数(command "line" p1 p2 "")可以产生正确结果即在绘图空间中产生(20,30)-(120,100)的一段直线。: x5 S1 o; i; W5 W4 m9 Y# b$ w
所以你一旦提到点,人们就很容易想到这样的点变量,这样的变量无所谓增量的,所以容易引起误会。
2 ]) p9 X. Q% J1 ~
" S5 U; n3 R( `- g0 @% k你的意思大概是在循环体中怎样使变量每循环一次增加一个常量吧?如果这个变量是r,增量是10,在lisp语言中赋值函数与+函数就可完成:
& y1 \1 X7 a: I' `# j(setq r (+ r 10))* I  q, C1 h* X$ z2 x: j% r' j0 M
在C语言、VB中都是普通的赋值语句。- V) u* @" A$ S- l4 F
6 Y& q- {6 o$ ]$ z- C3 f
[ 本帖最后由 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% S9 ~. t* x7 _! K/ X2 H# n6 E0 t- B: s
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。
* c3 [" U; l9 V; U/ ~9 T% O' C. b6 E0 s5 W0 K: T( N
在lisp中变量可以是点,比如:
1 }% u! h% c0 S3 B; D2 Q(setq p1 (list 20 30)): i$ D$ _. E  A. m
(setq p2 (list 120 100 ...

* q: z( F$ K& }; I2 _谢谢这位,其实关于LISP也好VB也好,我都不是太懂,我想能否在CAD COMMAND状态下直接输入R,命令每操作一次,实现R+10有无办法?0 Y4 w- v8 j' t4 x; q- ]5 P
谢谢了。。
发表于 2009-3-31 12:53:58 | 显示全部楼层 来自: 中国江苏无锡
(setq r 10)( a; h( O" g7 c7 F, @
(defun c:c ()% Y* {6 u& Z" h0 {
(command "_circle" pause r)
; y5 J) [6 a/ F(setq r (+ r 10)): S" [0 }* e: C2 w0 Z' k
)! h, I1 f4 x# u7 k* }
上面的语句可以满足加十的要求,但不用输入R,只要点选中心点,其半径自动加10,完成圆。
# F# F1 R- _2 ]; H在LISP里加载,然后在命令里输c即可
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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