QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
10天前
查看: 2043|回复: 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;
, \6 I8 d  Q' J; a; ZOption Explicit7 K/ d/ k- V1 S# T! O
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
5 t4 j8 V4 ]# c) L! G/ n  WPublic Const VK_ESCAPE = &H1B
' L# }3 `- t& X) `2 r& @Sub addcircle()
, R5 U$ ?+ I- a    Dim circleObj As AcadCircle8 V" L1 N0 M- @5 H$ l
    Dim centerPoint(0 To 2) As Double  l, v; `' ?, @' [+ ]  q' t
    Dim radius As Double
- Y( b) B( R# m- q; h- Q0 D( f     centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#
# Z7 f1 S& u7 e0 D3 v3 V! v    radius = 10#' z  S/ ?& u5 I  G7 `2 E
    Do While GetAsyncKeyState(VK_ESCAPE) <> -32767( n$ \9 `1 J, s' Z, Z+ t
    DoEvents7 n8 {0 O! u8 q  ^
    Set circleObj = ThisDrawing.ModelSpace.addcircle(centerPoint, radius)
! L8 ]6 S* F5 {- b  d    radius = radius + 10. G) D. J' ]2 c* G' w7 Y5 a  T$ a
    ZoomAll
: q/ s+ S1 M2 m1 K* c7 Q    Loop
5 J" c0 H0 y& ^2 y" \5 B  d 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
% v" X! b1 t0 n8 x* PVBA中插入模块,输入以下代码,运行sub addcircle;6 |  T* P& @7 t
Option Explicit
3 D8 \. N5 }/ b% `. GPublic Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
- e4 V6 E2 C0 L0 Z+ jPublic Const VK_ESCAPE = &H1B/ ^+ }# ^  K8 V+ @
Sub addcircle()
$ D8 `& g1 [2 N7 B% B: p8 W0 d8 T- _...
! e! h* N) K5 N* D4 n# D
谢谢这位# ~6 _. ~) D& O# V! C4 o
!可惜我不是太懂
 楼主| 发表于 2009-3-28 14:41:30 | 显示全部楼层 来自: 中国江苏苏州
原帖由 TALKE 于 2009-3-28 12:58 发表 http://www.3dportal.cn/discuz/images/common/back.gif) O' G9 v0 }1 H  ]& m
什么叫“变量点”?

  A$ x9 \  h& F: {+ S6 }, l比如说我在画圆时,CAD要我输入半径值,当作R,我给CAD这个变量一个值比如R=10,而每操作一次,R的值增加10就是R=R+10的意思.
发表于 2009-3-28 15:14:16 | 显示全部楼层 来自: 中国江苏无锡
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。, |. \. w2 x1 j/ A, p8 Z$ D
7 P: T2 C# y+ ]3 a$ P! j$ h9 E/ o4 n
在lisp中变量可以是点,比如:- k4 O! |! O$ o
(setq p1 (list 20 30))
& q3 @. e; [' y  g% h(setq p2 (list 120 100)): ]8 l5 V" b  h0 F& ]7 x9 O' S
那么就可以认为p1,p2分别是点:
4 K5 b' Z5 C4 j# T: m5 j函数(command "line" p1 p2 "")可以产生正确结果即在绘图空间中产生(20,30)-(120,100)的一段直线。
" o' l- ]9 `( c5 A/ C( N: S& N所以你一旦提到点,人们就很容易想到这样的点变量,这样的变量无所谓增量的,所以容易引起误会。
1 u3 r' U0 O1 U& k; n& F. g0 A' m5 F, W1 A
你的意思大概是在循环体中怎样使变量每循环一次增加一个常量吧?如果这个变量是r,增量是10,在lisp语言中赋值函数与+函数就可完成:
; y- s2 K4 i3 }8 ^% f(setq r (+ r 10))6 ?* y0 N* i1 c( O, ~& `
在C语言、VB中都是普通的赋值语句。
% p9 h- ^2 I$ D& L! Z# C# X2 p% s/ @" I! |, t6 f* [" 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.gif1 N. @1 J( x# _5 S
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。3 e  s, Z/ l0 M) Z6 v6 X4 ~) R

& v  i; ]4 g/ N0 P& t% h' j& J" [5 T% Y在lisp中变量可以是点,比如:
- a6 y' \/ N  b- h1 }! u! G, v' `8 J(setq p1 (list 20 30))+ A6 d0 i/ U0 C- \0 T- O+ G2 ~. f) S
(setq p2 (list 120 100 ...
/ s  U( O% p8 q6 o$ l
谢谢这位,其实关于LISP也好VB也好,我都不是太懂,我想能否在CAD COMMAND状态下直接输入R,命令每操作一次,实现R+10有无办法?
  X/ b7 o6 Q' Y( g8 a" I谢谢了。。
发表于 2009-3-31 12:53:58 | 显示全部楼层 来自: 中国江苏无锡
(setq r 10)
8 x; A4 B7 `9 I! `(defun c:c ()
' r$ }2 r" M. W9 m(command "_circle" pause r)
! n* \  |! y3 B0 x5 g(setq r (+ r 10))! H& o$ m! A0 }
): t0 H: A! ]1 M4 ?1 V; q% P( e/ H
上面的语句可以满足加十的要求,但不用输入R,只要点选中心点,其半径自动加10,完成圆。
& @" f8 h$ X. G- d& i% G" |在LISP里加载,然后在命令里输c即可
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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