明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1656|回复: 32

[基础] 镜像的M2P命令怎么写

[复制链接]
发表于 2024-1-3 13:48 | 显示全部楼层 |阅读模式
(defun c:QQ ()(command"MIRROR""M2P"))

貌似这段代码不对!
发表于 2024-1-4 01:09 | 显示全部楼层



  1. (defun c:tt ()
  2.   (if (and (setq ss (ssget))
  3.            (setq s1 (car (entsel "\n选择竖线1: ")))
  4.            (setq s2 (car (entsel "\n选择竖线2: ")))
  5.       )
  6.     (progn
  7.       (setq p1 (vlax-curve-getStartPoint s1)
  8.             p2 (vlax-curve-getStartPoint s2)
  9.             p3 (mapcar '(lambda (x y) (* (+ x y) 0.5)) p1 p2)
  10.             p4 (polar p3 (* pi 0.5) 10)
  11.       )
  12.       (command "_mirror" ss "" p3 p4 "")
  13.     )
  14.   )
  15.   (princ)
  16. )


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

点评

欲速则不达……  发表于 2024-1-4 12:33
选两直线时应该支持框选,这样速度更快。  发表于 2024-1-4 11:08
回复 支持 1 反对 0

使用道具 举报

发表于 2024-1-3 17:01 | 显示全部楼层
(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)



有个差不多论坛上的源码     感谢源作者吧!
发表于 2024-1-3 14:06 | 显示全部楼层
你都编程了,为啥还要用它的中心点
(defun LH:MID (po1 po2)
  (MAPCAR '(lambda (X Y) (* (+ X Y) 0.5)) po1 po2)
)
发表于 2024-1-3 14:58 | 显示全部楼层
(command-s "_mirror" (ssget "_+.:E:S") "" "M2P" pause)
 楼主| 发表于 2024-1-3 15:29 | 显示全部楼层
自贡黄明儒 发表于 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的意思

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2024-1-3 15:30 | 显示全部楼层
你是不是不知道论坛可以搜索
 楼主| 发表于 2024-1-3 15:46 | 显示全部楼层
你有种再说一遍 发表于 2024-1-3 15:30
你是不是不知道论坛可以搜索

我搜了,没有我想要的代码
发表于 2024-1-3 16:14 | 显示全部楼层
277283904 发表于 2024-1-3 15:29
(defun c:QQ()(command-s "_mirror" (ssget "_+.:E:S") "" "M2P" pause))
是这样运行吗老大,但是运行不 ...

1 你首先要选择两根线,计算出中线,取上两个点p1 p2。2 选择镜向物SS  3最后一步执行 (command "mirror" ss "" p1 p2 pause)
 楼主| 发表于 2024-1-3 16:20 | 显示全部楼层
自贡黄明儒 发表于 2024-1-3 16:14
1 你首先要选择两根线,计算出中线,取上两个点p1 p2。2 选择镜向物SS  3最后一步执行 (command "mirror" ...

怎么感觉比输入M2P还要麻烦呢
 楼主| 发表于 2024-1-3 17:18 | 显示全部楼层
我是想按1个键直达M2P的命令,不想又按镜像命令后,还要按M2P命令,各位大佬有办法吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-17 10:58 , Processed in 0.433340 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表