QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 2151|回复: 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 m  p  S5 ^( G1 |3 j% J# b& vOption Explicit
1 ?6 h0 q# r9 {Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
- q" L4 t. C0 Z! W5 t: K+ @7 V! DPublic Const VK_ESCAPE = &H1B/ A' E2 [5 f( g7 W! R5 N& J
Sub addcircle()* T) {6 J1 J( }0 N
    Dim circleObj As AcadCircle6 Z3 K: |& a: |6 f; r  w+ Z$ Y# u0 @
    Dim centerPoint(0 To 2) As Double
! `, ^6 n) F2 m7 i' k- ^    Dim radius As Double% A; o6 A& R) F7 i
     centerPoint(0) = 0#: centerPoint(1) = 0#: centerPoint(2) = 0#
2 Y$ I$ }9 _$ S    radius = 10#5 k. r3 L1 P! K' e
    Do While GetAsyncKeyState(VK_ESCAPE) <> -32767" E9 b1 W% Z& v- U) m+ ^9 w
    DoEvents* ?9 O- ?* c" T* Z1 Y* Y0 X. a/ S
    Set circleObj = ThisDrawing.ModelSpace.addcircle(centerPoint, radius)$ ?. p2 ?+ [# _' t% V
    radius = radius + 109 \: `( p; W3 z' X0 k6 z
    ZoomAll
& |7 h2 n1 I4 k1 a+ `4 p, I    Loop1 B- p( I$ O. ~. Q7 _, m# H# {# p
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
+ O; |9 E7 [6 p8 U) I" ~  qVBA中插入模块,输入以下代码,运行sub addcircle;
* X" Y# P* N1 H. i# S! ^' ?3 MOption Explicit
9 a5 J0 D' o& B0 O/ w- ?Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer0 }: M4 Y+ Q' X
Public Const VK_ESCAPE = &H1B0 |* q4 Y# o6 d5 D5 W, Q3 [) r
Sub addcircle()
2 }$ f& d+ {& W1 P: c, P; |...

! B( _$ l8 d( |1 D0 U9 ~, f谢谢这位
9 l" J$ J# {# W1 h!可惜我不是太懂
 楼主| 发表于 2009-3-28 14:41:30 | 显示全部楼层 来自: 中国江苏苏州
原帖由 TALKE 于 2009-3-28 12:58 发表 http://www.3dportal.cn/discuz/images/common/back.gif8 V4 Y0 n. Z, {8 H! L( V9 b
什么叫“变量点”?
; ^2 R2 J% {5 T8 B* Z
比如说我在画圆时,CAD要我输入半径值,当作R,我给CAD这个变量一个值比如R=10,而每操作一次,R的值增加10就是R=R+10的意思.
发表于 2009-3-28 15:14:16 | 显示全部楼层 来自: 中国江苏无锡
你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。) R* I3 P  c* J% r3 h5 ?5 d- i8 W5 M7 @

! W4 ?. Z& f. Q$ I9 o在lisp中变量可以是点,比如:
5 z! g: u- ^7 s* h# G; c(setq p1 (list 20 30))
: V0 C4 `( g6 j7 y" V(setq p2 (list 120 100))
& n" e) J! A/ c# V; V0 Q: R& s那么就可以认为p1,p2分别是点:
% _; F7 f+ H% t3 u  z" b函数(command "line" p1 p2 "")可以产生正确结果即在绘图空间中产生(20,30)-(120,100)的一段直线。9 j) h+ O, D% j' t5 i
所以你一旦提到点,人们就很容易想到这样的点变量,这样的变量无所谓增量的,所以容易引起误会。
0 _+ {% ?$ ^: N! ?+ p  {9 Z" u0 E% I/ q/ y& E8 h: R
你的意思大概是在循环体中怎样使变量每循环一次增加一个常量吧?如果这个变量是r,增量是10,在lisp语言中赋值函数与+函数就可完成:- E' w5 s! W' p! m! T9 I6 r
(setq r (+ r 10))
9 C4 N: X/ B2 D9 f8 m" N& l0 a在C语言、VB中都是普通的赋值语句。$ [  }" Z1 O* Z; W# g& o! W

. T0 ^+ m9 t1 K) v4 o* o[ 本帖最后由 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
; L4 ^9 L- r& [; E& X8 A" G" A5 c你说的这个,是变量,不是变量点。建议语言尽量规范,使用常规的习惯用语,不要随意杜撰,如果提出新的词汇那就要予以解释清楚。
% @7 @! ^7 ^7 U( K2 D. I, j4 R/ `& d- Z3 u9 E( z
在lisp中变量可以是点,比如:. G' J) g( O, U' \
(setq p1 (list 20 30)). @2 _: G& I9 B9 A1 c
(setq p2 (list 120 100 ...

  K; O! C: {# s谢谢这位,其实关于LISP也好VB也好,我都不是太懂,我想能否在CAD COMMAND状态下直接输入R,命令每操作一次,实现R+10有无办法?
3 t0 F5 C+ M7 q9 R1 T+ v谢谢了。。
发表于 2009-3-31 12:53:58 | 显示全部楼层 来自: 中国江苏无锡
(setq r 10)
. ?; D. H+ _  j; N(defun c:c ()
& B' G( x* Z4 n" F5 G- v(command "_circle" pause r)% _2 y  u, t/ p- g
(setq r (+ r 10))
/ ?; ^4 Z6 `- w- [: C)1 Z) F: _1 ^# V( c' q3 w
上面的语句可以满足加十的要求,但不用输入R,只要点选中心点,其半径自动加10,完成圆。
" M- W2 r1 l# M% ]在LISP里加载,然后在命令里输c即可
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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