puzb2001 发表于 2012-8-9 19:45:01

求记忆拉伸(STRETCH)

各位大侠,搜索论坛查到了记忆MOVE,记忆SCALE,能不能实现记忆拉伸呢?
即:第一次选中目标拉伸一个距离,第二次选中不同的目标也拉伸相同的距离,只求正交,不需要考虑别的角度。
谢谢!

yoyrtweq 发表于 2017-9-12 22:14:42

楼、5楼的都不错

kinglzk2000 发表于 2012-8-9 20:01:42

本帖最后由 kinglzk2000 于 2012-8-9 20:10 编辑

应该可以吧,
记得 SETVAR 里好像有一个用户变量,就像捕捉值之类的,可以设置自己的数据
把偏移值 存到那里面, 用时直接调出来,计算第二点的位置
----------------------------------------------------------------
不知是不是这个意思

帮顶!

kwok 发表于 2012-8-9 20:38:20

本帖最后由 kwok 于 2012-8-9 20:49 编辑

这是论坛里找到的,不知合不合你用:(其实把你找到的记忆移动改一下,同样可以做记忆拉伸)
(defun c:ss (/ s_dis)
(setvar "orthomode" 1)
   (command ".STRETCH" (ssget) "")
   (command (setq BasicPoint (getpoint "\n指定基点:")))
   (if (= nil s_dis_all)
   (progn
       (setq s_dis_all (getreal "\n输入拉伸距离:"))
       (command s_dis_all)
   )
   (progn
       (setq
s_dis (getreal
   (strcat "\n输入拉伸距离<" (rtos s_dis_all 2 4) ">:")
      )
       )
       (if (= nil s_dis)
(setq s_dis s_dis_all)
       )
       (command s_dis)
       (setq s_dis_all s_dis)
(setvar "orthomode" 0)
   )
   )
)

longer1000 发表于 2012-8-10 08:43:15

和原拉伸还是有差异

注册 发表于 2012-9-24 08:32:22

(defun c:jyls (/ s_disyd)
(princ "\n<<<欢迎使用记忆移动功能>>>")
(setvar "ORTHOMODE" 1)
(command ".STRETCH" (ssget) "")
(command (setq basicpoint (getpoint "\n指定基点:")))
(if (= nil s_dis_allyd)
    (progn
      (setq s_dis_allyd (getreal "\n输入移动距离:"))
      (command s_dis_allyd)
    )
    (progn
      (setq s_disyd (getreal (strcat "\n输入拉伸距离<" (rtos s_dis_allyd 2 4)
                                     ">:"
                           )
                  )
      )
      (if (= nil s_disyd)
      (setq s_disyd s_dis_allyd)
      )
      (command s_disyd)
      (setq s_dis_allyd s_disyd)
    )
)
(setvar "ORTHOMODE" 0)
(princ "\<<<记忆移动执行完毕!>>>")
(princ)
)
借花献佛,赠人玫瑰

puzb2001 发表于 2012-10-18 20:45:16

http://bbs.mjtd.com/thread-85492-1-1.html

石井鱼 发表于 2012-12-30 19:09:56

5楼的不错,挺好用的

Timnis 发表于 2013-1-24 15:17:13

3楼的可以,不错。

tangjunasd58 发表于 2013-6-9 00:09:28

;;借定距移动改的。。。。。。。
;;
;;
(defun c:N (/ ANG DIS SS P1 P2)
(mapcar 'set '(ANG DIS) **STRETCH_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 **STRETCH_DAT** (list (angle P1 P2) (distance P1 P2)))
             )
             (setq P1 '(0 0 0) P2 (polar P1 ANG DIS))
         )
         P2
      )
    (command "_.STRETCH" SS "" "_non" P1 "_non" P2)
)
(princ))

wg1478963 发表于 2013-10-6 17:28:19

3楼、5楼的都不错,挺好用的!在这里感谢各位了!如果有机会也应该学习一下!
页: [1] 2
查看完整版本: 求记忆拉伸(STRETCH)