明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1285|回复: 8

[提问] 非常好用的镜像功能,请大神修改一下

[复制链接]
发表于 2020-7-30 17:38 | 显示全部楼层 |阅读模式
镜像功能非常好用,请大神帮忙修改一下,如果使得按空格键替换按X键 【指定镜像线的第一点或[选镜像线(X)]】改为【指定镜像线的第一点或[选镜像线(空格)]】

(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
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2020-7-31 11:57 | 显示全部楼层
(defun c:ww (/ ss en p1 p2 loop code test)

(princ "修改工具   我的镜像 左键、空格,X键 保留,右键删除  \n")
        (setq ss (ssget))

        ;(initget 1 "X")
     (if    (setq p1 (getpoint "\n指定镜像线的第一点或[选镜像线(空格)]:"))
      
                (progn
                        (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
                );;1
                         (progn
                        ;(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
                );;2
        );if

        (princ)
);end

评分

参与人数 1明经币 +1 收起 理由
magicheno + 1 很给力!

查看全部评分

发表于 2020-7-31 12:16 | 显示全部楼层
不错,可以考虑不用cmd,有 vla-mirror
 楼主| 发表于 2020-7-31 12:46 | 显示全部楼层
start4444 发表于 2020-7-31 11:57
(defun c:ww (/ ss en p1 p2 loop code test)

(princ "修改工具   我的镜像 左键、空格,X键 保留,右键 ...

非常感谢大侠,如果这个功能加上镜像线包括多段线的话,可能性高么
发表于 2020-8-3 09:20 | 显示全部楼层
能镜像文字吗
发表于 2020-8-10 08:27 | 显示全部楼层
右键不管用啊,是不是我的鼠标坏了?
发表于 2021-8-18 12:48 | 显示全部楼层
(LOAD "C:/Users/Administrator/Desktop/镜像功能.lsp") 参数类型错误: lentityp nil   我显示这个错误
发表于 2021-8-19 14:27 | 显示全部楼层
原来只能选择线(line)  不可以选择多段线(pline)做成镜像中心线的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-3-29 00:43 , Processed in 0.429549 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表