非常好用的镜像还差一点功能,请大神教我
本帖最后由 tranney 于 2018-8-17 08:28 编辑本镜像功能非常好用,但是还缺先选择物体可以执行,请大神修改一下
不好意思,发错版块了,请版主删除,谢谢
(defun c:ww (/ ss en p1 p2 loop code test)
(princ "修改工具 我的镜像 左键、空格,X键 保留,右键删除\n")
(setq ss (ssget))
(initget 1 "X")
(setq p1 (getpoint "\n指定镜像线的第一点或[选镜像线(X)]:"))
(cond ( (= p1 "X")
(setq test t)
(setq ent1 (entsel "\n请选择中心直线:")
e1 (car ent1)
ss1(entget e1))
(setq p1 (Cdr (Assoc 10 ss1))
p2 (Cdr (Assoc 11 ss1)))
(command "mirror" ss ""p1 p2 "N")(princ)
(princ "\n我的镜像 左键、空格,X键 保留,右键删除!" )
(setq loop T)
(while loop
(setq code (grread T 8))
(cond
((= (car code) 25) (command "erase" ss "") (setq loop nil));右键
((= (cadr code) 32) (setq loop nil));空格
((= (car code) 3) (setq loop nil));左键
((or (= (cadr code) 88)(= (cadr code) 120)) (setq loop nil));88为大写X120为小写x
);cond
);while
)
(t
(setq p2 (getpoint p1 "\n指定镜像线的第二点:"))
(command "mirror" ss "" p1 p2 "N")
(princ "\n我的镜像 左键、空格,X键 保留,右键删除!" )
(setq loop T)
(while loop
(setq code (grread T 8))
(cond
((= (car code) 25) (command "erase" ss "") (setq loop nil));右键
((= (cadr code) 32) (setq loop nil));空格
((= (car code) 3) (setq loop nil));左键
((or (= (cadr code) 88)(= (cadr code) 120)) (setq loop nil));88为大写X120为小写x
);cond
);while
)
);cond
(princ)
);end
(defun c:ww (/ ss en p1 p2 loop code test)
(princ "修改工具 我的镜像 左键、空格,X键 保留,右键删除\n")
(setq ss (ssget "i"));用这个来获取已经选择的选择集
(if (not ss)
(setq ss (ssget))
)
(initget 1 "X")
(setq p1 (getpoint "\n指定镜像线的第一点或[选镜像线(X)]:"))
(cond ( (= p1 "X")
(setq test t)
(setq ent1 (entsel "\n请选择中心直线:")
e1 (car ent1)
ss1(entget e1))
(setq p1 (Cdr (Assoc 10 ss1))
p2 (Cdr (Assoc 11 ss1)))
(command "mirror" ss ""p1 p2 "N")(princ)
(princ "\n我的镜像 左键、空格,X键 保留,右键删除!" )
(setq loop T)
(while loop
(setq code (grread T 8))
(cond
((= (car code) 25) (command "erase" ss "") (setq loop nil));右键
((= (cadr code) 32) (setq loop nil));空格
((= (car code) 3) (setq loop nil));左键
((or (= (cadr code) 88)(= (cadr code) 120)) (setq loop nil));88为大写X120为小写x
);cond
);while
)
(t
(setq p2 (getpoint p1 "\n指定镜像线的第二点:"))
(command "mirror" ss "" p1 p2 "N")
(princ "\n我的镜像 左键、空格,X键 保留,右键删除!" )
(setq loop T)
(while loop
(setq code (grread T 8))
(cond
((= (car code) 25) (command "erase" ss "") (setq loop nil));右键
((= (cadr code) 32) (setq loop nil));空格
((= (car code) 3) (setq loop nil));左键
((or (= (cadr code) 88)(= (cadr code) 120)) (setq loop nil));88为大写X120为小写x
);cond
);while
)
);cond
(princ)
);end 479274135 发表于 2018-8-17 09:01
;(sslength ss)
(setq ss (ssget "i"));用这个来获取已经选择的选择集
(if (not ss)
经过试用插进去不能用啊,大神,能否帮我实现功能呢? 你的代码已经达到你的功能了 ssyfeng 发表于 2018-8-17 08:29
你的代码已经达到你的功能了
唯一有点不足,就是不能先选择物体后执行命令 ;(sslength ss)
(setq ss (ssget "i"));用这个来获取已经选择的选择集
(if (not ss)
(setq ss (ssget))
) 可以先选择后执行的,与你的设置有关。 哦,我知道为什么了,加了个前处理函数,和出错后就不能用了,谢谢各位 顶一个,,,,,,, 学习了各位大神
页:
[1]
2