277283904 发表于 2024-1-3 13:48:29

镜像的M2P命令怎么写

(defun c:QQ ()(command"MIRROR""M2P"))

貌似这段代码不对!

xyp1964 发表于 2024-1-4 01:09:20





(defun c:tt ()
(if (and (setq ss (ssget))
           (setq s1 (car (entsel "\n选择竖线1: ")))
           (setq s2 (car (entsel "\n选择竖线2: ")))
      )
    (progn
      (setq p1 (vlax-curve-getStartPoint s1)
          p2 (vlax-curve-getStartPoint s2)
          p3 (mapcar '(lambda (x y) (* (+ x y) 0.5)) p1 p2)
          p4 (polar p3 (* pi 0.5) 10)
      )
      (command "_mirror" ss "" p3 p4 "")
    )
)
(princ)
)


zxp2007 发表于 2024-1-3 17:01:04

(defun c:f1 ( / a b line1 line2 ps1 ps2 pt1 pt2 ss)
        (vl-load-com)
        (princ "\n 选取两直线定中点")
   (setq ss (ssget '((0 . "*line"))))
        ;“,” 逻辑或,对象类型可多选,名称用 “,” 分
;隔。例如,创建直线和文本的选择集,框选对象后,将只有文本被选中(亮显)并加入选择集。
(setq line1(ssname ss 0));获取直线1的图元信息
(setq line2(ssname ss 1))
       
       
      (setq PS1(HH:PtLists line1))
      (setq PS2(HH:PtLists line2))
              (if (AND (= (CAR (car PS1)) (CAR(caDr PS1))) (= (CAR (car PS2)) (CAR(caDr PS2))))
      (progn (setq Pt1 (car (vl-sort PS1 '(lambda(a b) (< (cadr a) (cadr b))))))
      (setq Pt2 (car (vl-sort PS2 '(lambda(a b) (< (cadr a) (cadr b))))))
              (setq Pt3 (MAPCAR '(lambda (X Y) (* (+ X Y) 0.5)) pt1 pt2))
   (print)
        (princ "\n 选取要镜像的图元")
        (setq ss (ssget ))
              (command "mirror" ss "" pt3 (polar pt3 (* 0.5 pi)10) "n"))
                (alert "选取的两直线不是平行线!")
               
        )
      (print)
      )
(defun HH:PtLists (en)      
      (list
      (vlax-curve-getstartpoint (vlax-ename->vla-object en))
      (vlax-curve-getendpoint (vlax-ename->vla-object en))
)
)
(print)



有个差不多论坛上的源码   感谢源作者吧!

liuhe 发表于 2024-1-3 14:06:23

你都编程了,为啥还要用它的中心点
(defun LH:MID (po1 po2)
(MAPCAR '(lambda (X Y) (* (+ X Y) 0.5)) po1 po2)
)

自贡黄明儒 发表于 2024-1-3 14:58:03

(command-s "_mirror" (ssget "_+.:E:S") "" "M2P" pause)

277283904 发表于 2024-1-3 15:29:45

自贡黄明儒 发表于 2024-1-3 14:58
(command-s "_mirror" (ssget "_+.:E:S") "" "M2P" pause)

(defun c:QQ()(command-s "_mirror" (ssget "_+.:E:S") "" "M2P" pause))
是这样运行吗老大,但是运行不了
我是想直接点两根竖线得出中线镜像,就是免除了要输入M2P的意思

你有种再说一遍 发表于 2024-1-3 15:30:53

你是不是不知道论坛可以搜索

277283904 发表于 2024-1-3 15:46:36

你有种再说一遍 发表于 2024-1-3 15:30
你是不是不知道论坛可以搜索

:'(我搜了,没有我想要的代码:'(

自贡黄明儒 发表于 2024-1-3 16:14:30

277283904 发表于 2024-1-3 15:29
(defun c:QQ()(command-s "_mirror" (ssget "_+.:E:S") "" "M2P" pause))
是这样运行吗老大,但是运行不 ...

1 你首先要选择两根线,计算出中线,取上两个点p1 p2。2 选择镜向物SS3最后一步执行 (command "mirror" ss "" p1 p2 pause)

277283904 发表于 2024-1-3 16:20:42

自贡黄明儒 发表于 2024-1-3 16:14
1 你首先要选择两根线,计算出中线,取上两个点p1 p2。2 选择镜向物SS3最后一步执行 (command "mirror" ...

怎么感觉比输入M2P还要麻烦呢:'(

277283904 发表于 2024-1-3 17:18:21

我是想按1个键直达M2P的命令,不想又按镜像命令后,还要按M2P命令,各位大佬有办法吗?
页: [1] 2 3
查看完整版本: 镜像的M2P命令怎么写