明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3389|回复: 7

请教高手:如何让MOVE命令能像OFFSET一样有一个右键缺省选项

[复制链接]
发表于 2009-11-14 15:31:00 | 显示全部楼层 |阅读模式

各位高手:

重复移动相同距离时,总需要每次输入,为什么MOVE等一些命令没有一个和OFFSET一样的缺省选项呢,

LISP这么强大能否帮AUTODESK完善一下这些命令呢!!个人觉得很实用,请高手不防在此讨论一下!用什么方法

可以实现!期待哦!

发表于 2009-11-14 15:45:00 | 显示全部楼层
  1. (defun c:tt (/ ss p1 p2 ang)
  2.   (CMDLA0)
  3.   (SETQ DIST (UDIST 3 "" "距离<输入或鼠标直接量取>" DIST nil))
  4.   (princ "\n选择要移动的实体: ")
  5.   (if (and (setq ss (ssget))
  6.     (setq p1 (getpoint "\n基点: "))
  7.       )
  8.     (while (setq p2 (getpoint p1 "\n方向: "))
  9.       (if (null ang)
  10. (setq ang (angle p1 p2))
  11.       )
  12.       (setq p2 (polar p1 ang dist))
  13.       (command "move" ss "" p1 p2)
  14.       (setq p1 p2)
  15.     )
  16.   )
  17.   (CMDLA1)
  18. )
发表于 2009-11-14 15:54:00 | 显示全部楼层

这个autodesk不做也是没有办法做的,MOVE跟offset毕竟是不同的,MOVE可以360度的方向,但OFFSET应该是只有四个方向可以动的,

不过,如果只是上下左右的移动,用LISP语言当然也是可以做的,只要你保存好移动的距离即可

当然,里面还牵涉到方向问题,可能需要费一点事,但如果你懂一些LISP的话,是可以实现的.当然,别的语言也没有问题的.但LISP可能更简单,编辑器也容易获得.

发表于 2009-11-14 16:05:00 | 显示全部楼层

;;因为OFFSET需要的数据是矢量方向的概念,而MOVE是点的概念

(defun c:MM (/ ANG DIS SS P1 P2)
  (mapcar 'set '(ANG DIS) **MOVE_DAT**)
  (or ANG (setq ANG 0))
  (or DIS (setq DIS 100))
  (if (and (setq SS (ssget))
           (if (and (setq P1 (getpoint (strcat "\n指定基点 <" (ai_rtos DIS) ">: ")))
                    (or (setq P2 (getpoint P1 "\n指定第二个点: "))
                        (setq P2 T)
                    )
               )
             (if (= P2 T)
               (setq P2 nil)
               (setq **MOVE_DAT** (list (angle P1 P2) (distance P1 P2)))
             )
             (setq P1 '(0 0 0) P2 (polar P1 ANG DIS))
           )
           P2
      )
    (command "_.move" SS "" "_non" P1 "_non" P2)
  )
  (princ)
)

发表于 2009-11-16 09:29:00 | 显示全部楼层

综合楼上的说法,其实我倒觉得这个功能没有多大用处

我的看法如下:

1.有时候用捕捉就可以满足要求了

2.如果是模糊移动的话,也只需要点一下鼠标,和你点空格是一样的

3.你移动的实体都是一个值吗?如果是一个值的话,可以一起选择后,同时移动

4.如果这的需要输入数值的话,也不会是很长的数吧(就算是有小数,也不会有很多位)

 楼主| 发表于 2009-11-22 12:07:00 | 显示全部楼层

由于个人网络问题,无法及时看到和回复各位高手的热情回复:

发表这个话题是因为本人在工作当中经常会用到这样的功能,如果移动可以,那么拉伸也就可以了,其实拉伸用到这个功能更多一些,

我们老大审图时喜欢计较一些设计尺寸,他会让你把一切都完成的模具图外形再缩一点,或再加一点!我是做连接器模具设计的

如果单改动模具外形的话,一般的一张图要改两个视图,一套至少有四十张图需要改动,每次都输值,实在不爽!

刚刚有试了CAOYIN版主的程序:出现 “; 错误: no function definition: AI_RTOS”的提示!个人将其改为:

(defun c:MM (/ ANG DIS SS P1 P2)
  (mapcar 'set '(ANG DIS) **MOVE_DAT**)
  (or ANG (setq ANG 0))
  (or DIS (setq DIS 100))
  (if (and (setq SS (ssget))
           (if (and (setq P1 (getpoint (strcat "\n指定基点 <" (rtos DIS) ">: ")))
                    (or (setq P2 (getpoint P1 "\n指定第二个点: "))
                        (setq P2 T)
                    )
               )
             (if (= P2 T)
               (setq P2 nil)
               (setq **MOVE_DAT** (list (angle P1 P2) (distance P1 P2)))
             )
             (setq P1 '(0 0 0) P2 (polar P1 ANG DIS))
           )
           P2
      )
    (command "_.move" SS "" "_non" P1 "_non" P2)
  )
  (princ)
)
不知有没有改变CAOYIN版主的设计思路,程序可以运行,但有一个问题,只能按右键只能往X正方向移动缺省值!我想让它能在正交的四个方向移动,
最好能和MOVE一样的操作顺序,选择对象后可动态跟随鼠标定向移动,先指定基点后提示缺省值,按左键移动到选择点,按右键正交模式移动缺省值到右键方向!

因为不理解XYP1964大侠“(SETQ DIST (UDIST 3 "" "距离<输入或鼠标直接量取>" DIST nil))”这句的含义,我的CAD也无法运行这句,所以不知道
是否好用,还请帮忙解释一下!TKS!

 楼主| 发表于 2009-11-22 12:25:00 | 显示全部楼层

个人也编了一段土代码:

把MOVE换成STRETCH即是拉伸加强

(defun c:mm(/ p1)

(princ "***MOVE加***")

(sta)

(setvar 'orthomode 1)

(command "move" (ssget) "" (setq p1 (getpoint "\n指定位移基點: "))

  (progn

    (princ "\n[指定位移第二點或輸入距離<左鍵>/接受值(") (princ dis1) (princ ")<右鍵>")

  (if (= (car (grread)) 25)

        dis1

        (progn (setq z1 (getdist p1 "請點選或輸入值: ")) (setq dis1 z1))

    )

   )

)

(end)

(princ)

)

 

(defun c:di(/ di1 di2)

(princ "***DIST加強***")

(setvar 'cmdecho 1)

(setq di1 (getpoint "\n指定第一點: "))

(setq di2 (getpoint di1 "\n指定第二點: "))

(command "dist" di1 di2)

(setq dis1 (getvar 'distance))

(princ)

)

先用DI在其它视图上测量一下顺便把DIST值赋给MM,只需选择对象后按右键即可,补视图经常用到哦!如要输入值或移动到点需先左键后输值或左键左键!

不是很爽!不能把选择对象和鼠标动态起来!和不能自动判别用户想要的输值和缺省操作,哪位高手帮忙改动一下啊,谢谢啦!

发表于 2012-7-27 23:28:49 | 显示全部楼层
宝哥的帖子。看看。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 02:50 , Processed in 0.170531 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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