QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
11天前
查看: 2045|回复: 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;: N+ S: ]3 ?( c' v: P
Option Explicit
- h5 Y; k$ N! u2 D% P) ]1 SPublic Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer" T$ z4 |7 B9 n  h1 J
Public Const VK_ESCAPE = &H1B' F2 `% }2 T- b3 Y7 v% W
Sub addcircle()$ k6 t1 J8 s( [1 A# u2 j
    Dim circleObj As AcadCircle
* m$ V3 H2 S: o5 u    Dim centerPoint(0 To 2) As Double
' C: h* ^5 u0 }1 w+ ]! O% Y! m    Dim radius As Double" v5 l1 Z: d( _( ^$ V+ e
     centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#( Y) _+ h* @& h; n+ J! ~; L
    radius = 10#+ _( v1 O: ^3 t! x/ I
    Do While GetAsyncKeyState(VK_ESCAPE) <> -327675 l/ B8 H8 R; o  Z2 m. c5 S4 o
    DoEvents& G4 D/ C# P2 I7 b. z7 y
    Set circleObj = ThisDrawing.ModelSpace.addcircle(centerPoint, radius)
1 a( I4 f* a( L0 p) o# w    radius = radius + 105 e/ h( @* v! g$ y  [8 W
    ZoomAll
* Z* k2 M3 K0 S, M2 k4 @8 a    Loop  H- {) [9 X1 {
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
5 l; E! U8 ~, d4 EVBA中插入模块,输入以下代码,运行sub addcircle;
( v( C. x( Y0 D6 f" POption Explicit
+ n* [1 F" V; ?' I0 d" I  KPublic Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
4 `5 e3 x/ A& K; g6 o% W2 yPublic Const VK_ESCAPE = &H1B0 j8 |" ^7 j, d5 d- |
Sub addcircle()
: N3 h7 B+ h) {% X...
% N' c% g) A! J5 L0 H2 }/ H
谢谢这位
( H( J- T# \$ S!可惜我不是太懂
 楼主| 发表于 2009-3-28 14:41:30 | 显示全部楼层 来自: 中国江苏苏州
原帖由 TALKE 于 2009-3-28 12:58 发表 http://www.3dportal.cn/discuz/images/common/back.gif, Y: j! B/ p1 ?% q. j
什么叫“变量点”?

# {) K% F" K+ }  e比如说我在画圆时,CAD要我输入半径值,当作R,我给CAD这个变量一个值比如R=10,而每操作一次,R的值增加10就是R=R+10的意思.
发表于 2009-3-28 15:14:16 | 显示全部楼层 来自: 中国江苏无锡
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。. e0 X, {0 S% c5 {

4 K& X+ \/ T( g8 j4 D: g( C在lisp中变量可以是点,比如:# d; d/ z. Z8 g8 ]1 A2 M% g
(setq p1 (list 20 30))' l2 [7 e% v$ b3 n  x9 j1 l
(setq p2 (list 120 100))6 i- p- s) _% \$ P. {8 }
那么就可以认为p1,p2分别是点:: V* `  H2 o" z% k1 i, ?
函数(command "line" p1 p2 "")可以产生正确结果即在绘图空间中产生(20,30)-(120,100)的一段直线。6 _- J2 Z% h: V; \0 g8 C
所以你一旦提到点,人们就很容易想到这样的点变量,这样的变量无所谓增量的,所以容易引起误会。
2 r/ e! U* r. v) _8 V3 z
8 b3 M: o! ~9 T  }你的意思大概是在循环体中怎样使变量每循环一次增加一个常量吧?如果这个变量是r,增量是10,在lisp语言中赋值函数与+函数就可完成:
6 Z- r1 V; `% a' a. |( [' v(setq r (+ r 10))$ S. }+ r' v4 s+ g
在C语言、VB中都是普通的赋值语句。
. d, c% g, t4 B3 q3 I# J5 N* @) F7 |0 w" {0 r
[ 本帖最后由 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+ b; Y, a4 ]. T( {$ _3 B3 [8 }
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。
' O! S. ~( \* R1 s; r% n9 }* N5 t: O9 H
0 F% j. W. l' t, U  P8 b在lisp中变量可以是点,比如:/ o2 B5 f2 P& M" I& w
(setq p1 (list 20 30)); h2 r- H  N& J$ a1 {
(setq p2 (list 120 100 ...
3 Y& a4 O0 F& H% q. z
谢谢这位,其实关于LISP也好VB也好,我都不是太懂,我想能否在CAD COMMAND状态下直接输入R,命令每操作一次,实现R+10有无办法?4 a7 C1 W5 t$ \  t; @$ [+ i
谢谢了。。
发表于 2009-3-31 12:53:58 | 显示全部楼层 来自: 中国江苏无锡
(setq r 10)
8 {; [6 L" V) W1 T3 T(defun c:c ()
% A' {7 h* _$ ]& ~) R! {(command "_circle" pause r)
% t4 I9 S8 `9 ?. i! G(setq r (+ r 10))
2 [, V; j( g' |9 R' X- `& X)
- x! ^' [  V+ a; L! X上面的语句可以满足加十的要求,但不用输入R,只要点选中心点,其半径自动加10,完成圆。
  b5 ^4 Q2 {9 S2 V, \' E1 k在LISP里加载,然后在命令里输c即可
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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