QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 2114|回复: 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;
4 ?3 q& y& V5 X# u* b6 M9 ?8 {Option Explicit7 U, f9 E" o- c0 t/ ]( H
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
. N- Y) \3 s$ R; {/ M# lPublic Const VK_ESCAPE = &H1B, [5 U+ b. C- S9 D# w& m8 v. I/ E
Sub addcircle()
7 r, n, Q/ r& z1 \- \& K- P# Y) X    Dim circleObj As AcadCircle
; Q' c! \4 _/ v    Dim centerPoint(0 To 2) As Double
0 y+ [, h; ~) r1 o    Dim radius As Double% q; |! M( j/ Y' L; E' [1 z
     centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#  d3 l! |' E0 }/ K, f
    radius = 10#, T) w8 ^. i3 }) u
    Do While GetAsyncKeyState(VK_ESCAPE) <> -32767
2 v6 B% O2 t' N0 P    DoEvents' Q1 Z- u) Z9 A8 `4 A
    Set circleObj = ThisDrawing.ModelSpace.addcircle(centerPoint, radius)
" C: x' ?& i# A! e. F0 S- d    radius = radius + 102 x. H4 [: p3 H3 i# P6 @
    ZoomAll
1 |' M( b1 m2 i( z0 U( l    Loop
* H( m  \. A1 M1 v0 q 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 K- p0 e5 n* T) k( Y2 g7 R* Z* xVBA中插入模块,输入以下代码,运行sub addcircle;8 q* b8 ?. C4 u
Option Explicit. @  V8 R( x% t$ q# P
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
0 E5 f0 `3 T4 r) g6 i$ O' T8 G9 iPublic Const VK_ESCAPE = &H1B
" X. c: q8 z- H; r; M" h9 r+ BSub addcircle()3 T! Q* ]( i6 r) o/ Z  v2 @
...

/ d; A' m! ^  W% I6 G1 `谢谢这位
. Z" U4 S( g8 d0 C" w9 c; M!可惜我不是太懂
 楼主| 发表于 2009-3-28 14:41:30 | 显示全部楼层 来自: 中国江苏苏州
原帖由 TALKE 于 2009-3-28 12:58 发表 http://www.3dportal.cn/discuz/images/common/back.gif
& W0 {) J; \+ |" o" Z什么叫“变量点”?
- [8 o1 m" b$ {
比如说我在画圆时,CAD要我输入半径值,当作R,我给CAD这个变量一个值比如R=10,而每操作一次,R的值增加10就是R=R+10的意思.
发表于 2009-3-28 15:14:16 | 显示全部楼层 来自: 中国江苏无锡
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。
) G0 K7 D6 w; q  J. y5 T7 F! ^' N. [# ]1 I; }3 _% U# u; |
在lisp中变量可以是点,比如:5 y$ ?' n9 [  q) S
(setq p1 (list 20 30))1 g. u# g$ x& |8 f! @) ?
(setq p2 (list 120 100))" v& g2 B4 n* n  k
那么就可以认为p1,p2分别是点:
8 q3 K" E" V% ^; R& p函数(command "line" p1 p2 "")可以产生正确结果即在绘图空间中产生(20,30)-(120,100)的一段直线。' K8 n5 [- Y* A$ D
所以你一旦提到点,人们就很容易想到这样的点变量,这样的变量无所谓增量的,所以容易引起误会。, R/ e, m: M2 v5 y6 o
5 C( c5 a  d, Z  ?; @( f# B
你的意思大概是在循环体中怎样使变量每循环一次增加一个常量吧?如果这个变量是r,增量是10,在lisp语言中赋值函数与+函数就可完成:/ L" i" f4 @& ?4 n$ q. J
(setq r (+ r 10))
8 b" ?# y7 b) n+ _$ m在C语言、VB中都是普通的赋值语句。
5 {% L4 e2 N& [# N. Q& o
8 w7 E* F$ K4 V[ 本帖最后由 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, p6 j/ {& }3 _" _. |" a) ^
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。6 A% `( t/ U- @9 Q  z# G
% c4 ^# f- U# t/ [4 H
在lisp中变量可以是点,比如:
: z+ D  M2 p; e' B8 J(setq p1 (list 20 30))! U$ W  m8 [+ M( }3 }5 M
(setq p2 (list 120 100 ...
$ @" H9 u" Q  \% j& B6 R
谢谢这位,其实关于LISP也好VB也好,我都不是太懂,我想能否在CAD COMMAND状态下直接输入R,命令每操作一次,实现R+10有无办法?/ b* o- `% F6 L/ Q# Q+ v
谢谢了。。
发表于 2009-3-31 12:53:58 | 显示全部楼层 来自: 中国江苏无锡
(setq r 10)7 J. P4 N: _0 \$ k% D$ C6 y
(defun c:c ()
+ @/ f# C4 l# E( t+ f4 y8 W' g(command "_circle" pause r)) j3 d3 G) a% U; q) K: Y/ n. i8 B
(setq r (+ r 10))
$ A1 a* `9 L+ a( P; H" K)4 A$ B+ Q/ T  A
上面的语句可以满足加十的要求,但不用输入R,只要点选中心点,其半径自动加10,完成圆。% u# I1 R. i+ _! Z
在LISP里加载,然后在命令里输c即可
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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