QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
11天前
查看: 2046|回复: 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;0 E6 m* c; {' ]+ J" @
Option Explicit
% s2 j5 V. L5 hPublic Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
  X4 }( O% f4 c! Z! rPublic Const VK_ESCAPE = &H1B6 ^- B, m  Q) U2 q. _5 [6 O9 s
Sub addcircle()
& g( c9 S4 f, H  K: I1 a    Dim circleObj As AcadCircle
! \/ S% J, ?7 @0 }    Dim centerPoint(0 To 2) As Double
% ]- d* ^1 t% I  K4 s    Dim radius As Double+ {- Q- ^# q" o* g9 B6 w! J, t
     centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#; \  M9 j: q3 A0 G  y' t
    radius = 10#& L3 n3 ]4 Q& i8 x1 j6 u' i
    Do While GetAsyncKeyState(VK_ESCAPE) <> -32767; ^1 ~, u. O: B2 ~1 l
    DoEvents
* B* [& Z8 |; Z4 ?. {* f: r7 r    Set circleObj = ThisDrawing.ModelSpace.addcircle(centerPoint, radius)1 p! O* A2 d' ~7 ~  I9 g( n+ {# \
    radius = radius + 10
/ u% w1 o' f8 j5 q" p! U2 _    ZoomAll
* ?2 h, Q* I9 Y2 ~4 Z    Loop. {! z! b) ]2 A& j# ~! T" j& o
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
  X$ [; d4 b+ c! F, Q$ eVBA中插入模块,输入以下代码,运行sub addcircle;7 n" K1 D: Q9 M# a! r- C- B
Option Explicit
) e9 G" i4 Q! Y% X1 ?8 F6 i7 @Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer- f$ `4 z+ z9 [/ w4 Q8 X
Public Const VK_ESCAPE = &H1B
, Q4 s8 w, {- A8 B7 h' o4 RSub addcircle()4 m) Q* Q9 t, Y5 Q
...

) M0 T" Y# U. H  a谢谢这位
9 a) D7 n9 g* s: S  [!可惜我不是太懂
 楼主| 发表于 2009-3-28 14:41:30 | 显示全部楼层 来自: 中国江苏苏州
原帖由 TALKE 于 2009-3-28 12:58 发表 http://www.3dportal.cn/discuz/images/common/back.gif
! A* d4 B1 D# p8 F2 H8 M什么叫“变量点”?
, S" s) T$ H! x: l' |8 _
比如说我在画圆时,CAD要我输入半径值,当作R,我给CAD这个变量一个值比如R=10,而每操作一次,R的值增加10就是R=R+10的意思.
发表于 2009-3-28 15:14:16 | 显示全部楼层 来自: 中国江苏无锡
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。' P1 D# F7 f: T4 c& Q

! ?; t9 B8 m  d3 L$ F1 t在lisp中变量可以是点,比如:9 H) H- L  H! y2 q3 c+ c' ]8 r' d
(setq p1 (list 20 30))8 d. t% }% a. d* U# o
(setq p2 (list 120 100))
7 D* B: e: p! z4 v# Z: P那么就可以认为p1,p2分别是点:0 j: W1 |$ d0 ^# w- F
函数(command "line" p1 p2 "")可以产生正确结果即在绘图空间中产生(20,30)-(120,100)的一段直线。
& T$ D, _* Q2 ]/ \! M所以你一旦提到点,人们就很容易想到这样的点变量,这样的变量无所谓增量的,所以容易引起误会。0 S# I# b2 O9 M5 i& `2 a% u

- r7 c4 a% q! T' p* ]* Q: l你的意思大概是在循环体中怎样使变量每循环一次增加一个常量吧?如果这个变量是r,增量是10,在lisp语言中赋值函数与+函数就可完成:8 e3 ?; Z/ q9 X0 @- y
(setq r (+ r 10))
0 q* p1 \1 ~. _& P/ B( J在C语言、VB中都是普通的赋值语句。2 L% y# B' |7 y, ]4 v
: u; |* V% }6 Y2 h, i% `
[ 本帖最后由 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
. ?1 g( X- x5 o8 W, O+ p+ j你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。
0 y, ~, G- {* O, T, `9 D3 B. v2 s- k- H
在lisp中变量可以是点,比如:
; b; W2 d) n  @  C2 G; M, x(setq p1 (list 20 30)); `( v% J  ~4 @: Z5 {4 C' |
(setq p2 (list 120 100 ...

6 S3 W# Q6 Y* }( V) K' h4 G谢谢这位,其实关于LISP也好VB也好,我都不是太懂,我想能否在CAD COMMAND状态下直接输入R,命令每操作一次,实现R+10有无办法?) }! H9 d; D2 v" z
谢谢了。。
发表于 2009-3-31 12:53:58 | 显示全部楼层 来自: 中国江苏无锡
(setq r 10): t/ U0 h3 [& P! t
(defun c:c ()8 J7 t& Y. n7 {& c
(command "_circle" pause r)
' b3 Z: J3 n$ d6 ]- V(setq r (+ r 10))
; x; \2 y- P) r% s)
6 t9 {/ Q) Q2 {上面的语句可以满足加十的要求,但不用输入R,只要点选中心点,其半径自动加10,完成圆。; j. M- E4 b# F2 o, I
在LISP里加载,然后在命令里输c即可
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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