明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1502|回复: 8

求帮忙合并一下程序

[复制链接]
发表于 2017-10-17 16:18 | 显示全部楼层 |阅读模式
3明经币
本帖最后由 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)
(setq  acadobject   (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


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

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


发表于 2017-10-17 16:18 | 显示全部楼层
本帖最后由 xinxirong 于 2017-10-17 19:26 编辑

  1. ;;;第一个旋转视图 by ucuc2003
  2. (defun XZST (ro_ang / )
  3.   (setvar "cmdecho" 0)
  4.   (princ "旋转模型空间的视图")
  5.   (if (equal (getvar "TILEMODE") 1)
  6.     (progn
  7.       (command "_.undo" "_group")
  8.       (command "_.ucs" "_Z" (angtos ro_ang 0 8))
  9.       (command "_.Plan" "")
  10.       (command "_.undo" "_end")
  11.       )
  12.     (princ "\n*请切换到模型空间*")
  13.     )
  14.   (princ)
  15.   )
  16. ;;;旋转视图end

  17. ;;;第二恢复视图 保存全局变量old_ro_ucs_z_ang
  18. (defun C:ST (/ ro_ang)
  19.   ;;记忆参数old_ro_ucs_z_ang (这个值在本LSP文件内必须唯一,不能有重名的)
  20.   (if (= old_ro_ucs_z_ang nil) (setq old_ro_ucs_z_ang (/ pi 2)))
  21.   (if ro_ang (setq old_ro_ucs_z_ang ro_ang)(setq ro_ang old_ro_ucs_z_ang))
  22.   (princ (strcat "\n指定视口绕 Z 轴的旋转角度<" (angtos old_ro_ucs_z_ang 0 6) ">(默认为恢复视图): "))
  23.   (setq ang (getangle))
  24.   (if ang
  25.     (XZST ang);什么也不输入,回车/空格
  26.     ;else
  27.     (progn
  28.       (setvar "cmdecho" 0)
  29.       (princ "恢复视图")
  30.       (vl-load-com)
  31.       (setq  acadobject   (vlax-get-acad-object)
  32.              acaddocument (vla-get-activedocument acadobject))
  33.       (if (equal (getvar "TILEMODE") 1)
  34.         (progn
  35.           (command "_.undo" "_group")
  36.           (command "_.Plan" "w" "_.ucs" "w")
  37.           (command "_.undo" "_end")
  38.           )
  39.         (if (= (vla-get-mspace acaddocument) :vlax-false)
  40.           (command "mspace" "_.Plan" "w" "_.ucs" "w")
  41.           (command "_.Plan" "w" "_.ucs" "w")
  42.           )
  43.         )
  44.       (princ)
  45.       );progn
  46.     );if
  47.   )
  48. ;;;恢复视图end
回复

使用道具 举报

 楼主| 发表于 2017-10-17 17:25 | 显示全部楼层
没有知道的吗?
回复

使用道具 举报

 楼主| 发表于 2017-10-17 21:06 | 显示全部楼层
本帖最后由 ljfzx 于 2017-10-17 21:08 编辑

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

回复

使用道具 举报

 楼主| 发表于 2017-10-17 21:08 | 显示全部楼层
本帖最后由 ljfzx 于 2017-10-17 21:10 编辑

  1. (defun C:st (/ ro_ang)
  2. (princ (strcat "\n输入角度或指定视口绕 Z 轴的旋转角度(默认为恢复视图): "))
  3. (setq ang (getangle))
  4.   (defun xzst (ro_ang / )
  5.   (setvar "cmdecho" 0)
  6.   (if (equal (getvar "TILEMODE") 1)
  7.     (progn
  8.       (command "_.undo" "_group")
  9.       (setq viewcenter (getvar "VIEWCTR")
  10.        viewsize (getvar "VIEWSIZE")
  11.        zoom1 (polar viewcenter (* pi 0.5) viewsize)
  12.        zoom2 (polar viewcenter (* pi 3.5) viewsize)
  13.        zoom1 (trans zoom1 1 0)
  14.        zoom2 (trans zoom2 1 0)
  15.       )
  16.       (command "_.ucs" "_Z" (angtos ro_ang 0 8))
  17.       (command "_.Plan" "")
  18.       (command "zoom" "w" (trans zoom1 0 1) (trans zoom2 0 1))
  19.       (command "_.undo" "_end")
  20.       )
  21.     (princ "\n*请切换到模型空间*")
  22.     )
  23.   (princ)
  24.   )
  25.   (if ang
  26.     (xzst ang)
  27.     (progn
  28.   (setvar "cmdecho" 0)
  29.   (if (equal (getvar "TILEMODE") 1)
  30.     (progn
  31.       (command "_.undo" "_group")
  32.       (setq viewcenter (getvar "VIEWCTR")
  33.        viewsize (getvar "VIEWSIZE")
  34.        zoom1 (polar viewcenter (* pi 0.5) viewsize)
  35.        zoom2 (polar viewcenter (* pi 3.5) viewsize)
  36.        zoom1 (trans zoom1 1 0)
  37.        zoom2 (trans zoom2 1 0)
  38.       )
  39.       (command "_.Plan" "w" "_.ucs" "w")
  40.       (command "zoom" "w" (trans zoom1 0 1) (trans zoom2 0 1))
  41.       (command "_.undo" "_end")
  42.     )
  43.     (princ "\n*请切换到模型空间*")
  44.   )
  45.   (princ)
  46. ))
  47. )

回复

使用道具 举报

发表于 2017-10-18 19:04 | 显示全部楼层
挺好用的,谢谢楼主,但我喜欢逆时针为正,上面的正好是反的,有点别扭,不知别的人啥感觉。。。
回复

使用道具 举报

发表于 2017-10-21 09:07 | 显示全部楼层
回帖是一种美德!感谢楼主的无私分享 谢谢
回复

使用道具 举报

发表于 2018-2-6 14:57 | 显示全部楼层
回复

使用道具 举报

发表于 2018-7-1 23:06 | 显示全部楼层

能不能帮我合并下程序。工作中用得比较多。
http://bbs.mjtd.com/forum.php?mo ... hlight=%BA%CF%B2%A2
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-19 16:58 , Processed in 0.299577 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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