QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
8天前
查看: 2105|回复: 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;. F7 K) o, Y* [" z( f) r1 }& L
Option Explicit
3 s0 m5 d% }2 n* p' \4 j5 yPublic Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer- [4 m2 j, A# |. e$ }; k2 X
Public Const VK_ESCAPE = &H1B
  h  z+ n+ ?: U* d4 V9 N+ cSub addcircle()3 _( j* x& n1 a# }* r# H
    Dim circleObj As AcadCircle
3 G- P$ G! B8 H  x  k0 \6 C+ ]  g    Dim centerPoint(0 To 2) As Double4 z" ?% q9 l' p! E/ b* I7 ~
    Dim radius As Double
8 ?) O6 ^* Z3 h) S/ o8 Y, C     centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#* `) {! l: t+ P, {/ \7 r
    radius = 10#
) T7 Z% k8 a( h" G. L0 }    Do While GetAsyncKeyState(VK_ESCAPE) <> -327675 B( m" {8 ~. j% C& E
    DoEvents; c% x8 B$ c% |+ V
    Set circleObj = ThisDrawing.ModelSpace.addcircle(centerPoint, radius)# m2 ~+ l5 b% X' e/ ~
    radius = radius + 10; \: X( k. M) T
    ZoomAll4 Y7 U& e( {7 f% h# M
    Loop
! b9 A# I7 \8 ?7 T5 W7 r 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' v1 J( O1 \: o' H. U
VBA中插入模块,输入以下代码,运行sub addcircle;
3 p. |: a( u1 M+ h" v4 d1 X1 p* xOption Explicit
0 |- N: x: ?* S6 k! [7 x: H8 ZPublic Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
; V7 j: U9 \  |. {' y) XPublic Const VK_ESCAPE = &H1B
8 W& q8 O. t9 q9 Y1 [$ VSub addcircle()
! e$ z& L3 p  u5 m" {5 f6 R...

" l0 j9 y* d; `( F2 v7 u* Q$ P谢谢这位$ a) c/ M3 Y5 ~
!可惜我不是太懂
 楼主| 发表于 2009-3-28 14:41:30 | 显示全部楼层 来自: 中国江苏苏州
原帖由 TALKE 于 2009-3-28 12:58 发表 http://www.3dportal.cn/discuz/images/common/back.gif; p3 g5 B1 m: ]# t
什么叫“变量点”?
+ Z1 N3 s+ q" q! [
比如说我在画圆时,CAD要我输入半径值,当作R,我给CAD这个变量一个值比如R=10,而每操作一次,R的值增加10就是R=R+10的意思.
发表于 2009-3-28 15:14:16 | 显示全部楼层 来自: 中国江苏无锡
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。8 P' L/ Z# C! \
! s! l" P& V8 |$ r) f
在lisp中变量可以是点,比如:
" C6 G5 W( Z4 O6 {(setq p1 (list 20 30))
4 Y" y9 t+ D8 t$ p" K5 R(setq p2 (list 120 100))3 H' b, R% v( N( r, _
那么就可以认为p1,p2分别是点:( v. F# T- M; j! ^* [, o
函数(command "line" p1 p2 "")可以产生正确结果即在绘图空间中产生(20,30)-(120,100)的一段直线。
" g" Z$ [' s$ ^  M/ _所以你一旦提到点,人们就很容易想到这样的点变量,这样的变量无所谓增量的,所以容易引起误会。" @9 [; @. g; ]( ]

( E) h( b& D' \$ }3 X0 w你的意思大概是在循环体中怎样使变量每循环一次增加一个常量吧?如果这个变量是r,增量是10,在lisp语言中赋值函数与+函数就可完成:
4 @. X( u5 a6 q+ H6 x* }(setq r (+ r 10))
* z" A* D$ D$ U/ v; _% E+ D在C语言、VB中都是普通的赋值语句。
4 r: d- {% ~$ U/ D6 @6 \
  h; M, i  m" Q, d) o/ t9 q! E" M[ 本帖最后由 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
) i" Q9 J0 |, T& M0 l0 c* w9 D1 G* B你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。$ M3 v5 j0 t1 x8 o3 R  t: B* m

' P' n6 j: W9 ?" D5 Q- w% T5 a在lisp中变量可以是点,比如:* {2 V6 i* E6 b; T
(setq p1 (list 20 30))3 F3 E- u! v6 m2 l  [
(setq p2 (list 120 100 ...
' f, ~, n' f* ]; x9 M
谢谢这位,其实关于LISP也好VB也好,我都不是太懂,我想能否在CAD COMMAND状态下直接输入R,命令每操作一次,实现R+10有无办法?  j/ o) {8 c  N& x
谢谢了。。
发表于 2009-3-31 12:53:58 | 显示全部楼层 来自: 中国江苏无锡
(setq r 10)
5 @  k& ~1 C( s(defun c:c ()
$ [/ I, {+ S3 E- L( f  j/ S(command "_circle" pause r)6 t$ m" }# m8 U) V9 [3 c; H" k
(setq r (+ r 10))
5 ?; i2 b; o; s  \' m. C+ G)) n# s6 H2 T8 }$ w
上面的语句可以满足加十的要求,但不用输入R,只要点选中心点,其半径自动加10,完成圆。7 U2 N5 Y% d( A6 U( a
在LISP里加载,然后在命令里输c即可
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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