明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 952|回复: 7

[提问] 组合命令复制旋转可用,但改为移动不行

[复制链接]
发表于 2022-5-11 17:40:00 | 显示全部楼层 |阅读模式
工作中经常碰到,要先移动一个对象然后再对其旋转,自己先写了个先复制再旋转可用,但是改为移动就不行,请各位大侠帮看看

本帖子中包含更多资源

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

x
发表于 2022-5-11 18:07:44 | 显示全部楼层
本帖最后由 自贡黄明儒 于 2022-5-11 18:12 编辑

用AL命令吧,一次到位。
  1. ;;11  移动+旋转
  2.   (defun HH:MRotate (/ APP DOC P1 P2 P3 SS)
  3.     (setq app (vlax-get-acad-object))
  4.     (setq doc (vla-get-ActiveDocument app))
  5.     (vla-StartUndoMark doc)
  6.     (and (setq ss (ssget))
  7.    (setq p1 (getpoint "\n 移动基点:"))
  8.    (princ "\n 对齐点:")
  9.    (command "_.move" ss "" p1 pause)
  10.     )
  11.     (setq p3 (getvar "LASTPOINT"))
  12.     (setq p2 (getpoint "\n 旋转起点:"))
  13.     (and p1
  14.    p2
  15.    p3
  16.    (command "_.ROTATE" ss "" p3 "R" p3 p2 pause)
  17.     )
  18.     (vla-EndUndoMark doc)
  19.     (vlax-release-object doc)
  20.     (vlax-release-object app)
  21.     (princ)
  22.   )

发表于 2022-5-11 18:14:30 | 显示全部楼层
本帖最后由 自贡黄明儒 于 2022-5-16 07:22 编辑


;;5 [功能] 获取在图元 en 之后产生的图元的选择集
  (defun lt:ss-entnext (en / ss)
    (if        en
      (progn
        (setq ss (ssadd))
        (while (setq en (entnext en))
          (if (not (member (cdr (assoc 0 (entget en)))
                           '("ATTRIB"
                             "VERTEX"
                             "SEQEND"
                            )
                   )
              )
            (ssadd en ss)
          )
        )
        (if (zerop (sslength ss))
          (setq ss nil)
        )
        ss
      )
      (ssget "_x")
    )
  )
  1. ;;14  拷贝+移动+旋转
  2.   (defun HH:CMRotate (/ APP DOC LASTENT P1 P2 P3 SS SS1)
  3.     (setq app (vlax-get-acad-object))
  4.     (setq doc (vla-get-ActiveDocument app))
  5.     (vla-StartUndoMark doc)
  6.     (setq Lastent (entlast))
  7.     (and (setq ss (ssget))
  8.          (setq p1 (getpoint "\n 移动基点:"))
  9.          (princ "\n 对齐点:")
  10.          (command "_.copy" ss "" p1 pause)
  11.     )
  12.     (setq ss1 (lt:ss-entnext Lastent))
  13.     (setq p3 (getvar "LASTPOINT"))
  14.     (setq p2 (getpoint "\n 旋转起点:"))
  15.     (and p1
  16.          p2
  17.          p3
  18.          (command "_.ROTATE" ss1 "" p3 "R" p3 p2 pause)
  19.     )
  20.     (vla-EndUndoMark doc)
  21.     (vlax-release-object doc)
  22.     (vlax-release-object app)
  23.     (princ)
  24.   )

发表于 2022-5-11 23:24:42 | 显示全部楼层
  1. (defun c:ydxz ()
  2.   "ydxz(移动旋转)"
  3.   (command "undo" "be")
  4.   (setq os (getvar "osmode"))
  5.   (setvar "osmode" 39)
  6.   (if (and (setq s1 (ssget))
  7.            (setq p1 (getpoint "\n请选择起点: "))
  8.            (setq p2 (getpoint p1 "\n请选取基点: "))
  9.            (setq p3 (getpoint p2 "\n请选取旋转点: "))
  10.            (setq p4 (getpoint p3 "\n请选取对其点: "))
  11.       )
  12.     (progn
  13.       (setvar "osmode" 0)
  14.       (setq rad (angle p3 p4))
  15.       (command "move" s1 "" p1 p2)
  16.       (command "rotate" s1 "" p2 (* (/ rad pi) 180))
  17.     )
  18.   )
  19.   (setvar "osmode" os)
  20.   (command "undo" "e")
  21.   (princ)
  22. )
 楼主| 发表于 2022-5-12 09:24:45 | 显示全部楼层
可以用了,谢谢自贡黄明儒侠,谢谢xyp1964侠
发表于 2022-5-15 13:49:52 | 显示全部楼层

你这个少了这个lt:ss-entnext这个命令,不完整!
发表于 2022-5-25 14:56:06 | 显示全部楼层
本帖最后由 陈伟 于 2022-5-25 15:35 编辑

可以实现在移动过程中比如输入R就旋转90度的方法吗,或者粘贴输入R就旋转90度
发表于 2023-6-20 17:20:56 来自手机 | 显示全部楼层
wanhongron 发表于 2022-5-12 09:24
可以用了,谢谢自贡黄明儒侠,谢谢xyp1964侠

大佬把修改后的插件发出来
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 20:40 , Processed in 0.164831 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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