本帖最后由 llsheng_73 于 2013-11-9 14:42 编辑
 - (defun c:tt(/ s1 sstoes p1 p2 d);不知道能不能达到你的要求;
- (defun mymove(ss p p1 / ty q q1 s1);;参照by-xyp1964的xyp-ScaleEntity
- (setq ty(type ss)i -1
- q1(vlax-3D-point(trans p1 1 0))
- q(vlax-3D-point(trans p 1 0)))
- (cond((= ty 'ENAME)(vla-move(vlax-ename->vla-object ss)q q1))
- ((= ty 'PICKSET)
- (setq i -1)
- (while (setq s1 (ssname ss (setq i (1+ i))))
- (mymove s1 p p1)))
- ((= ty 'LIST)(foreach x ss(mymove x p p1))))
- );defun
- (defun SstoEs(ss / a en lst)
- (if ss(progn(setq a -1)
- (while(setq en(ssname ss(setq a(1+ a))))(setq lst (cons en lst)))))
- lst);defun
- (while(null ASSSDs)(progn (prompt "请选择要移动的对象:")(setq ASSSDs(ssget))))
- (setq s1(SstoEs ASSSDs))
- ;;;(command"'snap")(command pause);;;
- (while(null(setq p2(getpoint(setq p1(nth 1(grread 1 2 1))))"指定移动方向"))))
- (if(null(setq d(getreal"需要移动的距离<245.6953>")))(setq d 245.6953));;如果不需要改变距离,不要这一行,把下边的d换成245.6953就行
- (mymove s1 p1(polar p1(angle p1 p2) d))
- (setq ASSSDs nil);;;;不要这句它会在不选择图元运行的情况下一直默认上一次所选择对象
- (command"'snap" "OFF")
- (princ)
- )
|