QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 2115|回复: 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;8 E. r. j% C1 [8 R9 E+ T
Option Explicit
3 B: h) s$ i3 fPublic Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
1 E! L. K2 s1 [: o- R5 vPublic Const VK_ESCAPE = &H1B
2 J7 l$ h- V) u8 o6 uSub addcircle()
  E. j" u  U- D- X  l6 w' ~. k    Dim circleObj As AcadCircle1 U9 |" O% h; d$ z* L1 p
    Dim centerPoint(0 To 2) As Double- Y1 s! U- ^+ S
    Dim radius As Double8 @2 C0 ]+ E$ l0 g
     centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#+ ^( {: p$ N; w
    radius = 10#
$ M3 z0 n, F+ ~  `# {" N0 l    Do While GetAsyncKeyState(VK_ESCAPE) <> -327672 J2 h, }1 Q" O' v5 w% z4 {+ X
    DoEvents/ l! i, z8 G+ [
    Set circleObj = ThisDrawing.ModelSpace.addcircle(centerPoint, radius), N* P  n# d, {* [) F' ?& E  \
    radius = radius + 10
# O- F# d6 L# U- m8 \: D3 _    ZoomAll7 a" S  Y* P3 \0 P. U% ^
    Loop: {9 g: u) t) S& P! F' D
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
& J/ A0 F+ c- e% [2 b; mVBA中插入模块,输入以下代码,运行sub addcircle;% H' e( c) B: K' M: Z6 e
Option Explicit
0 _0 z4 G$ g: C% {, iPublic Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer# g; Y" d, w6 Z6 t
Public Const VK_ESCAPE = &H1B, b# v  E+ ?! v5 U: N5 |2 V0 {
Sub addcircle()
& M  H- Z- l" y# S- i  h...
& ^4 R! m7 V1 d3 n. \) [
谢谢这位
* E0 g6 t) F8 F7 g9 ~2 z0 J!可惜我不是太懂
 楼主| 发表于 2009-3-28 14:41:30 | 显示全部楼层 来自: 中国江苏苏州
原帖由 TALKE 于 2009-3-28 12:58 发表 http://www.3dportal.cn/discuz/images/common/back.gif% s3 s: s' ~1 \
什么叫“变量点”?
# g  o6 ^. Y) |0 w
比如说我在画圆时,CAD要我输入半径值,当作R,我给CAD这个变量一个值比如R=10,而每操作一次,R的值增加10就是R=R+10的意思.
发表于 2009-3-28 15:14:16 | 显示全部楼层 来自: 中国江苏无锡
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。
  `' {3 [8 d. K, a" Y7 r- r+ {8 w- @6 U. Y5 H8 ?( q( [% @: D
在lisp中变量可以是点,比如:4 J- z; \; z3 p2 f0 E
(setq p1 (list 20 30))
% W6 j$ d/ C, `# X, l3 U$ M5 s(setq p2 (list 120 100))3 ]5 G, r# Y: \' D: |
那么就可以认为p1,p2分别是点:6 _/ x' y  X3 v' m' v3 L
函数(command "line" p1 p2 "")可以产生正确结果即在绘图空间中产生(20,30)-(120,100)的一段直线。
( T2 i8 {1 ?$ z/ _& s- z  [所以你一旦提到点,人们就很容易想到这样的点变量,这样的变量无所谓增量的,所以容易引起误会。
% d. r% a) w5 n
6 Z- }7 Q6 W2 y5 J9 ?) w你的意思大概是在循环体中怎样使变量每循环一次增加一个常量吧?如果这个变量是r,增量是10,在lisp语言中赋值函数与+函数就可完成:. h8 S. l7 N  W! a6 V/ k5 z( V
(setq r (+ r 10))( k- [- |; w  G8 P* A9 L
在C语言、VB中都是普通的赋值语句。- b0 i9 [4 h6 [, F0 R

, H6 ^2 Z6 Q! E* d2 H7 r- F[ 本帖最后由 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.gif7 {" U* I( i3 a; D. y$ d2 @3 u
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。3 s3 }$ H( w& {0 ]# H4 w

$ A' c8 n/ F( F5 \" m在lisp中变量可以是点,比如:+ H3 D& X" @+ _/ e% X( t( y% m
(setq p1 (list 20 30))
, B/ C$ L8 Y* X8 C(setq p2 (list 120 100 ...

- [# h: x$ q2 X  w$ F谢谢这位,其实关于LISP也好VB也好,我都不是太懂,我想能否在CAD COMMAND状态下直接输入R,命令每操作一次,实现R+10有无办法?- l/ K- }, i. M, l% p5 z
谢谢了。。
发表于 2009-3-31 12:53:58 | 显示全部楼层 来自: 中国江苏无锡
(setq r 10)2 l' r  V5 x( |7 e" K! M
(defun c:c ()
" W3 Q7 X' @+ ]1 ~3 E8 y6 ](command "_circle" pause r)* j, r2 U, z. x& T4 Q
(setq r (+ r 10))5 ^( j" f+ [; m$ R+ W: e
)( r& q$ [; j' ^6 j& W/ @, L5 E
上面的语句可以满足加十的要求,但不用输入R,只要点选中心点,其半径自动加10,完成圆。; y' [, `9 q% h$ I% ^
在LISP里加载,然后在命令里输c即可
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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