QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 2053|回复: 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 P5 K1 Y2 d! f# j$ NOption Explicit
- y% `  T0 X' V, ~, @3 T) R" u9 FPublic Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
7 P, [" t2 f& E6 Z  G' mPublic Const VK_ESCAPE = &H1B
4 C5 `/ W) }' I  [# V& NSub addcircle()1 \0 a( d* ]& |) K1 g, s6 k4 V
    Dim circleObj As AcadCircle
5 g1 ~1 s+ ~8 e) B4 C    Dim centerPoint(0 To 2) As Double
1 P5 \# P) b! Y. w- D4 {    Dim radius As Double6 t; G/ t1 d1 @% k
     centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#
, g/ \6 o3 w; K' @" [8 B2 c; `" q) B    radius = 10#. n0 ~3 @0 N, O' h& g9 s9 D
    Do While GetAsyncKeyState(VK_ESCAPE) <> -32767
; g1 ]( C5 o* {* E/ Q2 ~) @    DoEvents* u. e, h# c: X2 n$ k
    Set circleObj = ThisDrawing.ModelSpace.addcircle(centerPoint, radius)
& t5 N9 ^0 p$ {( Q    radius = radius + 10
8 Q! G2 {9 s) y" [    ZoomAll4 G4 ~0 L" i7 E" I; }" ]1 u% ]) b5 B
    Loop
3 f! R1 S* i. k$ c1 H$ w 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.gif3 D; d# @- H: D  Q7 F1 u; E- K, Y
VBA中插入模块,输入以下代码,运行sub addcircle;2 w8 t0 J6 t0 ]
Option Explicit2 Q# `5 k% d" J) ?" [3 N1 U$ K! ^
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer1 j9 A$ s8 K, i
Public Const VK_ESCAPE = &H1B
! y8 G3 w+ ]4 o/ _7 ?9 ISub addcircle()
: T* R% m2 M/ `1 s- o+ @! p  @1 O* L...

: v/ b; a1 S+ B: |$ ~, j4 D9 Q2 {4 i& c谢谢这位
+ \/ i$ O, F) p- `/ }!可惜我不是太懂
 楼主| 发表于 2009-3-28 14:41:30 | 显示全部楼层 来自: 中国江苏苏州
原帖由 TALKE 于 2009-3-28 12:58 发表 http://www.3dportal.cn/discuz/images/common/back.gif
6 s; q/ L- `0 V. M3 I- S5 J* l3 j什么叫“变量点”?

/ |1 x" v: O, D% }' d1 A3 _' {3 D+ Q比如说我在画圆时,CAD要我输入半径值,当作R,我给CAD这个变量一个值比如R=10,而每操作一次,R的值增加10就是R=R+10的意思.
发表于 2009-3-28 15:14:16 | 显示全部楼层 来自: 中国江苏无锡
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。+ Z# G3 l; j* M7 M* n& R) Q- {

! n4 K8 j+ C% w6 t# n在lisp中变量可以是点,比如:7 Q- V6 y# J8 @- E8 \  t
(setq p1 (list 20 30)): o$ o* U$ R1 t4 L8 z0 A
(setq p2 (list 120 100))6 I, ^6 `% g4 c& R, w8 U; V
那么就可以认为p1,p2分别是点:' |) J' ?( s5 q" Z) O6 D2 @
函数(command "line" p1 p2 "")可以产生正确结果即在绘图空间中产生(20,30)-(120,100)的一段直线。0 a% P% `! {2 S
所以你一旦提到点,人们就很容易想到这样的点变量,这样的变量无所谓增量的,所以容易引起误会。, U) y/ S' \" [$ v4 ^% c

% H: I" W# U% c" H. K3 \% o/ e你的意思大概是在循环体中怎样使变量每循环一次增加一个常量吧?如果这个变量是r,增量是10,在lisp语言中赋值函数与+函数就可完成:0 b3 [' q- a, w) U) g
(setq r (+ r 10))' D3 p+ Q2 R; }2 |
在C语言、VB中都是普通的赋值语句。+ K4 o* J5 `% k, m" j+ n1 l1 j
  v$ j# L7 W+ Y
[ 本帖最后由 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! o8 k  m. k, e5 s; f& `* d) S4 I
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。
1 c$ I2 H/ D9 @+ p: n9 ?; O) B+ R! W6 [/ O
在lisp中变量可以是点,比如:# R) o) J  E8 ^* f
(setq p1 (list 20 30))2 ~  \& U$ c* Q' O9 `
(setq p2 (list 120 100 ...
4 Q3 S7 R" Z5 g$ V
谢谢这位,其实关于LISP也好VB也好,我都不是太懂,我想能否在CAD COMMAND状态下直接输入R,命令每操作一次,实现R+10有无办法?
% t9 U/ z( z  y+ y, Y, X. c9 Q6 f谢谢了。。
发表于 2009-3-31 12:53:58 | 显示全部楼层 来自: 中国江苏无锡
(setq r 10)
; Z$ b$ a5 x2 n4 `" r(defun c:c ()
1 P8 q4 y1 m8 m& h2 T(command "_circle" pause r)
& _+ h9 z6 K3 k' A- _) @(setq r (+ r 10))
6 p% e8 [0 c. q  w4 H! `7 ^1 F3 g)
# s4 t* e0 l2 u( U8 C7 ^上面的语句可以满足加十的要求,但不用输入R,只要点选中心点,其半径自动加10,完成圆。4 ]* r. p( K" K5 `
在LISP里加载,然后在命令里输c即可
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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