找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 823|回复: 6

[LISP程序]:旋转UCS,类似ExpressTools的rtucs

[复制链接]

已领礼包: 23个

财富等级: 恭喜发财

发表于 2003-6-19 17:25:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×

  1. ;; 旋转UCS ,类似ExpressTools中的 rtucs, 因为要让R14用户使用,故只使用了command.
  2. ;; 临时写的,没有仔细测试,如发现问题请 email : [email]lkcadway@21cn.com[/email]

  3. ;; add "F " option  : exit and planview
  4. ;; 2003/06/20


  5. ;; 系统要求: AutoCAD R14~2004
  6. ;; 专业    : 任意 , 对经常使用UCS的人更有用些.
  7. ;; written by e2002    2003/06/19

  8. (defun C:lkpt:UCS:Rotate ( /
  9.                            lkpt:UCS:Rotate:err
  10.                           
  11.                            oldvar1 oldvar2 oldvar3 olderr
  12.                            bLoop bDirection sAxis rAngle
  13.                            sDirection sKey sAngle rAngle-in
  14.                          )

  15.   (defun lkpt:UCS:Rotate:err (sErrMsg)
  16.     (if        (/= sErrMsg "Function cancelled")
  17.       (princ (strcat "\nerror : " sErrMsg))
  18.     )
  19.     (command "_.ucs" "_d" "$_lkpt_UCS_Rotate_Save")
  20.     (setvar "CMDECHO" oldvar1)
  21.     (setvar "DIMZIN" oldvar2)
  22.     (setvar "UCSICON" oldvar3)
  23.     (setq *error* olderr)
  24.     (princ)
  25.   )
  26.    
  27.   (setq oldvar1 (getvar "CMDECHO")
  28.         oldvar2 (getvar "DIMZIN")
  29.         oldvar3 (getvar "UCSICON")
  30.         olderr  *error*
  31.         *error* lkpt:UCS:Rotate:err
  32.         bLoop T
  33.         bDirection T
  34.         sDirection "逆时针"
  35.         sAxis "Z"
  36.         rAngle 15.0
  37.   )
  38.   (setvar "CMDECHO" 0)
  39.   (setvar "DIMZIN" 0)
  40.   (if (/= oldvar3 3) (setvar "UCSICON" 3))
  41.   (command "_.ucs" "_s" "$_lkpt_UCS_Rotate_Save")
  42.   (while bLoop
  43.     (princ "\n当前设定: 转动角度 : ") (princ rAngle)
  44.     (princ "   转动方向 : ") (princ sDirection)
  45.     (princ "    旋转轴  : ") (princ sAxis)
  46.     (if bDirection
  47.       (setq sDirection "顺时针")
  48.       (setq sDirection "逆时针")
  49.     )
  50.     (initget "E W R A S D F")
  51.     (setq sKey (getkword (strcat "\n按"Enter"开始转动UCS或设置[退出(Exit)/to Wcs/Restore/转角(A)/换转动轴(S)/" sDirection "(D))/exit and plan view(F)]  :")))
  52.     (cond
  53.       ( (null sKey) (command "_.ucs" "_n" sAxis rAngle) )
  54.       ( (= sKey "E") (setq bLoop nil) )
  55.       ( (= sKey "S")
  56.         (cond
  57.           ( (= sAxis "Z") (setq sAxis "X") )
  58.           ( (= sAxis "X") (setq sAxis "Y") )
  59.           ( (= sAxis "Y") (setq sAxis "Z") )
  60.         )
  61.       )
  62.       ( (= sKey "W") (command "_.ucs" "_w") )
  63.      ( (= sKey "F") (setq bLoop nil) (command "_.plan" "_c") )
  64.       ( (= sKey "R")
  65.         (command "_.ucs" "_r" "$_lkpt_UCS_Rotate_Save")
  66.       )
  67.       ( (= sKey "A")
  68.         (setq sAngle (rtos rAngle 2 4)
  69.               rAngle-in (getangle (strcat "\n指定转角[5/10/15/20/30/60/90/180] <" sAngle ">: "))
  70.         )
  71.         (if rAngle-in
  72.           (setq rAngle (abs (/ (* rAngle-in 180.0) PI)))
  73.         )
  74.         (if (> rAngle 180.0)
  75.           (setq rAngle (- rAngle 180.0))
  76.         )
  77.       )
  78.       ( (= sKey "D")
  79.         (setq bDirection (not bDirection)
  80.               rAngle (- 0 rAngle)
  81.         )
  82.       )
  83.     );end cond
  84.   );end while
  85.   (command "_.ucs" "_d" "$_lkpt_UCS_Rotate_Save")
  86.   (setvar "CMDECHO" oldvar1)
  87.   (setvar "DIMZIN" oldvar2)
  88.   (setvar "UCSICON" oldvar3)
  89.   (setq *error* olderr)
  90.   (princ)
  91. );end defun C:lkpt:UCS:Rotate
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-6-20 22:13:28 | 显示全部楼层
直接ucs不是更好
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-6-21 00:26:47 | 显示全部楼层
旋转ucs要这么复杂吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 23个

财富等级: 恭喜发财

 楼主| 发表于 2003-6-21 10:13:23 | 显示全部楼层
如果没有用处,我会写吗?hehe...
我现在在赶的图就是这样的,ucs不厌其烦,一直使用ExpressTools的rtucs,最后觉得rtucs每次要esc才能退出,且不时发生一些OSNAP设置被他弄没有的错误,干脆就自己写一个类似的.

ucs显然没这个方便,特别是在图中有多个特定角度拼接的建筑物时,(当然我也同时使用"UCS II"工具栏中的UCS下拉列表框).

有人可能会说: 用UCS by object嘛,不是很快?
实际上是很快,不过由于对象的不同属性,结果转成的UCS的X,,Y时常与所希望的恰好相反.

另 :  昨天晚上新加 F选项 : 退出并planiew the UCS
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-6-21 10:48:12 | 显示全部楼层
好!我明白了,这对于建模来说真是太好了。还有就是目前那个“F”选项好像没有加上去嘛。能否将程序再贴一次。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 23个

财富等级: 恭喜发财

 楼主| 发表于 2003-6-21 12:00:57 | 显示全部楼层
我直接改一下吧...

这样的工具你不遇到具体工作时想不到需要去编写,这回实在是赶得要命,没办法,不写一个,画图太慢来不及
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-6-28 11:33:33 | 显示全部楼层
咱们讨论一下怎么更快.
我的方法:定义快捷键,比如ctrl+1,ctrl+2.. autohook,mnu,等都可以.
把你的几个特定角度定义进去.肯定比你的快.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-26 11:14 , Processed in 0.179989 second(s), 44 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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