QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
10天前
查看: 2109|回复: 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;# z) m: w. E, J7 Q7 D
Option Explicit
6 G* P" G+ m: O! ~Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer) i  [0 t% {$ k; N4 u( P
Public Const VK_ESCAPE = &H1B
8 n) `5 B* Q8 [# [# ]; TSub addcircle()& \* W8 x# Y. Y2 I7 S$ r1 i( g
    Dim circleObj As AcadCircle
! V6 ^4 n8 A4 h. v$ W2 `, F- U    Dim centerPoint(0 To 2) As Double
; K# p, D+ d/ Z1 n    Dim radius As Double
/ b! s% e! F: Z- b% }0 z! n     centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#
7 t' n# v, Q/ o4 v9 e# A8 C    radius = 10#- a+ Z+ X7 p0 l. m8 k& `
    Do While GetAsyncKeyState(VK_ESCAPE) <> -32767
' _8 S% F' q8 a+ r    DoEvents. x5 K+ t9 b7 m9 v- c4 `3 O
    Set circleObj = ThisDrawing.ModelSpace.addcircle(centerPoint, radius)! {1 V8 \% d- `
    radius = radius + 10
8 V  A# \* j; l+ M0 `. B    ZoomAll
0 j+ D/ {2 U4 k- B; m* |7 x# e    Loop
2 A9 ^4 b: Y% G9 p% D+ j 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
( g1 R. Q7 X& h3 W+ iVBA中插入模块,输入以下代码,运行sub addcircle;
+ Z% _4 n" K1 q$ f, bOption Explicit  ?3 k* }8 T! e
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
' {6 F4 d# C* X8 P% R; |Public Const VK_ESCAPE = &H1B
- P1 J/ d1 W+ X- [: U- ]( U1 NSub addcircle(). E8 Y! Q# J% ]! ]" s, Z% ?7 f% ~0 l, @
...

" T* i- V( m! V& |$ Q% m" h' f谢谢这位
0 d: _+ z2 {  M!可惜我不是太懂
 楼主| 发表于 2009-3-28 14:41:30 | 显示全部楼层 来自: 中国江苏苏州
原帖由 TALKE 于 2009-3-28 12:58 发表 http://www.3dportal.cn/discuz/images/common/back.gif
$ D& ^! f* i( o, h! e: c' G什么叫“变量点”?

0 z! F# W( t: Q( W5 H+ O比如说我在画圆时,CAD要我输入半径值,当作R,我给CAD这个变量一个值比如R=10,而每操作一次,R的值增加10就是R=R+10的意思.
发表于 2009-3-28 15:14:16 | 显示全部楼层 来自: 中国江苏无锡
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。9 B/ o# U: s5 k+ _

, C. @8 \3 t$ T在lisp中变量可以是点,比如:  ?6 Q$ T( w; \9 `. U$ \
(setq p1 (list 20 30))
  D/ [) g# x. V) o(setq p2 (list 120 100))
6 U- H& P4 {# M( \那么就可以认为p1,p2分别是点:
6 n/ o% r/ y( h9 k$ X3 ~- H6 y函数(command "line" p1 p2 "")可以产生正确结果即在绘图空间中产生(20,30)-(120,100)的一段直线。
# r  B. v, H( F  h  {所以你一旦提到点,人们就很容易想到这样的点变量,这样的变量无所谓增量的,所以容易引起误会。
$ J' j3 ]/ X' H7 T: I) B' m: E. l
9 I4 O1 W* _' o2 N5 G5 K你的意思大概是在循环体中怎样使变量每循环一次增加一个常量吧?如果这个变量是r,增量是10,在lisp语言中赋值函数与+函数就可完成:3 g' T" D8 B' Y
(setq r (+ r 10))
) b" [7 @5 S( g) Q2 F在C语言、VB中都是普通的赋值语句。5 l/ g1 b0 r2 H; c  t
9 n% x7 z% ?4 @) z6 g
[ 本帖最后由 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: s4 a8 a$ _3 _4 H' }, S
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。; b9 V4 f# Z% `6 s- r
; |0 }9 U/ P$ x2 l/ h0 h1 z
在lisp中变量可以是点,比如:& x3 t0 q! Q) S% C) K
(setq p1 (list 20 30))
/ _" N- I1 @; |6 \0 N(setq p2 (list 120 100 ...
$ K. \0 ?5 V. A$ j( z
谢谢这位,其实关于LISP也好VB也好,我都不是太懂,我想能否在CAD COMMAND状态下直接输入R,命令每操作一次,实现R+10有无办法?
' `) B7 \8 t7 @. n& L' F谢谢了。。
发表于 2009-3-31 12:53:58 | 显示全部楼层 来自: 中国江苏无锡
(setq r 10), D5 n5 c5 \& c+ k& H9 h
(defun c:c ()# {) G9 p: f7 n4 |/ e: Z7 o' z
(command "_circle" pause r)& d  b' N3 y$ x, f- a5 s
(setq r (+ r 10))
) J) [! G7 h* l9 s* q  x)
+ S8 a9 V0 U; R( U4 i" `5 T& p上面的语句可以满足加十的要求,但不用输入R,只要点选中心点,其半径自动加10,完成圆。- u! \3 z7 E0 e) ^; t
在LISP里加载,然后在命令里输c即可
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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