lisp 能实现沿着45度 镜像吗,询问是否保留,不保留直接空格
能实现沿着45度 镜像吗,询问是否保留,不保留直接空格,画墙板,施工图给的都是主视图,但是墙板出加工图的时候需要从背面画,所有每个板都要转换方向,以前一直是先旋转90度,然后水平镜像,后来发现直接45度镜像就可以,不知道lisp能直接一键生成吗镜像的一个点可以选在框选对象的最右下角,然后沿着45度镜像,镜像后留个选择选项,保留B 不保留直接空格
期待高手们能给解答一下,电脑不能运行vl函数,忘体谅,谢谢了!!!!!
本帖最后由 maiko 于 2019-11-26 19:48 编辑
;加个执行完后自动回原变量
(defun c:dng ( / *error* s p var val )
(defun *error* ( msg )
(mapcar '(lambda ( a b ) (if b (setvar a b))) var val)
(if (and msg (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*")))
(princ (strcat "\nError: " msg))
)
(princ)
)
(if (setq s (ssget))
(if (setq p (getpoint "\n指定点"))
(progn
(setq var '(osmode snapang) val (mapcar 'getvar var))
(mapcar '(lambda ( a b c ) (if a (setvar b c))) val var (list 0 (* 45 (/ pi 180))))
(command "mirror" s "" p pause pause)
)
)
)
(*error* nil)
) maiko 发表于 2019-11-26 19:42
;加个执行完后自动回原变量
(defun c:dng ( / *error* s p var val )
(defun ...
谢谢 功能实现了 就是最后能默认为不保留吗 或者直接不询问也行默认就不保留就可以
或者能不能像下面一样这个我还能看的懂 知道改一下NY就能控制保留不保留,你的这个代码 我看不懂,要改也不知道怎么下手,莫笑哦 水平太次了
(defun c:hg( / &kw @p1 @p2)
(setq &kw (ssget))
(if (/= &kw nil) (setq @p1 (getpoint "\第一鏡像点")) )
(if (/= @p1 nil) (setq @p2 (getpoint @p1 "\第二鏡像点 ")) )
(if (/= @p2 nil)
(command "mirror" &kw "" @p1 @p2 "Y")
)
(prin1)
) 本帖最后由 lee50310 于 2019-11-26 13:43 编辑
(游標旋轉45+鏡射)
執行指令:dng
(恢復正常游標)
執行指令:undng
;----------------------------------------------------
;;游標轉45度+鏡射
(defun c:dng (/ u ang pt1)
(setq u (/ pi 180))
(setq ang (* 45 u))
(setvar "snapang" ang);游標轉45度
(setq en (entsel)) ;選擇物體
(setq pt1 (getpoint "\指定鏡射線的第一點:" ))
(command "mirror" en "" pt1 PAUSE PAUSE)
(princ)
)
;;恢復正常游標
(defun c:undng ()
(setvar "snapang" 0);游標恢復正常
)
;------------------------------------------- 你简单写段代码就实现了你的要求
1. 获取选择集 ss
2. 获取边界范围角点坐标 pt_ll , pt_rt
3. 直接调用command,mirror, 以pt_ll, pt_rt 连线为对称轴,选择删除原对象。
循环1-3... 不好意思 我对代码不懂 所以只能希望老师们给个解决方案呢 您可以帮弄弄吗 谢谢了 为啥不能使用vl函数? 可以看看我的十分镜像 我自己也不知道为什么加载后都不能运行看着那英文 好像是缺啥东西我也不知道是啥无从下手的感觉如果知道缺什么东西 下载一个安装了也行啊 缺少院长的 xcad.vlx 就显示这个 最前面加一句 (vl-load-com) 我看代码里面也有这一段 逛论坛的时候有人说 加上这段 v函数就能运行可是我的电脑就是不行 完全不知道怎么回事啊