求记忆拉伸(STRETCH)
各位大侠,搜索论坛查到了记忆MOVE,记忆SCALE,能不能实现记忆拉伸呢?即:第一次选中目标拉伸一个距离,第二次选中不同的目标也拉伸相同的距离,只求正交,不需要考虑别的角度。
谢谢! 楼、5楼的都不错 本帖最后由 kinglzk2000 于 2012-8-9 20:10 编辑
应该可以吧,
记得 SETVAR 里好像有一个用户变量,就像捕捉值之类的,可以设置自己的数据
把偏移值 存到那里面, 用时直接调出来,计算第二点的位置
----------------------------------------------------------------
不知是不是这个意思
帮顶!
本帖最后由 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)
)
)
)
和原拉伸还是有差异 (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)
)
借花献佛,赠人玫瑰 http://bbs.mjtd.com/thread-85492-1-1.html 5楼的不错,挺好用的 3楼的可以,不错。 ;;借定距移动改的。。。。。。。
;;
;;
(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)) 3楼、5楼的都不错,挺好用的!在这里感谢各位了!如果有机会也应该学习一下!
页:
[1]
2