很多命令的操作,都需要根据命令行提示进行多步选择设定,如镜像操作中的是否保留源对象,一般情况下,我们都是选择否,那么针对这一操作,其实已经默认y,但是每次进行镜像时,都需要选择一遍。
![]()
诸如此种情况,就可以通过lisp进行事先设置好,并设置好一个容易记忆的命令名,可以减少工作量,提高效率。
Lisp:对镜像命令设置
编写改良版镜像lisp程序的前提,是要知道cad中mirror命令是怎么操作的。

所以,代码需要实现三个问题:
- 选择对象。
- 指定镜像线的两点。
- 确认删除源对象。
按照三个问题的解决顺序,进行顺序编写代码如下。

(defun C:MM() ;使用方法:加载,命令行输入mm ;实现功能:执行镜像操作并删除源对象 (setq aa (ssget)) (setq pt1 (getpoint "\n指定镜像第一点:")) (setq pt2 (getpoint pt1 "\n指定镜像第二点:")) (command "mirror" aa "" pt1 pt2 "y" ) (prin1) )
为了便于感兴趣的同学,进一步学习,解释代码行如下:
(setq aa (ssget)):ssget实现从图纸中选择对象,setq是将选择集赋值给aa,为了在代码中传送选择集,以实现操作。
(setq pt1 (getpoint "\n指定镜像第一点:")):getpoint实现在屏幕中指定第一点,并将第一点赋值给pt1。
(setq pt2 (getpoint pt1 "\n指定镜像第二点:")):getpoint实现在屏幕中指定第二点,并将第一点赋值给pt2,指定第二点需要有了第一点存在才能有第二点的实现,所有这里会出现pt1。
(command "mirror" aa "" pt1 pt2 "y" ):运行mirror镜像命令,选择对象aa,指定镜像线pt1 pt2,确认删除源对象y。
代码运行结果用截图无法更好的表达,现将运行以动图形式演示如下。

下次,使用镜像操作,少个确认删除,你会操作更快。
(完)









