冒个烟圈 发表于 2016-3-15 20:16:23

dimlinear命令循环

;;下面这段程序只能执行到 第1步,因水平有限,后面的2和3不会做,恳请帮忙

;;希望实现的功能:循环开始 1 如果选第一(a)点,那么循环执行(command "dimlinear" a pause pause)
                                          2如果第一点(a)为空,那么执行(command "dimlinear" "" pause pause)一次,完成后返回到1
                                          3如果执行到第2步时,空选(即右键)程序退出
(defun c:NN(/)
(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 0)
(while (/= a nil)
    (progn
    (setq a (getpoint "\n-->请指定标注的第一点:\n>>>或回车<选择实体>:"))
    (if (/= a nil)
    (command "dimlinear" a pause pause)
    (command "dimlinear" "" pause pause));;;;选择标注的图元后,程序终止循环了,不能返回到“指定标注的第一点"
   ))
(setvar "osmode"os)
(princ))

http://bbs.mjtd.com/xwb/images/bgimg/icon_logo.png 该贴已经同步到 冒个烟圈的微博

zkq1212 发表于 2016-3-16 08:38:06

本帖最后由 zkq1212 于 2016-3-16 08:41 编辑

http://bbs.mjtd.com/forum.php?mod=viewthread&tid=111484
这里有

ZZXXQQ 发表于 2016-3-16 08:53:05

;;希望实现的功能:
;循环开始
; 1 如果选第一(a)点,那么循环执行(command "dimlinear" a pause pause)
; 2如果第一点(a)为空,那么执行(command "dimlinear" "" pause pause)一次,完成后返回到1
; 3如果执行到第2步时,空选(即右键)程序退出
(defun c:NN(/)
(setq os (getvar "osmode"))
(command "layer" "M" "dim" "C" 3 "" "LW" 0.15 "" "")
(setvar "osmode" 183)
(setq pt1 T)
(while pt1
   (while (setq pt1 (getpoint "\n第一点: "))
    (command "DIMLINEAR" pt1 PAUSE PAUSE)
   )
   (if (setq pt1 (getpoint "\n第二点: ")) (command "DIMLINEAR" "" pt1 PAUSE))
)
(setvar "osmode"os)
(princ)
)

冒个烟圈 发表于 2016-3-16 19:24:45

zkq1212 发表于 2016-3-16 08:38 static/image/common/back.gif
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=111484
这里有

谢谢提示。。。。。。。。。

冒个烟圈 发表于 2016-3-16 19:25:17

ZZXXQQ 发表于 2016-3-16 08:53 static/image/common/back.gif


谢谢指点。。。我再琢磨琢磨

li18153832202 发表于 2019-9-21 21:11:17

(command "dimlinear" "" pause pause));;;;选择标注的图元后,程序终止循环了,不能返回到“指定标注的第一点"=====》想出办法了没有
页: [1]
查看完整版本: dimlinear命令循环