QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
2天前
查看: 2142|回复: 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 I9 O( H6 ~: O' d* t/ ^* TOption Explicit
  P+ X0 L* U1 nPublic Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer3 I8 V4 k) P: D4 G8 V8 I" }. k
Public Const VK_ESCAPE = &H1B& B. n5 a4 Q' j* ~$ J! Z
Sub addcircle()/ k- U% Y2 K; s7 @
    Dim circleObj As AcadCircle
8 T/ A1 r! w. \2 j& u0 Y    Dim centerPoint(0 To 2) As Double
  f* V3 ^  V+ e) `- |    Dim radius As Double9 o- p+ L9 @9 f3 M- G- h4 c6 ?
     centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#
( j$ W; R2 w7 u* k0 {    radius = 10#
3 a. f0 Z$ G5 D0 j    Do While GetAsyncKeyState(VK_ESCAPE) <> -32767; p* Q& R+ z. t! e. y2 H
    DoEvents
! v: c) _1 Z- L6 t1 r0 {    Set circleObj = ThisDrawing.ModelSpace.addcircle(centerPoint, radius)
* S9 A7 |1 O8 _5 v' `/ u. M    radius = radius + 10
7 x; u! h$ C6 p# e- Z    ZoomAll1 Q# Q* ]0 t3 b) ]
    Loop
; \6 Y6 {4 D, G 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
2 r8 J' Z( z& n5 OVBA中插入模块,输入以下代码,运行sub addcircle;5 n3 L0 l. y& o3 o* c) A$ B, ]
Option Explicit
& \, E* F" E  z# t" q2 bPublic Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer/ A5 S6 i) S4 A
Public Const VK_ESCAPE = &H1B
$ p/ D; @1 z4 USub addcircle()1 g9 D4 m) [6 G  t
...
) M! W+ x  p* a  A* S
谢谢这位
  E& a: f- H* _4 i!可惜我不是太懂
 楼主| 发表于 2009-3-28 14:41:30 | 显示全部楼层 来自: 中国江苏苏州
原帖由 TALKE 于 2009-3-28 12:58 发表 http://www.3dportal.cn/discuz/images/common/back.gif2 l0 K  o( N2 E+ f
什么叫“变量点”?
# {4 ]3 O+ D+ A- G5 e" w
比如说我在画圆时,CAD要我输入半径值,当作R,我给CAD这个变量一个值比如R=10,而每操作一次,R的值增加10就是R=R+10的意思.
发表于 2009-3-28 15:14:16 | 显示全部楼层 来自: 中国江苏无锡
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。
/ f6 K( A; u0 L( W
0 b. `, N/ Z) [) h+ X在lisp中变量可以是点,比如:
, l1 a  t3 K, |* A* q: A+ [(setq p1 (list 20 30))! ?. E2 K. |2 B& F! Z
(setq p2 (list 120 100))
( q# c; t1 s1 S+ Y; \& }5 U那么就可以认为p1,p2分别是点:% e5 r2 r1 _% E2 \  @& i- p
函数(command "line" p1 p2 "")可以产生正确结果即在绘图空间中产生(20,30)-(120,100)的一段直线。6 ]' z( c0 a3 R& c- ^1 i
所以你一旦提到点,人们就很容易想到这样的点变量,这样的变量无所谓增量的,所以容易引起误会。8 V) I! C2 W: Q3 g8 }

2 n$ e9 u6 i1 {你的意思大概是在循环体中怎样使变量每循环一次增加一个常量吧?如果这个变量是r,增量是10,在lisp语言中赋值函数与+函数就可完成:+ H, H! Z! \" q( M5 W
(setq r (+ r 10))0 H9 y* i, a2 U* l
在C语言、VB中都是普通的赋值语句。# i6 I% T7 |7 A
) T5 D, X3 v, M5 S% S6 C
[ 本帖最后由 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" y8 x: k5 w6 q% v
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。1 R/ H! T. |8 _. P
2 J& B" W$ ?, h6 k' j* _
在lisp中变量可以是点,比如:
( Z0 m7 ^5 |% H7 m' b2 z9 ?(setq p1 (list 20 30))( b2 ^5 O* c( c& B: B1 E# K
(setq p2 (list 120 100 ...

! [  J! |2 o0 _3 z/ U8 l5 R  N5 N! t1 G谢谢这位,其实关于LISP也好VB也好,我都不是太懂,我想能否在CAD COMMAND状态下直接输入R,命令每操作一次,实现R+10有无办法?5 x' P; C( x. ~8 m, `, z
谢谢了。。
发表于 2009-3-31 12:53:58 | 显示全部楼层 来自: 中国江苏无锡
(setq r 10)
" J6 n# ^; c% z! q& l' ^5 H(defun c:c ()
) p. P9 s. y$ x1 ^$ T(command "_circle" pause r)3 y7 w! h7 {; i# S( N
(setq r (+ r 10))& B& W2 Y- O/ }; ?9 z% r2 f
)! N# f7 E7 q0 T& a1 e) z9 m/ O
上面的语句可以满足加十的要求,但不用输入R,只要点选中心点,其半径自动加10,完成圆。
$ @7 o. J5 t0 J在LISP里加载,然后在命令里输c即可
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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