明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4533|回复: 24

[求助]谁给推荐几个简明的while函数的用法

  [复制链接]
发表于 2007-1-30 03:02 | 显示全部楼层 |阅读模式
如题,刚接触LISP,觉得这个函数有奥妙,但就是难理解
谁给举几个例子,谢过先
发表于 2007-1-30 09:59 | 显示全部楼层
本帖最后由 作者 于 2007-1-30 10:02:23 编辑

循环语句,总的来说都是循环啦。。。。呵呵

1.循环表处理

(setq ss(ssget)
         i 0
         len(sslength ss))
(while(< i len)
  (setq e(ssname ss i))
  ;;;处理....
  (setq i(1+ i))
)

2.循环输入

发表于 2007-1-30 13:38 | 显示全部楼层

不定次数循环,当选择了实体就进入循环处理,否则退出循环。

(WHILE (SETQ SS (SSGET))
...
;循环处理
...
)

发表于 2007-1-30 21:42 | 显示全部楼层

(while (setq a (select))

  (print (strcat "你选择的是:"(cdr(assoc 0 (entget a))))))

)

 楼主| 发表于 2007-1-30 22:16 | 显示全部楼层
隔夜就有这么多朋友回复,真有几分惊喜~~~
单纯按CAD画总觉得很烦琐,鼠标键盘不停地敲。。。。
就拿最简单最常用的画直线和圆命令来说总觉得没自动循环不顺手~~
我估计是因为它是一个平台型软件而兼顾了二次开发的利用的缘故吧
(defun c:c (/ pt0)
    (setq pt0 (getpoint "请输入圆心:"))
    (while pt0
        (command "circle" pt0 pause)
    )
    (prin1)
)
这样只能重复画同心圆,而且右键不能退出画圆,该怎么才能重复输入圆心呢
 楼主| 发表于 2007-1-30 22:32 | 显示全部楼层
(defun c:c (/ pt0 pt)
    (setq pt0 (getpoint "\n请输入圆心:"))
    (setq pt pt0)
    (while pt
        (command "circle" pt pause)
        (setq pt (getpoint "请输入圆心:"))
    )
    (prin1)
)
哈,搞定了,连续画圆~~~~~~~~~
从下载LISP开始能修改一些简单LISP了~~谢谢各位的指点
 楼主| 发表于 2007-1-30 23:01 | 显示全部楼层
程序依然有问题按系统提示输入D就出错,看来PAUSE简单了点
得完整补上D选项的内容,这个选项可不不好补啊,
输入实数它可自动认为是半径,输入D按直径选项来做后续的处理
又得请行家来出手了。。。。。。。。。。。
发表于 2007-1-31 00:06 | 显示全部楼层
  1. (defun c:cc(/ pt)
  2.   (while (setq pt(getpoint "\n 圆心:"))
  3.     (command "_.circle" pt)
  4.     (while (/= 0 (getvar "cmdactive"))
  5.       (command pause)
  6.     )
  7.   )(princ)
  8. )
 楼主| 发表于 2007-1-31 02:04 | 显示全部楼层
如此一改真是毫无累赘的痕迹~~~高!!!
即可循环也容易退出,只能说声谢谢了~~`~
我自己去改改直线命令
 楼主| 发表于 2007-1-31 02:17 | 显示全部楼层
既可输入实数也可回应字母该用十么输入函数呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-18 09:39 , Processed in 0.333173 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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