QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 2132|回复: 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;
; p- ?0 I2 {/ ]! d& VOption Explicit4 [# k# G, g1 D. h# f5 F* v
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
. Z, ^: u4 N$ P0 D; h" ]+ J6 jPublic Const VK_ESCAPE = &H1B& }) c8 {: M: E" Y# c
Sub addcircle()" Z8 c& ^/ X" L& z( N9 b
    Dim circleObj As AcadCircle, y& ]( w% n% B& ~- f: M' h
    Dim centerPoint(0 To 2) As Double
- {1 ~7 _+ ?8 N& [0 ~1 e+ Y) L    Dim radius As Double. \. Q; y0 e* ~% Z; o* B  \& q
     centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#. a+ B7 q6 d) M9 k6 M" i$ S
    radius = 10#  t7 O( k2 h- c# s
    Do While GetAsyncKeyState(VK_ESCAPE) <> -32767
2 s+ [# Q( t4 m: p    DoEvents
" `& n1 j, n- H    Set circleObj = ThisDrawing.ModelSpace.addcircle(centerPoint, radius)
9 M" t: S. P4 ?    radius = radius + 10+ w& d/ k7 r+ h* Q! R3 k
    ZoomAll
- {# m) }" r* x: T0 T9 f' x    Loop3 q. O: a% O4 x, u& P# C  u& y) R( e
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
1 u% q! r- e2 T6 e6 lVBA中插入模块,输入以下代码,运行sub addcircle;
$ H2 B6 \; a/ z0 r* y4 ~/ COption Explicit
6 D! |  f5 h& s. hPublic Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer, M, s% Q7 S: Y7 m; u$ C' Z
Public Const VK_ESCAPE = &H1B
8 a- v  S' G* {! A) H  m/ Y7 Y. bSub addcircle()
4 \  x1 i" z$ u...
6 }4 i8 a4 J+ u; m' o" ]( X4 W
谢谢这位3 ~9 L8 J" B7 r  b: {, S+ Y8 \
!可惜我不是太懂
 楼主| 发表于 2009-3-28 14:41:30 | 显示全部楼层 来自: 中国江苏苏州
原帖由 TALKE 于 2009-3-28 12:58 发表 http://www.3dportal.cn/discuz/images/common/back.gif
. O# p; E- f* F( M8 L" N什么叫“变量点”?
4 h( u! I5 `7 `8 d
比如说我在画圆时,CAD要我输入半径值,当作R,我给CAD这个变量一个值比如R=10,而每操作一次,R的值增加10就是R=R+10的意思.
发表于 2009-3-28 15:14:16 | 显示全部楼层 来自: 中国江苏无锡
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。
7 e, g- k0 M5 K7 x
% E. d( C! C4 R# e在lisp中变量可以是点,比如:
& Y5 B9 }4 y" S! ^( ](setq p1 (list 20 30))4 @& O5 f; P% l8 h# d4 W
(setq p2 (list 120 100)), i# Q* Y8 @7 T+ w9 V7 G9 ~' K
那么就可以认为p1,p2分别是点:
' V4 v$ |) r  B1 l% Y; T函数(command "line" p1 p2 "")可以产生正确结果即在绘图空间中产生(20,30)-(120,100)的一段直线。
1 d+ m! P/ |$ v所以你一旦提到点,人们就很容易想到这样的点变量,这样的变量无所谓增量的,所以容易引起误会。% x' Y8 }+ M& ^+ U8 R  F1 @
6 M/ v8 y; I. X, j
你的意思大概是在循环体中怎样使变量每循环一次增加一个常量吧?如果这个变量是r,增量是10,在lisp语言中赋值函数与+函数就可完成:% ~# L1 i8 o2 n5 @. t  S1 S
(setq r (+ r 10))% t1 G5 J. `4 g% O$ q
在C语言、VB中都是普通的赋值语句。
& m+ l# t( a" V. d6 ?2 \- C4 a" H. e: K* W9 j2 N  N- x
[ 本帖最后由 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
" z2 z( P+ k7 y% i: _8 A- M你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。
0 z3 T+ q/ j6 P2 {; D! p- _" T8 `; H) G
在lisp中变量可以是点,比如:
4 n" B& G$ m0 \3 q5 W- T(setq p1 (list 20 30))6 I$ `  k3 O; @' E9 j0 @7 _4 q. L
(setq p2 (list 120 100 ...

" m% _$ h8 z+ D谢谢这位,其实关于LISP也好VB也好,我都不是太懂,我想能否在CAD COMMAND状态下直接输入R,命令每操作一次,实现R+10有无办法?
. Y% ^0 t4 j7 f* w谢谢了。。
发表于 2009-3-31 12:53:58 | 显示全部楼层 来自: 中国江苏无锡
(setq r 10)
0 Q% w$ ?/ U9 ?% v1 t  W: O4 E+ \) _(defun c:c ()2 j6 w* P( I1 {. [. z. w
(command "_circle" pause r)
, ?* `4 R. k+ H' }* P3 u0 C(setq r (+ r 10)); x& q! k$ Z4 _) y
)
0 x( h: {  d* p6 y- u上面的语句可以满足加十的要求,但不用输入R,只要点选中心点,其半径自动加10,完成圆。
- }' }2 x5 ~% U. r在LISP里加载,然后在命令里输c即可
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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