ljfzx 发表于 2017-10-17 16:18:41

求帮忙合并一下程序

本帖最后由 ljfzx 于 2017-10-17 21:36 编辑

;;;旋转视图 by ucuc2003
(defun C:XZST (/ ro_ang)
(setvar "cmdecho" 0)
(princ "旋转模型空间的视图")
(if (equal (getvar "TILEMODE") 1)
    (progn
      ;;记忆参数old_ro_ucs_z_ang (这个值在本LSP文件内必须唯一,不能有重名的)
      (if (= old_ro_ucs_z_ang nil) (setq old_ro_ucs_z_ang (/ pi 2)))
      (princ (strcat "\n指定视口绕 Z 轴的旋转角度<" (angtos old_ro_ucs_z_ang 0 6) ">: "))
      (setq ro_ang (getangle))
      (if ro_ang (setq old_ro_ucs_z_ang ro_ang)(setq ro_ang old_ro_ucs_z_ang))
      (command "_.undo" "_group")
      (command "_.ucs" "_Z" (angtos ro_ang 0 8))
      (command "_.Plan" "")
      (command "_.undo" "_end")
    )
    (princ "\n*请切换到模型空间*")
)
(princ)
)
;;;旋转视图end

;;;恢复视图 by ucuc2003
(defun C:HFST (/ ro_ang)
(setvar "cmdecho" 0)
(princ "恢复视图")
(vl-load-com)
(setqacadobject   (vlax-get-acad-object)
         acaddocument (vla-get-activedocument acadobject))
(if (equal (getvar "TILEMODE") 1)
    (progn
      (command "_.undo" "_group")
      (command "_.Plan" "w" "_.ucs" "w")
      (command "_.undo" "_end")
    )
    (if (= (vla-get-mspace acaddocument) :vlax-false)
      (command "mspace" "_.Plan" "w" "_.ucs" "w")
      (command "_.Plan" "w" "_.ucs" "w")
    )
)
(princ)
)
;;;恢复视图end


要求输入命令后,输入角度或者点击两个点执行第一个旋转视图的程序,什么都不输入直接按空格或者回车执行第二个恢复视图的程序

或者,在输入命令后,点击左键执行第一个程序,点击右键执行第二个程序


xinxirong 发表于 2017-10-17 16:18:42

本帖最后由 xinxirong 于 2017-10-17 19:26 编辑

;;;第一个旋转视图 by ucuc2003
(defun XZST (ro_ang / )
(setvar "cmdecho" 0)
(princ "旋转模型空间的视图")
(if (equal (getvar "TILEMODE") 1)
    (progn
      (command "_.undo" "_group")
      (command "_.ucs" "_Z" (angtos ro_ang 0 8))
      (command "_.Plan" "")
      (command "_.undo" "_end")
      )
    (princ "\n*请切换到模型空间*")
    )
(princ)
)
;;;旋转视图end

;;;第二恢复视图 保存全局变量old_ro_ucs_z_ang
(defun C:ST (/ ro_ang)
;;记忆参数old_ro_ucs_z_ang (这个值在本LSP文件内必须唯一,不能有重名的)
(if (= old_ro_ucs_z_ang nil) (setq old_ro_ucs_z_ang (/ pi 2)))
(if ro_ang (setq old_ro_ucs_z_ang ro_ang)(setq ro_ang old_ro_ucs_z_ang))
(princ (strcat "\n指定视口绕 Z 轴的旋转角度<" (angtos old_ro_ucs_z_ang 0 6) ">(默认为恢复视图): "))
(setq ang (getangle))
(if ang
    (XZST ang);什么也不输入,回车/空格
    ;else
    (progn
      (setvar "cmdecho" 0)
      (princ "恢复视图")
      (vl-load-com)
      (setqacadobject   (vlax-get-acad-object)
             acaddocument (vla-get-activedocument acadobject))
      (if (equal (getvar "TILEMODE") 1)
      (progn
          (command "_.undo" "_group")
          (command "_.Plan" "w" "_.ucs" "w")
          (command "_.undo" "_end")
          )
      (if (= (vla-get-mspace acaddocument) :vlax-false)
          (command "mspace" "_.Plan" "w" "_.ucs" "w")
          (command "_.Plan" "w" "_.ucs" "w")
          )
      )
      (princ)
      );progn
    );if
)
;;;恢复视图end

ljfzx 发表于 2017-10-17 17:25:15

没有知道的吗?

ljfzx 发表于 2017-10-17 21:06:58

本帖最后由 ljfzx 于 2017-10-17 21:08 编辑

谢谢回复,我自己根据你的思路修改了一下,加入了记忆缩放位置的功能,现在更好用了,用着别人的代码,我也不好意思私藏,决定共享出来

ljfzx 发表于 2017-10-17 21:08:26

本帖最后由 ljfzx 于 2017-10-17 21:10 编辑

xinxirong 发表于 2017-10-17 19:24

(defun C:st (/ ro_ang)
(princ (strcat "\n输入角度或指定视口绕 Z 轴的旋转角度(默认为恢复视图): "))
(setq ang (getangle))
(defun xzst (ro_ang / )
(setvar "cmdecho" 0)
(if (equal (getvar "TILEMODE") 1)
    (progn
      (command "_.undo" "_group")
      (setq viewcenter (getvar "VIEWCTR")
       viewsize (getvar "VIEWSIZE")
       zoom1 (polar viewcenter (* pi 0.5) viewsize)
       zoom2 (polar viewcenter (* pi 3.5) viewsize)
       zoom1 (trans zoom1 1 0)
       zoom2 (trans zoom2 1 0)
      )
      (command "_.ucs" "_Z" (angtos ro_ang 0 8))
      (command "_.Plan" "")
      (command "zoom" "w" (trans zoom1 0 1) (trans zoom2 0 1))
      (command "_.undo" "_end")
      )
    (princ "\n*请切换到模型空间*")
    )
(princ)
)
(if ang
    (xzst ang)
    (progn
(setvar "cmdecho" 0)
(if (equal (getvar "TILEMODE") 1)
    (progn
      (command "_.undo" "_group")
      (setq viewcenter (getvar "VIEWCTR")
       viewsize (getvar "VIEWSIZE")
       zoom1 (polar viewcenter (* pi 0.5) viewsize)
       zoom2 (polar viewcenter (* pi 3.5) viewsize)
       zoom1 (trans zoom1 1 0)
       zoom2 (trans zoom2 1 0)
      )
      (command "_.Plan" "w" "_.ucs" "w")
      (command "zoom" "w" (trans zoom1 0 1) (trans zoom2 0 1))
      (command "_.undo" "_end")
    )
    (princ "\n*请切换到模型空间*")
)
(princ)
))
)

eii 发表于 2017-10-18 19:04:46

挺好用的,谢谢楼主,但我喜欢逆时针为正,上面的正好是反的,有点别扭,不知别的人啥感觉。。。

pengfei2010 发表于 2017-10-21 09:07:47

回帖是一种美德!感谢楼主的无私分享 谢谢

LIULISHENG 发表于 2018-2-6 14:57:39

htlaser 发表于 2018-7-1 23:06:45

xinxirong 发表于 2017-10-17 16:18


能不能帮我合并下程序。工作中用得比较多。
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=177757&highlight=%BA%CF%B2%A2

season_88 发表于 前天 03:41

谢谢大师分享
页: [1]
查看完整版本: 求帮忙合并一下程序