QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 2050|回复: 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;; N# r3 \& Y% n, t
Option Explicit* g: [0 j+ f7 g. a4 X
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
0 u% n! G* \3 Z- n! CPublic Const VK_ESCAPE = &H1B7 l; X! B. f5 x! y% _
Sub addcircle()
8 n( N$ _8 A, }5 W% p& l    Dim circleObj As AcadCircle. s7 n: ]/ A: ^" L* [; `' _, O
    Dim centerPoint(0 To 2) As Double
- ?) x; N$ i, _; T* t% h    Dim radius As Double: A4 `% n9 S7 s4 D5 s# o* U- a1 d
     centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#
% M$ z. k) H1 e& F! _% W! _  y6 L    radius = 10#. v; _& b* _' A) F& D( q3 X: T
    Do While GetAsyncKeyState(VK_ESCAPE) <> -32767
* t2 u7 Z" l: z* b    DoEvents
$ U( e4 z5 p/ O1 X9 z6 H7 X    Set circleObj = ThisDrawing.ModelSpace.addcircle(centerPoint, radius)) K0 d: d; P- K
    radius = radius + 10
. `3 P  A6 l% t" I    ZoomAll
0 N! ?4 T2 E4 n    Loop# `& M/ t+ g6 n
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.gif4 \( Z" a2 N6 |6 _& h
VBA中插入模块,输入以下代码,运行sub addcircle;2 S) S) M. V, D; `( {5 Q# h
Option Explicit  E; |* {6 u) s/ f: m
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
' J% u( L1 d0 V- S; ^Public Const VK_ESCAPE = &H1B7 s; k3 j! B  |1 m
Sub addcircle()$ I/ o& e5 S" [/ Y8 B
...
! R/ M- Y( X+ F* c
谢谢这位2 T1 v8 t, O, Y$ x& ]+ x
!可惜我不是太懂
 楼主| 发表于 2009-3-28 14:41:30 | 显示全部楼层 来自: 中国江苏苏州
原帖由 TALKE 于 2009-3-28 12:58 发表 http://www.3dportal.cn/discuz/images/common/back.gif8 r( r  |$ ]8 S8 Y% Q% g7 G
什么叫“变量点”?
2 p. W0 q; V9 ^) v; V8 g
比如说我在画圆时,CAD要我输入半径值,当作R,我给CAD这个变量一个值比如R=10,而每操作一次,R的值增加10就是R=R+10的意思.
发表于 2009-3-28 15:14:16 | 显示全部楼层 来自: 中国江苏无锡
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。
: ^- L# D0 \- H0 o/ q
& L- E2 [8 [/ a8 k; Z+ ]6 F- J在lisp中变量可以是点,比如:+ t" j9 Z5 ^# p; t& n
(setq p1 (list 20 30)). x4 U) E' x' t' ?  z  C
(setq p2 (list 120 100))
; H3 t$ C! ~; S; K3 ^4 s" _; I那么就可以认为p1,p2分别是点:
3 C/ b  y6 s# P# d/ T7 K函数(command "line" p1 p2 "")可以产生正确结果即在绘图空间中产生(20,30)-(120,100)的一段直线。
0 t* V# r# k, l) u/ u( F所以你一旦提到点,人们就很容易想到这样的点变量,这样的变量无所谓增量的,所以容易引起误会。
% \0 \+ R" o- C$ n( t- z3 C9 g& f
+ Y' w& o2 \' q9 ^1 u8 y你的意思大概是在循环体中怎样使变量每循环一次增加一个常量吧?如果这个变量是r,增量是10,在lisp语言中赋值函数与+函数就可完成:
; h+ K" Q0 G5 y  k: h% h(setq r (+ r 10))
4 r, x1 y5 G+ N* v; h  S/ u0 d在C语言、VB中都是普通的赋值语句。2 i) i! {5 ^$ |

% {, u% U- M/ B! p! n7 b[ 本帖最后由 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
# @% r' _7 @  P+ x你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。
% a+ ~2 S" ^$ e9 Z% D0 X) w9 A$ H0 D& {! S
在lisp中变量可以是点,比如:* E% `  L; E" [
(setq p1 (list 20 30))' U3 g$ z/ O- {
(setq p2 (list 120 100 ...

$ ^& E! J* _$ M3 W5 O" w3 u谢谢这位,其实关于LISP也好VB也好,我都不是太懂,我想能否在CAD COMMAND状态下直接输入R,命令每操作一次,实现R+10有无办法?( V4 X8 h+ _! p. w$ |2 X( H
谢谢了。。
发表于 2009-3-31 12:53:58 | 显示全部楼层 来自: 中国江苏无锡
(setq r 10)
  g$ Z1 v1 f5 G$ D1 d2 p(defun c:c ()1 d4 U8 \1 x0 c! k5 `, O
(command "_circle" pause r)
- i) h, ~. g6 a' [! r2 _(setq r (+ r 10))
; x. P0 |+ t7 Y6 }); ]. b# ^* H9 e/ u
上面的语句可以满足加十的要求,但不用输入R,只要点选中心点,其半径自动加10,完成圆。7 @7 S" b3 {. a/ G* O/ Q
在LISP里加载,然后在命令里输c即可
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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