冒个烟圈 发表于 2015-7-12 10:10:05

连续COPY 和 ROTATE

下面这段程序挺好用的,但有个缺陷:选择完要复制的实体,在打开“正交”时选择第2个点无效(第2点仅在<复制基点>的垂直和水平方向),在关闭“正交”时就正常了,可以选到任意点。
请大师们指点:怎么解决“打开正交”时也能选到任意点

;;;引自龙龙仔的代码
(defun C:CR1 (/ HOLDOSMODE SS SS1 PT1 PT2 ROT MARK)
(arxload "ACETUTIL.ARX" NIL)
(defun RTD (ANG) (* ANG (/ 180 pi)))
(setq HOLDOSMODE (getvar "osmode"))
(if (setq SS1 (ssget))
    (progn
      (initget 1)
      (setq PT1 (getpoint "\n指定基准点: "))
      ;;acet-ss-drag-move缺点:
      ;;Normally returns the selected point, but will honor "initget"
      ;;settings and can return arbitrary text or keywords.
      ;;Returns nil if the dragging operation is aborted.
      (while (setq PT2 (acet-ss-drag-move
                         SS1
                         PT1
                         "\n指定位移的第二点: "
                         t
                     )
             )
      (setvar "osmode" 0)
      (setq MARK (entlast))
      (command "_.copy" SS1 "" PT1 PT2)
      (setq SS (ssadd))
      (while (setq MARK (entnext MARK))
          (ssadd MARK SS)
      )
      (setvar "osmode" HOLDOSMODE)
      (if (setq ROT (acet-ss-drag-rotate
                        SS
                        PT2
                        "\n指定旋转角度: "
                        t
                      )
            )
          (setq ROT (RTD ROT))
          (setq ROT 0.0)
      )
      (command "_.ROTATE" SS "" PT2 ROT)
      )
    )
)
(princ)
)


http://bbs.mjtd.com/xwb/images/bgimg/icon_logo.png 该贴已经同步到 冒个烟圈的微博

xyp1964 发表于 2015-7-12 12:24:23

;; tt(连续COPY和ROTATE)
(defun c:tt (/ ss1 p1 p2 ang s0 ss2)
(defun rtd (ang) (* ang (/ 180 pi)))
(if (and (setq ss1 (ssget))
           (setq p1 (getpoint "\n指定基准点: "))
      )
    (while (setq p2 (getpoint p1 "\n指定位移的第二点: "))
      (setq s0 (entlast))
      (command "_.copy" ss1 "" "non" p1 "non" p2)
      (setq ss2 (ssadd))
      (while (setq s0 (entnext s0))
        (ssadd s0 ss2)
      )
      (if (setq ang (getangle p2 "\n指定旋转角度: "))
        (setq ang (rtd ang))
        (setq ang 0.0)
      )
      (if (/= rpt 0)
        (command "_.rotate" ss2 "" "non" p2 ang)
      )
    )
)
(princ)
)

冒个烟圈 发表于 2015-7-12 13:13:17

xyp1964 发表于 2015-7-12 12:24 static/image/common/back.gif


谢谢院长亲自出手

cqu20104225 发表于 2019-7-9 14:04:01

本帖最后由 cqu20104225 于 2019-7-9 17:02 编辑

刚好需要这个东西,收下了,感谢分享
用的过程中发现一个问题,貌似对块使用这个命令的时候,连续复制的块,前一个块会跟着后一个块的旋转角度,一起旋转
页: [1]
查看完整版本: 连续COPY 和 ROTATE