找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 981|回复: 4

[分享]:我的MOVE命令

[复制链接]
发表于 2007-4-10 09:35:00 | 显示全部楼层 |阅读模式

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

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

×
;定向移动
(defun c:mx () (yd_zx "x"))
(defun c:my () (yd_zx "y"))
(defun c:mz () (yd_zx "z"))
(defun c:mxy () (yd_zx "xy"))
(defun c:mxz () (yd_zx "xz"))
(defun c:myz () (yd_zx "yz"))
(defun c:yd (/ yd_fs0);移动
  (if (or (= yd_fs nil) (eq yd_fs ""))(setq yd_fs "xyz"))
  (if (= yd_x nil)(setq yd_x 0))
  (if (= yd_y nil)(setq yd_y 0))
  (if (= yd_z nil)(setq yd_z 0))
  (princ "\nx=")(princ yd_x)(princ ", y=")(princ yd_y)(princ ", z=")(princ yd_z)(princ ";")
  (princ "\n请选择方式:x,y,z,xy,xz,yz,xyz:(")(princ yd_fs)(princ ")")
  (setq yd_fs0 (getstring));定义方式
  (if (eq yd_fs0 "")
    (setq yd_fs0 "xyz")
    (setq yd_fs yd_fs0))
  (yd_zx yd_fs)
  )
(defun yd_zx (yd_fs / pt0 pt1 pt2 n)
  (setq yd_dx (ssget));选择对象
  (princ "\nx=")(princ yd_x)(princ ", y=")(princ yd_y)(princ ", z=")(princ yd_z)(princ ";")
  (princ "\n移动方式(")(princ yd_fs)(princ ")")
  (setq pt1 (getpoint "\n请选择基点(空格按位移移动):"))
  (if (/= pt1 nil)
  (progn
    (setq pt2 (getpoint pt1 "\n请指定位移的第二点:"))
    (setq yd_x (- (nth 0 pt2) (nth 0 pt1)))
    (setq yd_y (- (nth 1 pt2) (nth 1 pt1)))
    (setq yd_z (- (nth 2 pt2) (nth 2 pt1)))
    ))
  (cond
    ((eq yd_fs "x")
     (setq yd_y 0 yd_z 0))
    ((eq yd_fs "y")
     (setq yd_x 0 yd_z 0))
    ((eq yd_fs "z")
     (setq yd_x 0 yd_y 0))
    ((eq yd_fs "xy")
     (setq yd_z 0))
    ((eq yd_fs "xz")
     (setq yd_y 0))
    ((eq yd_fs "yz")
     (setq yd_x 0)))
  (setq pt0 (list yd_x yd_y yd_z))
  (command "move" yd_dx "" "0,0,0" pt0)
  (princ "\nx=")(princ yd_x)(princ ", y=")(princ yd_y)(princ ", z=")(princ yd_z)(princ ";")
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2007-4-10 18:33:04 | 显示全部楼层
支持下!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-4-23 17:17:12 | 显示全部楼层
将1楼的功能整合后,或许更好用:

  1. ;;;================================================
  2. ;;;功能:定向移动(仿MOVE命令)
  3. ;;;日期:zml84 于 2007-04-23
  4. (defun c:tt (/ tmp pt1 pt2 OS_OLD CMD_OLD)
  5.     (if        (= yd_fs nil)
  6.         (setq yd_fs '("xyz" 0 0 0))
  7.     )
  8.     (if        (setq ss (ssget))
  9.         (progn
  10.             (while (progn (princ "\n★当前模式:")
  11.                           (princ yd_fs)
  12.                           (initget "C D")
  13.                           (= (setq pt1
  14.                                       (getpoint
  15.                                           "\n指定基点或 [模式(C)/位移(D)] <位移>:"
  16.                                       )
  17.                              )
  18.                              "C"
  19.                           )
  20.                    )
  21.                 (initget "X Y Z XY XZ YZ XYZ")
  22.                 (if (setq tmp
  23.                              (getkword
  24.                                  "\n请输入过滤选项 [X Y Z XY XZ YZ XYZ] :"
  25.                              )
  26.                     )
  27.                     (setq yd_fs (cons tmp (cdr yd_fs)))
  28.                 )
  29.             )
  30.             (if        (or (= pt1 nil) (= pt1 "D"))
  31.                 (if (setq pt1 '(0 0 0)
  32.                           pt2 (getpoint
  33.                                   pt1
  34.                                   (strcat "指定位移 <"
  35.                                           (vl-princ-to-string (cdr yd_fs))
  36.                                           ">: "
  37.                                   )
  38.                               )
  39.                     )
  40.                     ()
  41.                     (setq pt2 (cdr yd_fs))
  42.                 )
  43.                 (if (setq pt2
  44.                              (getpoint
  45.                                  pt1
  46.                                  "指定第二个点或 <使用第一个点作为位移>:"
  47.                              )
  48.                     )
  49.                     (setq pt2 (mapcar '- pt2 pt1)
  50.                           pt1 '(0 0 0)
  51.                     )
  52.                     (setq pt2 pt1
  53.                           pt1 '(0 0 0)
  54.                     )
  55.                 )
  56.             )
  57.             (setq os_old  (getvar "OSMODE")
  58.                   cmd_old (getvar "CMDECHO")
  59.             )
  60.             (setvar "OSMODE" 0)
  61.             (setvar "CMDECHO" 0)
  62.             (if        (= (car yd_fs) "XYZ")
  63.                 (command "._move" ss "" pt1 pt2)
  64.                 (command "._move"
  65.                          ss
  66.                          ""
  67.                          pt1
  68.                          (strcat "." (car yd_fs))
  69.                          pt2
  70.                          pt1
  71.                 )
  72.             )
  73.             (setvar "OSMODE" os_old)
  74.             (setvar "CMDECHO" cmd_old)
  75.             (setq yd_fs (list (car yd_fs) pt2))
  76.         )
  77.     )
  78.     (princ)
  79. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 13:48 , Processed in 0.400609 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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