QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
10天前
查看: 2044|回复: 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;
; w/ F( z1 T$ B* I% O. E- p( R5 bOption Explicit
! R" g6 o2 p4 K: _Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer  c$ Z" r) H& W6 M
Public Const VK_ESCAPE = &H1B$ h: j1 g, u6 `/ P& S5 v/ S
Sub addcircle()8 _" I: w' D  e8 c; N
    Dim circleObj As AcadCircle
# O8 N, B2 c5 y' t    Dim centerPoint(0 To 2) As Double% h8 R  {: w4 l! ?* |% F8 j
    Dim radius As Double: C& j( i# O8 T- J4 g
     centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#) D8 _  Q' ]9 e1 s; x' l
    radius = 10#
4 j& E- t0 e! H: D+ y- B    Do While GetAsyncKeyState(VK_ESCAPE) <> -32767
$ L9 l+ M1 N* a0 y# N( @6 u    DoEvents
0 s+ G0 Z- H! {4 V( M    Set circleObj = ThisDrawing.ModelSpace.addcircle(centerPoint, radius)
7 t  Y" |$ W. S" X- R    radius = radius + 10
/ T  W6 b* `$ E3 N6 \    ZoomAll5 Z, ~8 Z, W2 a# o+ J" V
    Loop
8 k, K' }4 l3 Q8 k( h0 f 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.gif9 l" S: A: L. y
VBA中插入模块,输入以下代码,运行sub addcircle;
0 ]2 _' \9 t/ E9 N/ Y4 Y; [8 {( WOption Explicit
" c) {7 k" s' n* C& n$ T# s3 jPublic Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
' p3 Y/ i; Y! T( q+ u% sPublic Const VK_ESCAPE = &H1B
' O' Q6 a" A4 bSub addcircle()# w! t& D: _3 E  ]9 r+ Z) v: V
...
9 D, D& ^: y# q7 X' R
谢谢这位  i- J1 r3 Z4 v! |0 o* b
!可惜我不是太懂
 楼主| 发表于 2009-3-28 14:41:30 | 显示全部楼层 来自: 中国江苏苏州
原帖由 TALKE 于 2009-3-28 12:58 发表 http://www.3dportal.cn/discuz/images/common/back.gif
& K2 @6 Y9 ]' c+ B1 [7 f什么叫“变量点”?
) L2 O1 E8 B0 j* r
比如说我在画圆时,CAD要我输入半径值,当作R,我给CAD这个变量一个值比如R=10,而每操作一次,R的值增加10就是R=R+10的意思.
发表于 2009-3-28 15:14:16 | 显示全部楼层 来自: 中国江苏无锡
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。
" H! |5 C) [" k) o: ?. b$ h- C' G: ?! i1 K
在lisp中变量可以是点,比如:
( H( v! J1 t9 P7 `$ Z(setq p1 (list 20 30)): _5 v; N& o/ f. y2 f
(setq p2 (list 120 100))9 @. x0 J( ^5 R
那么就可以认为p1,p2分别是点:* @2 }2 d3 q$ V$ L" |
函数(command "line" p1 p2 "")可以产生正确结果即在绘图空间中产生(20,30)-(120,100)的一段直线。
$ b  ~+ i" c; [' ^所以你一旦提到点,人们就很容易想到这样的点变量,这样的变量无所谓增量的,所以容易引起误会。7 F8 a( Z! S6 a( N( Y* a6 W8 q
2 {6 O; J- |0 i6 B% C; I
你的意思大概是在循环体中怎样使变量每循环一次增加一个常量吧?如果这个变量是r,增量是10,在lisp语言中赋值函数与+函数就可完成:7 u/ `# f& l; M1 c! ~
(setq r (+ r 10))
/ p: ^- H  I+ q8 @3 @在C语言、VB中都是普通的赋值语句。
) r7 V3 ~, l4 l' ]/ r* \% N$ X% y, H/ u
[ 本帖最后由 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
& K# P& [8 K/ }( N4 W+ e& `- p你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。3 q* u# U" P2 ~. x1 g
/ c. g4 r# O1 u8 {7 L, ?9 z4 J
在lisp中变量可以是点,比如:
8 C! z! W  B' w3 o(setq p1 (list 20 30))3 ^% S: [, d( C( N, _; y, L) d
(setq p2 (list 120 100 ...
7 ?* X4 u3 j% X7 r
谢谢这位,其实关于LISP也好VB也好,我都不是太懂,我想能否在CAD COMMAND状态下直接输入R,命令每操作一次,实现R+10有无办法?
3 R' y) J. W+ T0 _* m- D谢谢了。。
发表于 2009-3-31 12:53:58 | 显示全部楼层 来自: 中国江苏无锡
(setq r 10), s; ]) q1 E4 l9 E3 w
(defun c:c ()
) K! j, P$ a* a(command "_circle" pause r); N9 w% P3 p4 O, m- U
(setq r (+ r 10))* F1 D8 [$ k& s6 ?  B
)0 X; K1 G: @: x* b  E: O; o5 I
上面的语句可以满足加十的要求,但不用输入R,只要点选中心点,其半径自动加10,完成圆。, V+ U* R1 \% P) Z0 u; B+ z
在LISP里加载,然后在命令里输c即可
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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