明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 7489|回复: 14

求记忆拉伸(STRETCH)

  [复制链接]
发表于 2012-8-9 19:45 | 显示全部楼层 |阅读模式
各位大侠,搜索论坛查到了记忆MOVE,记忆SCALE,能不能实现记忆拉伸呢?
即:第一次选中目标拉伸一个距离,第二次选中不同的目标也拉伸相同的距离,只求正交,不需要考虑别的角度。
谢谢!

点评

能不能分享一下你搜集的“记忆SCALE”程序呢?论坛里找了半天没找到?  发表于 2012-10-18 16:27
发表于 2017-9-12 22:14 | 显示全部楼层
楼、5楼的都不错
发表于 2012-8-9 20:01 | 显示全部楼层
本帖最后由 kinglzk2000 于 2012-8-9 20:10 编辑

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

帮顶!

发表于 2012-8-9 20:38 | 显示全部楼层
本帖最后由 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)
     )
   )
)
发表于 2012-8-10 08:43 | 显示全部楼层
和原拉伸还是有差异
发表于 2012-9-24 08:32 | 显示全部楼层
(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)
)
借花献佛,赠人玫瑰

点评

很好!  发表于 2013-3-15 10:50
 楼主| 发表于 2012-10-18 20:45 | 显示全部楼层
http://bbs.mjtd.com/thread-85492-1-1.html
发表于 2012-12-30 19:09 | 显示全部楼层
5楼的不错,挺好用的
发表于 2013-1-24 15:17 | 显示全部楼层
3楼的可以,不错。
发表于 2013-6-9 00:09 | 显示全部楼层
;;借定距移动改的。。。。。。。
;;
;;
(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))
发表于 2013-10-6 17:28 | 显示全部楼层
3楼、5楼的都不错,挺好用的!在这里感谢各位了!如果有机会也应该学习一下!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-27 17:13 , Processed in 0.342720 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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