999999 发表于 2023-3-8 00:20:40

原地镜像180度,看有没有大神帮忙出手

求助各位大神,看有空是否可以实现原地180度镜像,图片及附件已上传
1.选择文件
2.空格(以文件左右之间的中心镜像180度)如图片所式

表骑马实开车 发表于 2023-3-8 00:20:41

本帖最后由 表骑马实开车 于 2023-3-8 11:40 编辑


(vl-load-com)
(defun c:tt (/ os ss box ssmid p3)
(setq os (getvar "osmode"))
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(if (setq ss (ssget))
    (progn
      (setq box          (LM:ssboundingbox ss)
            ssmid (mapcar '*
                        (mapcar '+ (car box) (cadr box))
                        '(0.5 0.5 0.5)
                  )
            p3          (polar ssmid (* 1.5 pi) 10)
      )
      (command "mirror" ss "" ssmid p3 "y")
    )
)
(setvar "osmode" os)
(setvar "cmdecho" 1)
(princ)
)


;; 选择集边界框 - Lee Mac
;; 返回一个列表的左下角和右上角的 WCS 坐标
;; 包围提供的选择集中所有对象的矩形框。
;; sel - 返回边界框的选择集
(defun LM:ssboundingbox      (sel / idx llp ls1 ls2 obj urp)
(repeat (setq idx (sslength sel))
    (setq obj (vlax-ename->vla-object (ssname sel (setq idx (1- idx)))))
    (if      (and (vlax-method-applicable-p obj 'getboundingbox)
             (not (vl-catch-all-error-p
                  (vl-catch-all-apply
                      'vla-getboundingbox
                      (list obj 'llp 'urp)
                  )
                  )
             )
      )
      (setq ls1      (mapcar      'min
                        (vlax-safearray->list llp)
                        (cond (ls1)
                              ((vlax-safearray->list llp))
                        )
                )
            ls2      (mapcar      'max
                        (vlax-safearray->list urp)
                        (cond (ls2)
                              ((vlax-safearray->list urp))
                        )
                )
      )
    )
)
(if (and ls1 ls2)
    (list ls1 ls2)
)
)
一个旋转180° ,一个是旋转0°才能达到要求

fangmin723 发表于 2023-3-8 07:44:29

CAD自带的镜像不好用吗??

liunian0524 发表于 2023-3-8 08:09:31

本帖最后由 liunian0524 于 2023-3-8 08:14 编辑

论坛好像有

ssyfeng 发表于 2023-3-8 09:11:39

你这说的好像不是很清楚,第一个图应该是以Y轴镜像的,第二个图应该是以x轴镜像的。
你说的图层是特定图层吗?某个图层就以Y轴镜像,某个图层就以X轴镜像?

小毛草 发表于 2023-3-8 11:02:53


另的网友写的,你看下是不是要这样?

(defun c:MMI (/cmn osnss i n ssn ssndata ssnsty pt ptmin ptmax cenpt
      *error* msg)
(defun *error* (msg)
    (if
      (wcmatch msg "; 错误:,函数被取消")
       (progn
   (setvar 'cmdecho cmn)
   (setvar 'osmode osn)
   (princ)
       )
       (princ msg)
    )
)
(setq cmn (getvar 'cmdecho))
(setq osn (getvar 'osmode))
(setvar 'cmdecho 0)
(setvar 'osmode 0)
(princ"\n选择要原地反转的对象:")
(setq ss (ssget ))
(setq i 0)
(setq n (sslength ss))
(repeat n
    (setq ssn (vlax-ename->vla-object (ssname ss i)))
    (vla-GetBoundingBox ssn 'ptmax 'ptmin)
    (setq pt (mapcar '(lambda (a b) (/ (+ a b) 2))
         (vlax-safearray->list ptmax)
         (vlax-safearray->list ptmin)
       )
    )
    (vlax-invoke-method
      ssn
      'rotate
      (vlax-3d-point pt)
      pi
    )
    (setq i (1+ i))
)
(command "ucs" "")
(setvar 'cmdecho cmn)
(setvar 'osmode osn)
(princ "\n命令:MMI")
(princ)
)

xyp1964 发表于 2023-3-8 11:31:25


p-3-ianlcc 发表于 2023-3-8 12:47:32

小毛草 发表于 2023-3-8 11:02
另的网友写的,你看下是不是要这样?

(defun c:MMI (/cmn osnss i n ssn ssndata ssnsty pt ptmin ...

这个试用了一下
感觉好象是旋转180°
应该不是镜像

999999 发表于 2023-3-8 13:13:05

fangmin723 发表于 2023-3-8 07:44
CAD自带的镜像不好用吗??

自带的镜像好用呀,就是要自己定义中心线原地镜像,我就是想输入命令直接让它镜个像,就不用自己定义镜像的两点了呢

999999 发表于 2023-3-8 16:00:33

小毛草 发表于 2023-3-8 11:02
另的网友写的,你看下是不是要这样?

(defun c:MMI (/cmn osnss i n ssn ssndata ssnsty pt ptmin ...

这个效果不是我想要的那种哦,谢谢您
页: [1] 2
查看完整版本: 原地镜像180度,看有没有大神帮忙出手