QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 2149|回复: 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;% T+ F' `. i$ l% [  R0 i' v
Option Explicit
! L1 x. ^# G* W/ QPublic Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
0 h6 B9 a$ F. q4 X$ DPublic Const VK_ESCAPE = &H1B
5 k) t9 s# V) nSub addcircle()
+ _" l  a* D3 V2 i    Dim circleObj As AcadCircle
* |4 }5 L! _3 F3 t+ D0 x    Dim centerPoint(0 To 2) As Double6 r; H' |% |% i) v$ W
    Dim radius As Double" K& t/ ^& J' a. V* n8 G
     centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#; ^2 k. g3 z% ^' t% ^/ V
    radius = 10#
$ \! q# z' k# G    Do While GetAsyncKeyState(VK_ESCAPE) <> -327671 ?$ _) s$ f! O; A( A+ j) N; \
    DoEvents
( J* p; a, b" f9 b) O' @" ]    Set circleObj = ThisDrawing.ModelSpace.addcircle(centerPoint, radius): b, K' Y: i& ~3 Q  `" s* n, P& ^$ @  s
    radius = radius + 10
4 `3 p4 F  q0 `  R& O    ZoomAll
" I; {1 [" X% N  A" w    Loop
/ t5 _$ l, @1 c: _ 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
3 b4 J( \( o5 O/ oVBA中插入模块,输入以下代码,运行sub addcircle;
' ?: y" C4 R2 POption Explicit
8 J" C" k; z7 \9 W0 C& ^Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
$ I3 I  D- K( P. s; }3 o- P& EPublic Const VK_ESCAPE = &H1B! P% q, s( D# p4 O
Sub addcircle()6 z3 r- y0 X) X2 I, ]8 X! x1 b
...
. z1 \2 U9 |: `. a* h
谢谢这位5 Z$ Q( F( }3 D0 H
!可惜我不是太懂
 楼主| 发表于 2009-3-28 14:41:30 | 显示全部楼层 来自: 中国江苏苏州
原帖由 TALKE 于 2009-3-28 12:58 发表 http://www.3dportal.cn/discuz/images/common/back.gif
  l+ _( u" a' \4 h什么叫“变量点”?
  M& `% v4 E* y  I7 m: Y+ L" y1 F
比如说我在画圆时,CAD要我输入半径值,当作R,我给CAD这个变量一个值比如R=10,而每操作一次,R的值增加10就是R=R+10的意思.
发表于 2009-3-28 15:14:16 | 显示全部楼层 来自: 中国江苏无锡
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。+ l' s" L1 N, c! D8 c& G. C
$ K* o3 a" M, I
在lisp中变量可以是点,比如:$ H5 W) S2 m7 P/ {+ n7 Z' s
(setq p1 (list 20 30))
, c$ S  G" Z# A(setq p2 (list 120 100))
! j7 P' [" Z) k9 l" w8 D1 a那么就可以认为p1,p2分别是点:3 P$ M) [! j; T' x" v
函数(command "line" p1 p2 "")可以产生正确结果即在绘图空间中产生(20,30)-(120,100)的一段直线。; |, Y( I: j/ ^3 _9 J9 t# r" S
所以你一旦提到点,人们就很容易想到这样的点变量,这样的变量无所谓增量的,所以容易引起误会。% k( {7 m9 b# `+ M) f- g

9 Y) f2 R. A% G1 A, B你的意思大概是在循环体中怎样使变量每循环一次增加一个常量吧?如果这个变量是r,增量是10,在lisp语言中赋值函数与+函数就可完成:
% X- L* F1 u/ {' z+ s(setq r (+ r 10))* W/ J, f+ k% i5 u8 I. \4 u
在C语言、VB中都是普通的赋值语句。
  S& U$ g7 |; R- h6 g) D( s) H9 t( S+ }2 q4 e
[ 本帖最后由 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
- ?; S% R" U+ t# j你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。
  Q* E0 B' V+ Y5 z" _/ Q8 A4 N' u  }/ |5 ]% W
在lisp中变量可以是点,比如:% x# O' ~& N5 |( g5 Y$ s- f% z6 }
(setq p1 (list 20 30))3 \# b, q+ I4 g- h% Z$ J& x
(setq p2 (list 120 100 ...

' v3 m# V7 n2 ^8 H' y谢谢这位,其实关于LISP也好VB也好,我都不是太懂,我想能否在CAD COMMAND状态下直接输入R,命令每操作一次,实现R+10有无办法?
* R2 ~* G3 L- @8 Z谢谢了。。
发表于 2009-3-31 12:53:58 | 显示全部楼层 来自: 中国江苏无锡
(setq r 10)
- D" @4 C" l4 V/ @(defun c:c ()
0 X5 c# N: Q9 s7 L1 r' U4 h! i(command "_circle" pause r)
3 q  u0 o5 X# x) k; M" _, d(setq r (+ r 10))
5 B7 R$ T4 I  b: k' ?5 [0 i# R)( x1 M7 M$ a! s  C
上面的语句可以满足加十的要求,但不用输入R,只要点选中心点,其半径自动加10,完成圆。
, N( _  z4 c! S! w( w. u4 x% S+ ]在LISP里加载,然后在命令里输c即可
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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