ZZXXQQ 发表于 2014-11-8 21:49:05

(defun c:`q();线性
(initget 1)
(setq pt1 (entsel "\n请指定标注起点:"))
(initget 1)
(setq pt2 (entsel "\n请指定标注终点:"))
(command "dimlinear" (cadr pt1) (cadr pt2) pause)
(princ)
)

669423907 发表于 2014-11-8 22:34:53

ZZXXQQ 发表于 2014-11-8 21:49 static/image/common/back.gif


Z版,和原来的程序相差太远了啊!

原来的:
1:点左键时,光标没有落在任何图元上,程序退出,如果点左键时,光标落在图元上,程序就可以继续运行到点第二点,如果点第二点时,光标没有落在任何图元上,程序退出,如果点第二点时,光标落在图元上,程序标出一个线性标注并循环到开始
2:按右键,可以选一根线,标出一个线性标注,并循环到开始

现在想改为:当程序顺利运行到要点第二点时,如果第二点没有落在任何图元上,程序不退出,直到点到图元或按右键退出

lsjj 发表于 2014-11-9 11:16:35

(defun c:`q();線性
(setq bz? (getpoint "\n左鍵標兩點,右鍵選線"))
(setq gbwz (grread 3));游標位置
(if (member (car gbwz) '(3 5))
(setq od (cadr gbwz)));滑鼠位置
(if bz?
(bz)
(bzz)
)
(princ))

(defun bz()
(if (ssget od)
(progn
    (while (not (ssget (setq pt2 (getpoint od "\n請指定標注終點:")))))
    (command"dimlinear" od pt2)
    (while (= 1 (getvar "cmdactive"))(command pause))
    (c:`q)
)
)

(princ))

(defun bzz()
(command "dimlinear""")
(while (= 1 (getvar "cmdactive"))(command pause))
(c:`q)
(princ))
页: 1 [2]
查看完整版本: 大师们方便帮看一下这个标注程序错在哪里吗?