谢谢David,但是getdist会接受上述输入吗? 李,
(getdist)始终接受小数。它还接受当前单位格式的输入以及点输入(键盘或鼠标)(绝对或相对)。这是一条路要走-大卫 好的,根据你的建议,这里有另一个版本供OP尝试:
;; Elevation Changer by Lee McDonnell (Lee Mac)
;; 05.06.2009 ~ zMov to invoke
(defun c:zMov (/ ss z)
(vl-load-com)
(if (and (setq ss (ssget))
(setq z (getdist "\nSpecify Z Elevation: ")))
(progn
(setq Obj (mapcar 'vlax-ename->vla-object
(vl-remove-if 'listp
(mapcar 'cadr (ssnamex ss)))))
(foreach x Obj
(foreach i '(1e99 -1e99)
(vla-move x
(vlax-3D-point '(0 0 0))
(vlax-3D-point (list 0 0 i)))))
(mapcar
(function
(lambda (x)
(vla-move x
(vlax-3D-point '(0 0 0))
(vlax-3D-point (list 0 0 z))))) Obj))
(princ "\n<< Incorrect Selection >>"))
(princ))
我在转换器中制作Str->仍然很有趣 李,
如果您使用:
(while (not ss)
(setq ss (ssget)))和
(initget 1)
(setq z (getdist "\nSpecify Z Elevation: "))
您将获得正确的输入,而不需要(if)(和)(progn)
或“错误选择”语句。
如果我做了一个精心设计的选择集,错误地按enter键输入(getdist),我会有点生气。只有我的0.2美元-大卫 我理解您的(initget 1)建议,但我不喜欢在收集选择集时使用WHILE语句,因为此时用户必须强制出错才能退出函数,因此可能:
(if (and (setq ss (ssget))
(not (initget 1))
(setq z (getdist...
我在那里迷路了。用户只需在做出有效(非空)选择后按enter键-大卫
但是,如果他们启动函数并决定不选择任何内容,他们必须通过按Esc退出函数来强制出错。
我必须承认,我从未理解过这种方法。多年来,Autodesk在这方面并不完全一致。在PEDIT上试试这个名字1。为什么你要启动一个函数并决定不使用它?他们是否计划让更多的人犯更多的打字错误,而不是正确的输入?我一直没弄明白-大卫
即便如此,我宁愿退出该功能,也不愿让用户按Esc键。也许只有我一个人 谢谢大家。它工作得很好!
页:
1
[2]