明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: hhh454

带记忆功能的移动--【源代码】

    [复制链接]
发表于 2012-11-24 14:42 | 显示全部楼层
支持楼主,不错 学习一下
 楼主| 发表于 2012-11-24 14:49 | 显示全部楼层
bdboy 发表于 2012-11-24 10:32
不错 有记忆功能,但如果能改成随鼠标方向会好很多,比输入正负号方便多了

这个用的代码可能更复杂,我不会写了,希望高手帮忙
发表于 2012-11-24 14:57 | 显示全部楼层
以下是根据论坛的一个贴子思路改进的,移动记忆上次移动值鼠标定向。有高手帮忙再升级一下成S拉伸功能!
  1. (defun c:m (/ ss p1 p2 p3 et1 pt p4)
  2.   (if (not md1)
  3.      (setq md1 0.2)
  4.    )   

  5.   (if (setq ss (ssget)
  6.       p1 (getpoint "\n指定基点:")
  7.       )
  8.    
  9.      (progn
  10.        (command "point" p1)
  11.        (setq ss (ssadd (setq et1 (entlast)) ss))

  12.        (princ "\n指定第二点:<")(princ md1)(princ "> ")
  13.        (command "move" ss "" p1 pause)
  14.        (setq p3 (cadr (grread 1)))

  15. (cond
  16.   ((equal 0 (angle p1 p3) (* pi 0.25)) (setq ma1 0))
  17.   ((equal (* pi 0.5) (angle p1 p3) (* pi 0.25)) (setq ma1 (* pi 0.5)))
  18.   ((equal pi (angle p1 p3) (* pi 0.25)) (setq ma1 pi))
  19.   ((equal (* pi 1.5) (angle p1 p3) (* pi 0.25)) (setq ma1 (* pi 1.5)))
  20. )

  21.        (setq p2 (polar p1 ma1 md1))

  22.       
  23.       (setvar "osmode" 0)
  24.       (setq pt (trans(cdr (assoc 10 (entget et1))) 0 1))
  25.       (setq p4 (list (- (car pt) (car p1)) (- (cadr pt) (cadr p1)) 0))
  26.       (if (equal p1 p4)(command "move" ss "" pt p2))
  27.       (setq pt (trans(cdr (assoc 10 (entget et1))) 0 1))
  28.       (setq md1 (distance p1 pt) ma1 (angle p1 pt))
  29.        (entdel et1)
  30.       (princ "\n移动: ")(princ md1)(princ)
  31.       
  32.       )
  33.     )
  34.     (princ)
  35. )


  36. (defun *error* (msg)
  37. (if (/= et1 nil)(entdel et1))  ;M命令按ESC时删除点
  38.   (princ " ")
  39.   (princ)
  40. )

点评

好多的代码,看来我还要学习的时间很长,坚持  发表于 2012-11-26 11:47
发表于 2012-11-24 19:05 | 显示全部楼层
  1. (defun c:jyyd (/ s_disyd)
  2.   (princ "\n<<<欢迎使用记忆移动功能>>>")
  3.   (setvar "ORTHOMODE" 1)
  4.   (command ".MOVE" (ssget) "")
  5.   (command (setq basicpoint (getpoint "\n指定基点:")))
  6.   (if (= nil s_dis_allyd)
  7.     (progn
  8.       (setq s_dis_allyd (getreal "\n输入移动距离:"))
  9.       (command s_dis_allyd)
  10.     )
  11.     (progn
  12.       (setq s_disyd (getreal (strcat "\n输入移动距离<" (rtos s_dis_allyd 2 4)
  13.                                      ">:"
  14.                              )
  15.                     )
  16.       )
  17.       (if (= nil s_disyd)
  18.         (setq s_disyd s_dis_allyd)
  19.       )
  20.       (command s_disyd)
  21.       (setq s_dis_allyd s_disyd)
  22.     )
  23.   )
  24.   (setvar "ORTHOMODE" 0)
  25.   (princ "\<<<记忆移动执行完毕!>>>")
  26.   (princ)
  27. )

点评

很好的判断代码,学习了。  发表于 2012-11-26 11:46
发表于 2012-11-27 20:25 | 显示全部楼层
海盗曹 发表于 2012-11-24 19:05

取之明经,用之明经~
发表于 2013-1-19 23:51 | 显示全部楼层
本帖最后由 zzc83 于 2013-1-19 23:54 编辑

这个不错,很有用,但是移动时不能捕捉点,能不能加上啊?
发表于 2013-1-20 00:19 | 显示全部楼层
还有个带记忆功能的复制功能
发表于 2013-4-13 18:16 | 显示全部楼层
如果改成这样的方式就好了。

本帖子中包含更多资源

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

x
发表于 2013-11-17 18:09 | 显示全部楼层
主贴的X和Y还要分命令,比较麻烦的,后面的都不错
发表于 2013-11-19 16:41 | 显示全部楼层
不错,顶顶!!!!!!!!!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-8 06:46 , Processed in 0.272061 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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