恢复捕捉设置--搞定了
本帖最后由 yiming61 于 2012-8-24 14:58 编辑在本版下过一个连续复制带计数的lsp很好用,可惜忘了是哪位兄弟发的了。但是我一直只能用esc退出该复制,导致捕捉每次被清空,求助。这是原lsp
;;; 连续复制-lxfz
;;; 命令:lxfz 右键默认距离复制esc键退出
;;; _________________________________________________________________________________________________________________________________________________
(defun c:lxfz ( / ennn hudu juli julibak nu p0 p1 snap ss ssbak)
(setvar "cmdecho" 0)
(vl-load-com)
(defun #err4 (s)
(command ".UNDO" "E")
(setvar "osmode" snap) ; 恢复捕捉
(setq *error* $orr)
)
(setq $orr *error*)
(setq *error* #err4)
(setq ss (ssget))
(if (null ss)
(vl-exit-with-error "")
)
(setq p0 (getpoint "\n指定基点:"))
(if (null p0)
(vl-exit-with-error "")
)
(princ "\n指定第二点, 或位移:")
(while t
(command ".UNDO" "BE")
(setq ennn (entlast))
(command ".copy" ss "" p0 pause)
(setq p1 (getvar "lastpoint"))
(setq snap (getvar "osmode")); 关闭捕捉
(setq ss (lt:ss-entnext ennn))
(setq juli (distance p0 p1))
(if (= 0 juli)
(progn
(setvar "osmode" 0)
(command ".erase" ss "")
(setq ss ssbak)
(setq p1 (list (+ (nth 0 p0) (* julibak (cos hudu))) (+ (nth 1 p0) (* julibak (sin hudu))) (nth 2 p0)))
(setq ennn (entlast))
(command ".copy" ss "" p0 p1)
(setq ss (lt:ss-entnext ennn))
(setq ssbak ss)
(setq p0 p1)
(setq nu (1+ nu))
(princ (strcat "\n数量:" (itoa nu) "。指定下一点, 或继续位移<" (rtos julibak) ">:"))
)
(progn
(setq ssbak ss)
(setq julibak juli)
(setq hudu (angle p0 p1))
(setq p0 p1)
(setq nu 2)
(princ (strcat "\n指定下一点, 或继续位移<" (rtos julibak) ">:"))
)
)
(command ".UNDO" "E")
)
(setq *error* $orr)
(princ)
)
;;; _____________________________________________________________
;;; ▓ (lt:ss-entnext en)
;;; [功能] 获取在图元 en 之后产生的图元的选择集
;;; [参数] en----图元名
;;; [返回] 选择集
;;; [测试]1.(setq en (entlast))
;;; 执行创建图元的命令,如 line,boundary
;;; (setq ss (lt:ss-entnext en))
;;; 2.(setq ss (lt:ss-entnext (car(entsel))))
(defun lt:ss-entnext (en / ss)
(if en
(progn
(setq ss (ssadd))
(while (setq en (entnext en))
(if (not (member (cdr (assoc 0 (entget en))) '("ATTRIB" "VERTEX"
"SEQEND"
)
)
)
(ssadd en ss)
)
)
(if (zerop (sslength ss))
(setq ss nil)
)
ss
)
(ssget "_x")
)
)
跳过捕捉
(command ".copy" ss "" p0 pause)
===>
(command ".copy" ss "" "None" p0 "None" pause)
;; (setvar "osmode" 0) 替换后仍然不好用 yiming61 发表于 2012-8-24 11:34 static/image/common/back.gif
替换后仍然不好用
可以了太感谢了
页:
[1]