QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 2126|回复: 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;) U5 R4 V7 k6 d; m3 _. ^( _, L
Option Explicit
5 ?' D; V  J9 C# o8 j/ L$ E/ yPublic Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
  |) c+ W2 {# Z* s* r& w8 pPublic Const VK_ESCAPE = &H1B
4 \( [- W5 |, `9 V" l/ mSub addcircle()
; w4 j# Z, b* n/ e1 c    Dim circleObj As AcadCircle
' Q" M# R& p# Y- o* Z6 o    Dim centerPoint(0 To 2) As Double8 J4 M2 j$ ~9 Z# [5 B( |
    Dim radius As Double7 s$ }  T9 q! D# K$ k3 j
     centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#( q$ r" K" D% O  m; Y" |
    radius = 10#
* F5 C) F$ \% W5 `# m6 \    Do While GetAsyncKeyState(VK_ESCAPE) <> -32767
; |! I% S* W2 ~) o5 L    DoEvents) G  |( H& O$ {6 ~% i7 Q% ~7 k
    Set circleObj = ThisDrawing.ModelSpace.addcircle(centerPoint, radius)
0 N# Q* q1 o4 R1 X3 P    radius = radius + 10
4 E1 Q1 L9 D$ Q  j( y    ZoomAll
& p9 B& K1 U( T! c2 ^' l    Loop& v: f' E# s' v* O3 k! ]6 J
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
4 N. @+ A7 k) e, h1 s8 t) s3 {VBA中插入模块,输入以下代码,运行sub addcircle;
( M- X+ A, i, V2 P1 FOption Explicit# Y# @0 U$ o. M+ O
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer/ @% p- f' N1 e* T6 ~  n
Public Const VK_ESCAPE = &H1B
2 W+ v* X/ T! v) A4 h- gSub addcircle()
, |7 x9 f/ {% C: }* {) W1 C1 {" h1 n...

. m  y, R6 ^( N- X谢谢这位+ {: g; d9 z. m
!可惜我不是太懂
 楼主| 发表于 2009-3-28 14:41:30 | 显示全部楼层 来自: 中国江苏苏州
原帖由 TALKE 于 2009-3-28 12:58 发表 http://www.3dportal.cn/discuz/images/common/back.gif5 z7 n* @- x' q, K  z
什么叫“变量点”?
1 f) E: c, |  T8 f4 a7 o9 @- I- F+ a
比如说我在画圆时,CAD要我输入半径值,当作R,我给CAD这个变量一个值比如R=10,而每操作一次,R的值增加10就是R=R+10的意思.
发表于 2009-3-28 15:14:16 | 显示全部楼层 来自: 中国江苏无锡
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。
3 c3 I  D: ?+ N/ L- ?- t0 I8 ]1 v1 ]3 v% G: c+ S( b: R4 {$ g4 d: {8 X
在lisp中变量可以是点,比如:+ D  W2 F$ s5 }% H. R4 z
(setq p1 (list 20 30))
1 e9 h) S2 _$ E: @9 V; a* c" H(setq p2 (list 120 100))$ Z* r8 Q3 t! T8 P% v) y4 c3 A
那么就可以认为p1,p2分别是点:
5 v$ @; r, y7 s: |: v函数(command "line" p1 p2 "")可以产生正确结果即在绘图空间中产生(20,30)-(120,100)的一段直线。2 ]& }$ ]4 Q0 T# T8 J0 Y  }' ~
所以你一旦提到点,人们就很容易想到这样的点变量,这样的变量无所谓增量的,所以容易引起误会。) r( S& {4 A. x1 B% [

1 S. M7 n6 Y. z7 m你的意思大概是在循环体中怎样使变量每循环一次增加一个常量吧?如果这个变量是r,增量是10,在lisp语言中赋值函数与+函数就可完成:
# u: F+ l2 O* B( _9 Z(setq r (+ r 10))( s/ r: m$ h8 Z
在C语言、VB中都是普通的赋值语句。0 I# c4 J* t& m8 \6 k
- y4 c# O2 E4 t) U# E. I6 B8 N
[ 本帖最后由 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
$ Q" w6 P/ M( A你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。
: ^9 x( K- r' Z* w: R! @
" j2 W1 S3 c) e在lisp中变量可以是点,比如:
( t) r1 H- k3 a; W/ A  w(setq p1 (list 20 30))- Y& q4 Q/ @" v
(setq p2 (list 120 100 ...
% K3 I6 w9 n0 b6 O3 K8 \8 R7 P
谢谢这位,其实关于LISP也好VB也好,我都不是太懂,我想能否在CAD COMMAND状态下直接输入R,命令每操作一次,实现R+10有无办法?
7 k+ z4 f. D, C9 }谢谢了。。
发表于 2009-3-31 12:53:58 | 显示全部楼层 来自: 中国江苏无锡
(setq r 10)- _, ~$ N8 }2 E0 ^- U/ Y
(defun c:c ()5 L+ l2 ]: N4 I7 c* W- E4 e$ X
(command "_circle" pause r)
7 G! I, `% t% d8 t; Z(setq r (+ r 10))
5 C( e2 N0 p& r; g)! ^' H0 J/ Y" ^* w+ M- Z7 b" a. X
上面的语句可以满足加十的要求,但不用输入R,只要点选中心点,其半径自动加10,完成圆。
4 n! T  u! W+ E在LISP里加载,然后在命令里输c即可
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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