lucas3 发表于 2022-7-5 23:51:28

有人可以帮我修改

这是源代码
(defun c:tt(/ ss pt old)
(vl-load-com)
(setq old (getvar "cmdecho"))
(setq qqq (getvar "osmode"))
(setvar "cmdecho" 0)
(prompt "\nPlease select the object:")
(setq ss (ssget))
(setq pt (getpoint "\nPlease specify the symmetric basis points:") i -1)
(setvar "osmode" 16385)
(repeat (sslength ss)
   (setq ee (ssname ss (setq i (1+ i))))
   (command "Mirror" ee "" pt (polar pt (/ pi 2) 10) "N")
   (command "Mirror" ee (entlast) "" pt (polar pt pi 10) "N")
)
(setvar "cmdecho" old)
(setvar "osmode" qqq)
(princ)
)
 
我想像这张照片一样改变!非常感谢!

Lee Mac 发表于 2022-7-6 00:02:22

下面是使用Visual LISP ActiveX mirror方法编写程序的另一种方法:
镜像轴将与活动UCS对齐,如以下演示所示:
 

lucas3 发表于 2022-7-6 00:05:06

 
非常感谢你!李,我的意思是,其他物体在中心作为镜像点,当拾取镜像点时,可以选择矩形、圆形等,自动将选定物体的中心点作为镜像

lucas3 发表于 2022-7-6 00:09:19

 
非常感谢你!李,我的意思是,其他物体在中心作为镜像点,当拾取镜像点时,可以选择矩形、圆形等,自动将选定物体的中心点作为镜像
https://www.cadtutor.net/forum/attachment.php?attachmentid=45714&stc=1&d=1387104183

marko_ribar 发表于 2022-7-6 00:16:36

李,为什么当每个(重复)循环只有一个对象要处理时,你用l变量来构造一个列表和第二个(foreach)循环。。。我认为这应该以同样的方式工作:
 
也许,我错了,我错过了什么吗?

Lee Mac 发表于 2022-7-6 00:23:37

 
是的-试着测试你的版本,以理解我为什么这样写代码。

marko_ribar 发表于 2022-7-6 00:24:33

是的,李,我现在明白了。。。我的版本在单个vla对象上镜像,而不是像它应该的那样在单个和镜像对象上镜像。。。所以我的结果是三面镜-一个沿x轴,一个沿y轴。。。您的版本沿最后一个镜像轴同时镜像镜像和原始对象,因此您的结果是4面镜像。。。

Lee Mac 发表于 2022-7-6 00:33:21

 
请尝试以下操作:
3

Lee Mac 发表于 2022-7-6 00:39:43

 
确切地

lucas3 发表于 2022-7-6 00:41:58

 
 
李,很好!太好了!非常感谢。可以让它同时“选择中心对象”和“拾取点”吗
页: [1] 2
查看完整版本: 有人可以帮我修改