讨教--循环判断问题
下面这段代码直接加while语句循环之后,就无法判断点a是否为空。请教如何能做到循环判断,到“选择实体”这里如果为空就退出
(defun c:BT()
(setvar "cmdecho" 0)
(setq os (getvar "osmode"))
(if (not (tblsearch "layer" "dim"))
(command "layer" "new" "dim" "C" 3 "dim" "L" "Continuous" "dim" "LW" 0.15 "dim" "")
)
(setvar "osmode" 183)
;;;====================================================================(想从这里开始循环)
(setq a (getpoint "\n-->请指定标注的第一点:\n>>>或回车<选择实体>:"))
(if (/= a nil)
(progn
(setq b (getpoint "\n-->请指定标注的第二点:"))
(command "dimlinear" a b pause)
(setq en (entlast))
(command "_.chprop" en "" "LA" "DIM" "")
)
(progn
(setq s1 (entsel "\n选择实体<退出>: "))
(command "dimlinear" "" s1 pause)
(setq en (entlast))
(command "_.chprop" en "" "LA" "DIM" "")
)
)
;;;====================================================================(循环结束)
(setvar "osmode" os)
(setvar "cmdecho" 1)
(princ)
);defun
http://bbs.mjtd.com/xwb/images/bgimg/icon_logo.png 该贴已经同步到 冒个烟圈的微博 把 :(setq s1 (entsel "\n选择实体<退出>: "))
改成:
(while (null s1)
(setq s1 (entsel "\n选择实体<退出>: "))
)
bori 发表于 2015-11-20 14:54 static/image/common/back.gif
把 :(setq s1 (entsel "\n选择实体: "))
改成:
试过了,还是不行啊。。 冒个烟圈 发表于 2015-11-20 16:12 static/image/common/back.gif
试过了,还是不行啊。。
是不是这个意思:
(while (null a)
(setq a (getpoint "\n-->请指定标注的第一点:\n>>>或回车<选择实体>:"))
(if (/= a nil)
(progn
(setq b (getpoint "\n-->请指定标注的第二点:"))
(command "dimlinear" a b pause)
(setq en (entlast))
(command "_.chprop" en "" "LA" "DIM" "")
(setq a nil) ;;a清空
)
(progn
本帖最后由 llsheng_73 于 2015-11-20 19:05 编辑
(defun c:BT(/ a b os)
(setvar "cmdecho" 0)
(setq os (getvar "osmode"))
(if(not(tblsearch "layer" "dim"))(command "layer" "new" "dim" "C" 3 "dim" "L" "Continuous" "dim" "LW" 0.15 "dim" ""))
(setvar "osmode" 183)
(while(if(setq a(getpoint "\n-->请指定标注的第一点:\n>>>或回车<选择实体>:"))
(if(setq b(getpoint "\n-->请指定标注的第二点:"))
(setq a(command "dimlinear" a b pause)a t))
(if(setq a(entsel "\n选择实体<退出>: "))
(setq a(command "dimlinear" "" a pause)a t)))
(command "_.chprop" (entlast) "" "LA" "DIM" ""))
(setvar "osmode"os)
(setvar "cmdecho" 1)
(princ))
llsheng_73 发表于 2015-11-20 18:42 static/image/common/back.gif
多谢长老出手,终于可以了,
但是这句:(if(setq a(entsel "\n选择实体<退出>: "))运行的时候不能选多义线(如:矩形)
我知道是程序本身的问题,请问有什么好办法能能像CAD自带的“DIMLINEAR”命令一样,能选到多义线吗? 冒个烟圈 发表于 2015-11-20 19:26 static/image/common/back.gif
多谢长老出手,终于可以了,
但是这句:(if(setq a(entsel "\n选择实体: "))运行的时候不能选多义线(如 ...
对这个命令不清楚,没用过,选择是可以选择到,运行到它的时候会怎么样我不清楚了 llsheng_73 发表于 2015-11-20 19:47 static/image/common/back.gif
对这个命令不清楚,没用过,选择是可以选择到,运行到它的时候会怎么样我不清楚了
运行到这儿的时候提示如下
:选择实体<退出>:
所选对象不是直线、圆弧或圆。
然后直接跳到“选择标注对象:
未选择对象。” llsheng_73 发表于 2015-11-20 19:47 static/image/common/back.gif
对这个命令不清楚,没用过,选择是可以选择到,运行到它的时候会怎么样我不清楚了
再请教下:在保持程序功能不改变的情况下,这一句:(if(setq a(entsel "\n选择实体: "))能否取消。
如果能取消,该如何衔接上下语句? 本帖最后由 llsheng_73 于 2015-11-20 23:53 编辑
冒个烟圈 发表于 2015-11-20 20:03 static/image/common/back.gif
再请教下:在保持程序功能不改变的情况下,这一句:(if(setq a(entsel "\n选择实体: "))能否取消。
如果 ...
不能去掉。。。我运行了一下,选择多段线的时候它会说不是直线,圆,弧
页:
[1]