最初由 firemaner 发布
[B]能否实现一个和 镜像 相类似的命令,但是不同的是镜像在操作完之后原物还保留,而我需要实现的命令是将原物删除,
哪位大侠肯帮忙一下??? [/B]
给你写一个吧:

- [FONT=courier new]
- (defun c:cs_mir (/)
- (cond
- ((setq ss (ssget))
- (princ "\n选择对称轴线")
- (if (and (car (setq ent (zntq '((0 . "line")))))
- (= (type (cadr ent)) 'list)
- )
- (setq ent (car ent)
- ent_lst (entget ent)
- pt1 (cdr (assoc 10 ent_lst))
- pt2 (cdr (assoc 11 ent_lst))
- )
- (setq pt2 (getpoint (setq pt1 (cadr ent)) "\n第二点:"))
- )
- (if (and pt1 pt2)
- (progn
- (setq osmode (getvar "osmode")
- cmdecho (getvar "cmdecho")
- )
- (setvar "osmode" 0)
- (setvar "cmdecho" 0)
- (command "MIRROR" ss "" pt1 pt2 "yes");;;如果不删除,可以将YES改为NO即可
- (setvar "osmode" osmode)
- (setvar "cmdecho" cmdecho)
- )
- )
- )
- )
- (princ)
- )
- (defun zntq (nam / pt ss_name biaoji ss)
- (setq biaoji t)
- (while biaoji
- (setq pt (grread t 4 2))
- (cond
- ((= 5 (car pt))
- (setq ss (ssget (cadr pt) nam))
- (if ss_name
- (redraw ss_name 4)
- )
- (setq ss_name nil)
- (if ss
- (progn
- (setq ss_name (ssname ss 0))
- (redraw ss_name 3)
- )
- )
- )
- ((= 3 (car pt))
- (setq ss (ssget (cadr pt) nam))
- (if ss_name
- (redraw ss_name 4)
- )
- (setq ss_name nil)
- (if ss
- (progn
- (setq ss_name (ssname ss 0))
- (redraw ss_name 3)
- )
- )
- (setq biaoji nil)
- )
- ((or (= (car pt) 25)
- (and (= (car pt) 2)
- (or (= (cadr pt) 13)
- (= (cadr pt) 32)
- )
- )
- )
- (setq biaoji nil
- ss_name nil
- )
- )
- (t (princ))
- )
- )
- (if ss_name
- (redraw ss_name 4)
- )
- (list ss_name (cadr pt))
- )
- [/FONT]
|