QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 2127|回复: 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;
6 m6 C& ^% ~) k2 hOption Explicit1 Y8 ?$ Q% @4 V
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
4 L/ H3 m: s3 `5 n, A4 o( \7 ePublic Const VK_ESCAPE = &H1B# p: g, x' m! v7 m
Sub addcircle()
, x; l6 q% I' N) J0 O1 K9 j# B    Dim circleObj As AcadCircle
6 m6 w' o  L' R1 f% }& C' A7 [    Dim centerPoint(0 To 2) As Double
  ^8 ^  W: y3 J$ ^7 A% x$ ?! B, J    Dim radius As Double
( @1 Z5 |5 f' _/ [7 i7 H" y     centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#' r9 K+ z, c" b9 x$ p
    radius = 10#
: L# v2 T4 u# X( ^8 @( L- p: j3 T    Do While GetAsyncKeyState(VK_ESCAPE) <> -32767
, N4 P' W* P5 h0 w5 @    DoEvents5 I6 f9 A. p2 B/ k% s
    Set circleObj = ThisDrawing.ModelSpace.addcircle(centerPoint, radius)
% n5 h! [* g: N0 l( w8 T    radius = radius + 10, ^- q, Q' g& Z+ ^
    ZoomAll
9 `. ^- v$ v/ p9 ~& I2 V    Loop
9 `6 L( u" ^) B' ]+ e- S 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.gif9 j/ I, Y) c) E" t5 a7 U+ V
VBA中插入模块,输入以下代码,运行sub addcircle;7 ^; ^: K3 F  g; Y$ U5 r) q; P. g0 `
Option Explicit7 h5 I6 ~) L% `! [1 N
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
+ A8 A# m! ]! F4 RPublic Const VK_ESCAPE = &H1B
' W( O1 v2 e& c+ U' ]3 h0 ?: [4 iSub addcircle()
5 T$ n! S; n! O) P1 j...

) n- ]5 }+ u3 S8 X谢谢这位; d1 P% ?6 p) ~
!可惜我不是太懂
 楼主| 发表于 2009-3-28 14:41:30 | 显示全部楼层 来自: 中国江苏苏州
原帖由 TALKE 于 2009-3-28 12:58 发表 http://www.3dportal.cn/discuz/images/common/back.gif
$ f0 W# n0 z2 j( t2 R什么叫“变量点”?

% G( r  h0 \( |0 J5 K1 X1 q9 J比如说我在画圆时,CAD要我输入半径值,当作R,我给CAD这个变量一个值比如R=10,而每操作一次,R的值增加10就是R=R+10的意思.
发表于 2009-3-28 15:14:16 | 显示全部楼层 来自: 中国江苏无锡
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。
: w3 ]' q* N: W) p2 K( J: Y( j$ A* Z) }2 S& k
在lisp中变量可以是点,比如:
7 f2 |2 t2 c% Z! u" d$ s8 d(setq p1 (list 20 30))
8 y3 }' F  a5 G; F(setq p2 (list 120 100))
! d3 g1 {2 W: n/ _- e那么就可以认为p1,p2分别是点:8 L& k2 P4 d. t3 K% V! p" v& G
函数(command "line" p1 p2 "")可以产生正确结果即在绘图空间中产生(20,30)-(120,100)的一段直线。
2 c: Z1 m9 K% }( c  s所以你一旦提到点,人们就很容易想到这样的点变量,这样的变量无所谓增量的,所以容易引起误会。# y: `- P/ A- w. [
$ B  z# `" ?6 \+ P3 W5 E
你的意思大概是在循环体中怎样使变量每循环一次增加一个常量吧?如果这个变量是r,增量是10,在lisp语言中赋值函数与+函数就可完成:6 h* l* ?9 r* P) W( m
(setq r (+ r 10))6 ?5 R& a2 ]! b2 c- K
在C语言、VB中都是普通的赋值语句。
3 K) n# o) `; Q& _1 G3 x" W, }5 C! V; ?9 P* [1 q
[ 本帖最后由 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+ z3 T) _5 p: i" n" |4 d
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。# U! g( p1 \# {5 Q0 Z

) ?8 Q0 k+ x5 e在lisp中变量可以是点,比如:, T. i' f% z. |
(setq p1 (list 20 30))" E5 `2 e* T1 L7 ?  @$ u; Z! A4 f7 N9 i
(setq p2 (list 120 100 ...

4 h  d2 _7 K  G( j6 k$ I谢谢这位,其实关于LISP也好VB也好,我都不是太懂,我想能否在CAD COMMAND状态下直接输入R,命令每操作一次,实现R+10有无办法?, w( X3 l' x" [* A, r
谢谢了。。
发表于 2009-3-31 12:53:58 | 显示全部楼层 来自: 中国江苏无锡
(setq r 10)0 C* T9 m7 m& W# Q: |4 J
(defun c:c ()
: J% Y- E# O' F% I, B" I# N(command "_circle" pause r)3 f7 Q% S% u- g8 o  L
(setq r (+ r 10))7 ]" ?& C+ }( V( c1 _* V
)* n9 r) }0 h; A- U& e2 F
上面的语句可以满足加十的要求,但不用输入R,只要点选中心点,其半径自动加10,完成圆。2 @3 D. _7 z  `4 ~: x
在LISP里加载,然后在命令里输c即可
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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